首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模板方法模式命名约定

模板方法模式命名约定
EN

Stack Overflow用户
提问于 2013-01-28 14:26:25
回答 3查看 2.4K关注 0票数 17

我有一个名为RenderableEntity的抽象类。

我有一个公共方法render(),它有一些围绕抽象受保护的render()方法的逻辑。我应该如何命名这个抽象的render()方法。有什么约定吗?doRender()makeRender()用于受保护的方法render()

代码语言:javascript
复制
public abstract class RenderableEntity extends Entity {

    private boolean visible;

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

编辑__:我知道这个片段不编译。我只是想知道如何命名这个抽象的方法,因为我不能有相同的名称和相同的参数的方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-28 14:40:17

首先:只有当这些方法被模板方法独占使用时,才考虑对这些方法进行特殊命名。此外,您应该注释这些方法,说明它们被模板方法使用,并且任何修改都应该考虑到这种用法。

在模板方法中组成可替换步骤的方法通常称为“钩子”方法。有时你会看到它们在结尾用“钩子”命名。

在您的示例中,您可能希望将其命名为renderHook(),但如果您能够获得它在模板方法render()中执行的任务的更具体的内容,则会更具有描述性。

我见过doXXX()的使用,虽然它主要是当有一对一的模板到挂钩的关系时。

一个可能的建议。对于模板方法stuff()

  • 如果stuff()主要是围绕单个钩子的简单控制逻辑,那么将钩子命名为doStuff() (在上面的示例中似乎就是这样)
  • 如果stuff()编排了几个钩子,请用Hook后缀独立命名它们,并且不要将它们命名为与模板相同的名称(在本例中,不应该有stuffHook()方法。
票数 17
EN

Stack Overflow用户

发布于 2013-01-28 14:33:40

关于这件事没有任何约定。但我更希望看到更有意义的名字。例如,forceRenderrenderNowrenderImmideately或类似的东西,它们告诉我们,它呈现的方式与render有所不同。

票数 1
EN

Stack Overflow用户

发布于 2013-01-28 14:35:27

模板方法模式在命名约定方面没有任何这样的指南。但一定要给出适当的名称,这样才能清楚地解释方法的意图维护的未来就更容易了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14564162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档