The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
你是否有私有的静态方法,可以帮助你将算法拆分成更小的部分?我有。每次我编写一个新方法时,我意识到它可以成为一个新的类。当然,我并不会将它们都变成类,但这应该是目标。私有的静态方法是不可重用的,而类是可重用的——这是它们之间的主要区别,也是至关重要的。
以下是一个简单类的示例:
有一个明显的代码重复,对吧?解决它最简单的方法是引入一个私有的静态方法:
看起来好多了。但如果我们还有另一个需要完全相同功能的类,会发生什么呢?我们将不得不复制并粘贴这个私有静态方法encoded()
到另一个类中,对吗?
更好的选择是引入一个新的类Encoded
,它实现了我们想要共享的功能:
And then:
class Token {
private String key;
private String secret;
String encoded() {
return "key="
+ new Encoded(key)
+ "&secret="
+ new Encoded(secret);
}
}
现在这个功能是可重用的,并且可测试的。我们可以轻松地在许多其他地方使用这个Encoded
类,并为其创建一个单元测试。之前的私有静态方法我们无法做到这一点。
明白了吗?我自己已经找到了一个经验法则,就是每个私有静态方法都是一个新类的完美候选。这就是为什么在EO中根本没有这些方法。
顺便说一下,公共静态方法是另一回事。它们也是有问题的,但原因不同。
附言:现在我认为本文中的原因适用于所有私有方法,而不仅仅是静态方法。
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 13:59