公共方法中的私有方法

时间:2019-04-26 04:27:56

标签: class coding-style refactoring structure code-cleanup

凌晨5点患有失眠症,因此请阅读《清洁守则》(罗伯特·马丁(Robert Martin))。本书经常被视为有关编码结构的圣经,因此我很感兴趣地看到他在类中对方法/函数进行排序时建议使用“报纸”类比。该书建议您先按公共方法排序,然后按相关的私有方法排序,再按第二个公共方法,再按相关的私有方法(依此类推)。因此,类结构可能如下所示:

public func openAccount()  {
    completeNameDetails()
    completeAddressDetails()
}

private func completeNameDetails() {
    ...
}

private func completeAddressDetails() {
    ...
}

public func closeAccount() {
    deleteNameDetails()
    deleteAddressDetails()
}

private func deleteNameDetails() {
    ...
}

private func deleteAddressDetails() {
    ...
}

从今天早上开始搜寻stackoverflow以来,似乎对该方法有很强的支持:

Best practice: ordering of public/protected/private within the class definition?

但是,我对此建议的问题是,该类的公共方法分散在整个类中。将所有的公共方法放在类的顶部,然后将私有的放在下面,这会更好吗?当然,这种观点也得到了这个社区的大力支持:

Order of items in classes: Fields, Properties, Constructors, Methods

因此,总而言之,应该将公共方法全部分组到私有方法之上,还是应该在公共方法后面加上它们各自的私有方法(这意味着公共方法和私有方法是混合的)?

1 个答案:

答案 0 :(得分:1)

我也已经阅读了清洁代码,而阅读本书的价值确实是巨大的。但是在某些情况下,我不同意。马丁先生描述的降压功能方法就是其中之一。

理想情况下,一个类只能有1到3个公共方法,否则很可能会做太多事情。我更喜欢将公共方法组合在一起。当您确实拥有很小的类时,Martin先生建议的方法可以很好地工作,但是在现实的软件世界中,您将拥有带有一个或两个以上公共方法的类。

对于我自己,当我看一个类时,公共方法会告诉我我想使用它们的功能。公平的是,一个好的IDE仍会在使用时告诉您,但是如果我确实想研究该类,则更容易阅读和熟悉它。好的IDE将使您足够轻松地浏览较低级别的私有功能。

我与干净代码的另一个不同之处是接口的“ I”前缀。我希望我的接口以“ I”作为前缀。但是,这是一个单独的讨论。

最重要的要点是保持一致。您选择命名的策略与保持一致性无关紧要。如果您对团队使用不同的策略,那么每个人都很难理解。作为一个团队,选择一种策略并坚持下去。