很多时候我不确定某个特定方法是否应该是私有的.例如,我正在建立一个班级,负责生成报告.这个类有一个buildReport方法和几个收集buildReport必要数据的方法.
// single public method
// uses a set of helper methods
public buildReport()
// helper methods
private avgSurveyTime()
private fetchVendors()
private fetchSendCounts()
private ...
Run Code Online (Sandbox Code Playgroud)
我在争论是否应该公开这些辅助方法.我此刻打算在外面打电话的唯一方法是buildReport().但是,仅获取供应商列表fetchVendors()等可能会很有用.
我看到两种思想流派:你总能尽可能少地暴露出来.(在这种情况下,我的许多类只有一个公共方法)或者你可以公开所有可能对类的用户有用的东西.
是否有一个很好的经验法则用于决定何时应该公开/私有方法?
Chr*_*isF 94
我遵循的唯一规则是尽可能少公开.
以这种方式看待它.你可以随时公开一些东西 - 它不会破坏任何现有的代码.试图制作一些公开的私密内容最终可能会破坏许多现有代码.
如果有人想从您的课程中获得更多功能,那么他们可以提出请求并且您可以公开他们需要的内容.有可能他们想要的东西与你已经拥有的东西略有不同,所以你需要一个新的界面.
Ben*_*mes 16
一个有用的指导技巧是在开始实现之前为您的类编写一个接口.然后在实现时,告诉自己不在接口中的方法应该是私有的,或者根本不在该类中.
如果您在设计类的合同时不知道需要的方法,那么它可能不应该是其公共接口的一部分.
你应该只向外界揭示外面世界真正需要的东西.通常最好在需要时为该类消费者添加功能,而不是最初.如今,智慧是避免预先设计.(见YAGNI)
拥有公共方法也可以接受,这些公共方法也被类中的其他功能所使用.但是,这应该被认为是一种轻微的难闻气味.这可能表明你的班级正在尝试做太多事情.
我的猜测是让你的课程保持原样.然后,当外界需要这些其他更小的方法时,请考虑是否应该分类.如果每个类的目的是生成一个报告,那么您不应该从这个对象公开这些方法.相反,将"较小"方法放入公共帮助程序类中.这样,外部世界可以使用它们,而不会从根本上改变现有报告类的性质.简而言之:
不要只是因为你认为它可能会有所帮助.如果/何时需要其他功能,请重新考虑整体设计以适应新要求.
公共方法和私有方法是非常不同的。在公开方法之前要小心。
私有方法没有这些限制。
| 归档时间: |
|
| 查看次数: |
1617 次 |
| 最近记录: |