网站建设标签,wordpress与ftp,reeyee网站建设,网站文字公告代码私有方法与静态私有方法您是否有私有的静态方法来帮助您将算法分解为更小的部分#xff1f; 我做。 每当我编写一个新方法时#xff0c;我就会意识到它可以是一个新类。 当然#xff0c;我不会从所有课程中选修课程#xff0c;但这必须是目标。 私有静态方法不可重用#… 私有方法与静态私有方法 您是否有私有的静态方法来帮助您将算法分解为更小的部分 我做。 每当我编写一个新方法时我就会意识到它可以是一个新类。 当然我不会从所有课程中选修课程但这必须是目标。 私有静态方法不可重用而类则可重用这是它们之间的主要区别并且至关重要。 大师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;Overridepublic 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私有方法与静态私有方法