命名方法 - 当* not *设置属性时使用set()?

时间:2010-04-27 15:23:27

标签: oop naming-conventions

setX()方法名称是否仅适用于设置类属性X?

例如,我有一个类,其中输出是一个html表的字符串。在你可以调用getTable之前,你必须调用setTable(),它只查看其他属性并决定如何构造表。它实际上并不直接设置任何类属性 - 只会导致设置属性。当它被调用时,该类将构造strHtmlTable,但是你不能指定它。

因此,调用它setTable会破坏get和set属性接口的约定。

这种方法是否有另一种命名约定?

编辑:在这个特定的类中,在类知道构造表所需的一切之前,必须至少调用两个(总共8个可选的)其他方法。我选择将数据集作为单独的方法,而不是使用8个可选参数来混淆__construct(),我永远不会记住它的顺序。

2 个答案:

答案 0 :(得分:1)

我建议generateTable()而不是setTable()。这提供了一种情况,即方法的名称清楚地表明它的作用。

但我可能仍会使用setTable()方法来实际设置属性。理想情况下,您可以打开设置先前定义的表格的可能性,以获得更大的灵活性。

答案 1 :(得分:0)

是的,setX()主要用于设置字段X,但setX()除了直接分配给字段外,还可能需要运行一些额外的代码。将其用于其他事情可能会误导其他开发人员。

我肯定会建议不要使用公共的setTable(),并且可以说setTable()可以省略,或者只是一个未使用的私有方法,具体取决于你的要求。

听起来生成表的活动更像是对象上其他属性的视图,因此您可以考虑将其移动到对象上的私有方法,如generateHtmlTable()。这可以在构造期间(以及对象的更新时)完成,这样任何对getTable()的后续调用都将返回相应的HTML。