【问题标题】:Java: Ordering of methods within a class [closed]Java:类中方法的排序[关闭]
【发布时间】:2016-09-21 15:45:53
【问题描述】:

我一直在四处寻找是否有这样的约定,但我没有看到。我想看看整个社区是怎么做的。

当您在 Java 中有任何类时,您是否以任何特定的方式组织方法?有没有这样的约定。

例如,也许先列出公共静态成员,然后是公共成员,然后是私有成员?也许按字母顺序?可能是按照调用方法的顺序,即首先初始化方法,其次是worker/helper方法,最后是清理方法?

你做什么,为什么?有建议的方法吗?

【问题讨论】:

  • 这个问题是基于意见的,因为没有官方方法可以做到这一点。您可以阅读以下geosoft.no/development/javastyle.html
  • 这取决于您和您的团队的判断。只需确保您在程序代码中维护cohesion
  • 由于您的 IDE 将帮助您查找和导航所有成员,因此无需订购它们。
  • 其他人已正确建议您。如果您仍然不满意方法的顺序,为什么不按字母顺序排序?
  • 看到这些答案,+100 票stackoverflow.com/q/4668218/4930344

标签: java


【解决方案1】:

没有这样的约定来定义。但最好先放置静态方法,然后再放置非静态方法。

【讨论】:

  • 你能解释一下为什么你认为“静态方法优先”是一个很好的做法吗?
  • 这只是为了代码的可读性......因为你可以很容易地理解并且重新设计变得很容易。仅此而已
  • 在这种情况下,您的意思是“我认为”,而不是“它是”。如果静态方法始终位于底部(我认为更好的做法,因为它们不是类的成员 - 它们只是碰巧发生的方法,那么理解或重构并不难可以访问类实例的私有成员)。
【解决方案2】:

Google's Java Style Guide 中的相关部分说:

类成员的排序可以对学习能力产生很大的影响,但是没有一个正确的方法可以做到这一点。不同的类可能对它们的成员进行不同的排序。

重要的是每个类都以某种逻辑顺序对其成员进行排序,如果被问到,它的维护者可以解释。例如,新方法不只是习惯性地添加到类的末尾,因为这会产生“按添加日期的时间顺序”排序,这不是逻辑排序。

显然,这只是一种风格指南,不应作为唯一选择;其他存在并且可能更适合您/您的团队的情况。

【讨论】:

    【解决方案3】:

    我用来划分公共方法和私有方法,通常,我将所有 getter 和 setter 放在类的底部。这是因为 getter 和 setter 是修改频率较低的方法,所以我不喜欢滚动所有页面来编辑其他通常更有用的方法。

    顺便说一句,我认为没有正式的方法来分组你的方法,你的变量也是一样的。

    所以我遵循的模式是这样的:

    public class MyClass{
    
    
       //variables
       private int number;
       private String name;
    
       ....
    
       //constructors
       public MyClass(){ ... }
    
       public MyClass(String name){ ... } 
    
    
    
       //public methods
       public methodOne(){ ... }
       public methodTwo(){ ... }
    
       //private methods
       private methodPrivOne(){ ... }
       private methodPrivTwo(){ ... }
    
    
       //getters and setters
       public void setName(String name){ ... }
       public String getName() { ... }
    }
    

    Herehere 你可以找到两个有用的答案来回答你的问题

    【讨论】:

    • 我觉得这种风格很常见。
    • 我认为这种风格是从 C++ 继承而来的,因为“private:”类似标签的约定。它在 Ruby 中也很普遍,因为它们做的事情与 C++ 相似。但是,如果您要在没有外部想法的情况下将 Java 视为一个全新的程序员,我认为(我的观点)这是没有意义的。想象一下,您有一些从某个公共方法调用的内部私有递归方法,它们将彼此远离分组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2011-06-07
    • 2013-10-17
    • 1970-01-01
    相关资源
    最近更新 更多