C++ 哪个代码更可读?
这不是一个困难的问题。我只想知道你认为这两个C++代码片段中哪一个更好(可读性与长度对锅炉板):< /P> 选项#1C++ 哪个代码更可读?,c++,readability,builder-pattern,C++,Readability,Builder Pattern,这不是一个困难的问题。我只想知道你认为这两个C++代码片段中哪一个更好(可读性与长度对锅炉板):< /P> 选项#1 Entity* square = Entity::Builder().positionX(0.0).positionY(0.0). controller(ctrl).representation(rep).build(); 选项2 Entity::Builder bld; bld.positionX(0.0).positionY(0.0).controller(ctrl
Entity* square = Entity::Builder().positionX(0.0).positionY(0.0).
controller(ctrl).representation(rep).build();
选项2
Entity::Builder bld;
bld.positionX(0.0).positionY(0.0).controller(ctrl).representation(rep);
Entity* square = bld.build();
我个人更喜欢第一种选择,但这可能是因为我是代码的作者,并且已经知道代码的作用(对于不知道代码的人来说,这可能会让人困惑)。我更喜欢它,因为它显示的焦点是实体
对象,而不是实体::生成器
对象(因为它比较短)。选项3
Entity* square = Entity::Builder()
.positionX(0.0)
.positionY(0.0)
.controller(ctrl)
.representation(rep)
.build();
选项#3
Entity* square = Entity::Builder()
.positionX(0.0)
.positionY(0.0)
.controller(ctrl)
.representation(rep)
.build();
为什么不
Entity*square=newsquare(0.0,0.0,ctrl,rep)代码>?这不是一个困难的问题,但也没有“正确”的答案,这违反了StackOverflow的指导原则。@James:这是方法链接。它的限制性比构造函数调用要小,在构造函数调用中,您可能不想提供所有参数。我不知道可读性——它们在我看来都是一样的——但第二个是创建一个多余的“bld”,这可能是个问题,也可能不是问题。@Oli:我知道,只是好奇为什么您需要它来处理(似乎是这样的)参数太少了。也许,方格
的内容比这里看到的要多。撤回异议。为什么不实体*square=新的square(0.0,0.0,ctrl,rep)代码>?这不是一个困难的问题,但也没有“正确”的答案,这违反了StackOverflow的指导原则。@James:这是方法链接。它的限制性比构造函数调用要小,在构造函数调用中,您可能不想提供所有参数。我不知道可读性——它们在我看来都是一样的——但第二个是创建一个多余的“bld”,这可能是个问题,也可能不是问题。@Oli:我知道,只是好奇为什么您需要它来处理(似乎是这样的)参数太少了。也许,方格
的内容比这里看到的要多。撤回反对意见。这也是一种选择,但我不喜欢这种对齐方式P我有时使用它,但大多数时候它让我想起旧的C代码。:)在这种情况下,最好提供适当的构造函数方法。它提高了可读性,并且不太容易出错。boost::python
广泛使用这种设计,而且工作起来非常灵活。这也是一种选择,但我不喜欢这种对齐方式P我有时使用它,但大多数时候它让我想起旧的C代码。:)在这种情况下,最好提供适当的构造函数方法。它提高了可读性,并且不太容易出错。boost::python
广泛使用这种设计,而且工作起来非常灵活。