C++ 哪个代码更可读?

C++ 哪个代码更可读?,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

这不是一个困难的问题。我只想知道你认为这两个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).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
广泛使用这种设计,而且工作起来非常灵活。