Class 公共方法中的私有方法

Class 公共方法中的私有方法,class,coding-style,refactoring,structure,code-cleanup,Class,Coding Style,Refactoring,Structure,Code Cleanup,早上5点失眠&所以读《清洁守则》(罗伯特·马丁著)。这本书经常被视为编码结构的圣经,因此我很感兴趣地看到,当涉及到类内方法/函数的排序时,他提出了“报纸”类比。这本书建议您按照第一个公共方法,然后是相关的私有方法,然后是第二个公共方法,然后是相关的私有方法(依此类推)对函数进行排序。因此,类结构可能如下所示: public func openAccount() { completeNameDetails() completeAddressDetails() } private

早上5点失眠&所以读《清洁守则》(罗伯特·马丁著)。这本书经常被视为编码结构的圣经,因此我很感兴趣地看到,当涉及到类内方法/函数的排序时,他提出了“报纸”类比。这本书建议您按照第一个公共方法,然后是相关的私有方法,然后是第二个公共方法,然后是相关的私有方法(依此类推)对函数进行排序。因此,类结构可能如下所示:

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

private func completeNameDetails() {
    ...
}

private func completeAddressDetails() {
    ...
}

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

private func deleteNameDetails() {
    ...
}

private func deleteAddressDetails() {
    ...
}
从今天早上开始,似乎有人强烈支持这种方法:

然而,我提出这个建议的问题是,课堂上的公共方法分散在整个课堂上。将所有公共方法放在类的顶部,然后将私有方法放在类的下面,不是更好吗。当然,这一观点也得到了社会各界的大力支持:


总之,公共方法应该在私有方法之上分组,还是应该在公共方法之后再加上各自的私有方法(这意味着公共方法和私有方法是混合的)

我也读过干净的代码,读这本书的价值确实是巨大的。不过,有些情况我并不同意。马丁先生所描述的降压函数法就是其中之一

理想情况下,一个类应该只有1到3个公共方法,否则很可能做得太多。我更喜欢将我的公共方法分组在一起。当你有非常小的类时,Martin先生建议的方法可以很好地工作,但在现实的软件世界中,你会有不止一个或两个公共方法的类

对我自己来说,当我查看一个类时,公共方法告诉我应该使用哪些功能。一个好的IDE在消费时仍然会告诉你,这是公平的,但是如果我真的想了解这个类,那么阅读和浏览它就更容易了。好的IDE可以让您轻松地浏览较低级别的私有函数

我对干净代码的另一个异议是接口的“I”前缀。我希望我的接口前面加上“I”。不过,这是一个单独的讨论


最重要的收获是始终如一。与一致性相比,您选择命名的策略的重要性要小得多。如果你对你的团队使用不同的策略,那么每个人都很难理解。作为一个团队,选择一种策略并坚持下去。

根据我的经验,组织类似“读报”这样的活动是有意义的。与团队和自身一起工作时,我认识到一种耗时的模式,即当有一个类首先包含所有
公共函数
,然后是
私有函数
。我的意思是在课堂上跳来跳去,找到一个私有方法,然后跳回到一个公共方法。尤其是当代码不熟悉时。现在,当这些方法通过报纸类比来组织时,上下文切换就更少了。另外,只要知道私有方法的位置,我就知道它在哪里使用。请记住标记接受的答案或自己提供答案来结束问题。另外,如果有什么我可以详细说明的,请告诉我。