我刚开始写一些新的类,然后发现我添加了很多严格不需要的方法参数。这是为了避免在某些方法调用特定的类中具有状态,而不是成为类的常规配置或依赖性,这是一种习惯。
这样做意味着许多没有参数的方法最终只能得到一,二或三。
我想听听您对这个折衷方案的看法,以及如何决定在何种情况下采取哪种方法?
由于在描述代码时,代码通常比英语更容易理解,因此我创建了一个包含两个变体的小知识点:https : //gist.github.com/JeroenDeDauw/6525656
我刚开始写一些新的类,然后发现我添加了很多严格不需要的方法参数。这是为了避免在某些方法调用特定的类中具有状态,而不是成为类的常规配置或依赖性,这是一种习惯。
这样做意味着许多没有参数的方法最终只能得到一,二或三。
我想听听您对这个折衷方案的看法,以及如何决定在何种情况下采取哪种方法?
由于在描述代码时,代码通常比英语更容易理解,因此我创建了一个包含两个变体的小知识点:https : //gist.github.com/JeroenDeDauw/6525656
Answers:
由于示例中唯一在外部可见的方法是updateTable
,所以我认为可以使用字段代替方法参数。
如果这是更通用的类(例如TableTools
)的一部分,我会将需要状态的辅助方法移到隐藏的内部类中。
伪代码示例:
class TableTools {
...
public void updateTable(currentTable, newTable) {
TableUpdater u = new TableUpdater(schemaModifier, currentTable, newTable);
u.removeRemovedFields();
u.addAddedFields();
}
private class TableUpdater { ... }
}
这样,您可以避免仅使用一种公共方法使用的字段。此外,从每次对updateTable的调用都使用其自己的TableUpdater副本以及TableUpdater实例变量的副本的意义上说,该代码是线程安全的。
使用字段可以使使用这些字段的方法具有多线程功能。
从可重用性和可维护性的角度来看,使用这样的字段仅比使用全局变量好一点,这里的重点是复杂的设置需要仔细而最新的文档,以了解哪些方法使用和/或破坏了哪些字段。使用参数时不需要做的事情。