Подтвердить что ты не робот

Шаблон шаблона шаблона - соглашения об именах

У меня есть этот абстрактный класс с именем RenderableEntity.

У меня есть открытый метод render(), который имеет некоторую логику, обернутую вокруг абстрактного защищенного метода render(). Как назвать этот абстрактный метод render(). Есть какая-то конвенция, например. doRender(), makeRender() для защищенного метода render()?

public abstract class RenderableEntity extends Entity {

    private boolean visible;

    public void render(){
        if(visible){
            render();
        }
    }
    protected abstract void render();
}

Изменить. Я знаю, что этот фрагмент не компилируется. Мне просто интересно, как назвать этот абстрактный метод, так как я не могу иметь методы с одинаковыми именами и теми же параметрами.

4b9b3361

Ответ 1

Во-первых: Учитывайте особое назначение имен для таких методов, если они предназначены исключительно для использования методом шаблона. Кроме того, вы должны прокомментировать эти методы, указав, что они используются методом шаблона, и любые изменения должны быть сделаны с учетом этого использования.

Методы, которые составляют сменные шаги в методе шаблона, часто называются методами "крюка". Иногда вы увидите их с именем "Hook" в конце.

В вашем примере вы можете называть его renderHook(), хотя, если вы можете более точно определить задачу, которую он выполняет в методе шаблона render(), это будет более описательным.

Я использовал doXXX(), хотя это в первую очередь, когда есть взаимно-однозначное соотношение между шаблонами.

Возможное предложение. Для метода шаблона stuff():

  • Если stuff() - это прежде всего простая логика управления вокруг одного крючка, назовите hook doStuff() (похоже, это пример вашего примера выше)

  • Если stuff() организует несколько перехватов, назовите их самостоятельно с помощью суффиксов Hook и не назовите ни одного из них таким же, как шаблон (в этом случае не должно быть метода stuffHook().

Ответ 2

Об этом нет никакого соглашения. Но я бы предпочел увидеть более значимое имя. Например. forceRender, renderNow, renderImmideately или что-то подобное, что говорит о том, что он делает что-то иначе, чем просто render.

Ответ 3

Шаблон метода шаблона не имеет такого правила для соглашения об именах. Но дайте соответствующее имя, чтобы он четко объяснил намерение метода и обслуживание того же самого в будущем.