Each Private Static Method Is a Candidate for a New Class

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

sixnines availability badge   GitHub stars