私有方法与静态私有方法_每个私有静态方法都是新类的候选人

私有方法与静态私有方法

您是否有私有的静态方法来帮助您将算法分解为更小的部分? 我做。 每当我编写一个新方法时,我就会意识到它可以是一个新类。 当然,我不会从所有课程中选修课程,但这必须是目标。 私有静态方法不可重用,而类则可重用,这是它们之间的主要区别,并且至关重要。

大师(2012),保罗·托马斯·安德森

这是一个简单类的示例:

class Token {
  private String key;
  private String secret;
  String encoded() {
    return "key="
      + URLEncoder.encode(key, "UTF-8")
      + "&secret="
      + URLEncoder.encode(secret, "UTF-8");
  }
}

有明显的代码重复,对吗? 解决该问题的最简单方法是引入私有静态方法:

class Token {
  private String key;
  private String secret;
  String encoded() {
    return "key="
      + Token.encoded(key)
      + "&secret="
      + Token.encoded(secret);
  }
  private static String encoded(String text) {
    return URLEncoder.encode(text, "UTF-8");
  }
}

现在看起来好多了。 但是,如果我们有另一个需要完全相同的功能的类会发生什么呢? 我们将不得不复制并粘贴此私有静态方法encoded() ,对吗?

更好的选择是引入一个新的Encoded类,该类实现了我们想要共享的功能:

class Encoded {
  private final String raw;
  @Override
  public String toString() {
    return URLEncoder.encode(this.raw, "UTF-8");
  }
}

然后:

class Token {
  private String key;
  private String secret;
  String encoded() {
    return "key="
      + new Encoded(key)
      + "&secret="
      + new Encoded(secret);
  }
}

现在,此功能是1)可重用的,2)可测试的。 我们可以在许多其他地方轻松使用Encoded这个类,并且可以为其创建单元测试。 以前,我们无法使用私有静态方法来做到这一点。

明白了吗? 我已经为自己确定的经验法则是, 每个私有静态方法都是新类的理想选择。 这就是为什么我们在EO中根本没有它们的原因。

顺便说一下, 公共静态方法是另一回事。 它们也是邪恶的,但是出于不同的原因

您可能还会发现这些相关的帖子很有趣: 对象行为一定不可配置对象可以成为朋友吗? ; 只有一个主要的建设者 ;

翻译自: https://www.javacodegeeks.com/2017/02/private-static-method-candidate-new-class.html

私有方法与静态私有方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值