编码样式,变量名称

fas*_*ava 1 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
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*aho 9

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

getSomeActive("foo")
getSomePassive("foo")
Run Code Online (Sandbox Code Playgroud)

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

getSome("foo", FetchStyle.ACTIVE)
getSome("foo", FetchStyle.PASSIVE)
Run Code Online (Sandbox Code Playgroud)

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

参考:Bob叔叔的清洁代码中提示#12