编码样式,变量名称

时间:2011-02-20 03:40:57

标签: language-agnostic variables coding-style

我有一个方法,例如getSome(String param, boolean active)。当我调用这个方法时,我创建了一个变量,如下所示。

boolean active = true;

getFoo("some", active);     // To get active foo

getFoo("some", !active);     // To get inactive foo

是否值得创建额外的变量或只需调用getFoo("some", true);

2 个答案:

答案 0 :(得分:9)

如果您有布尔参数,则应考虑使用该函数的两个变体。在参数中使用布尔值无助于用户读取代码。为了避免重复,实际的实现可能包含一个带有布尔参数的函数,但它可以从API的用户隐藏。

getSomeActive("foo")
getSomePassive("foo")

另一种选择是两个使用有意义的标志,例如枚举而不是布尔值。

getSome("foo", FetchStyle.ACTIVE)
getSome("foo", FetchStyle.PASSIVE)

并回答你的问题:为了清晰起见,必须声明一个额外的变量只是告诉我们接口中存在问题。如果您无法更改界面或将其包装,则变量是记录意图的一种方法。不幸的是,其他人可能只是重构代码并在以后删除变量。

参考:Bob叔叔的Tip #12 in Clean Code

答案 1 :(得分:2)

这取决于,当别人读你的代码时,他们是否会想“为什么他/她在那里实现了?”。如果实现的原因很明显那么你应该把它放在那里,否则,创建一个带有描述性名称的变量,这样他们就可以搞清楚了。