Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java方法最佳设计实践_Java_Methods - Fatal编程技术网

Java方法最佳设计实践

Java方法最佳设计实践,java,methods,Java,Methods,我知道在Java中,每当代码块要执行多次时,就会创建一个方法 例如,下面的printPlusOne将被调用五次: class Count{ public static void main(String[] args) { for(int i = 0; i < 5; i++){ printPlusOne(i); } } public static void

我知道在Java中,每当代码块要执行多次时,就会创建一个方法

例如,下面的printPlusOne将被调用五次:

    class Count{

        public static void main(String[] args) {
            for(int i = 0; i < 5; i++){
                printPlusOne(i);
            }
        }

       public static void printPlusOne(int i){
            int sum  = i + 1;
            System.out.println(sum);
       }
    }

创建方法将使代码更加可读/可维护,但如果只调用一次,则完全取决于您,但我想,从技术上讲,最好创建一个方法,使其更易于更改/更新。我的经验法则是:一个方法应该做一件事,并且做得很好。如果它今天只被调用一次,它可能在六个月后被调用到其他地方。不仅如此,正如@holtc所说,它使理解代码所做的事情变得更加容易。

这里不仅有“经验法则”指导您。整个“”(以罗伯特·马丁(Robert Martin)的优秀绝对必读“干净代码”(Clean Code)为基础;现在就去获取免费的PDF)及其原则告诉我们:“方法越多越好”

或者更准确地说:

  • 有一个“单一责任”原则,即编程中的任何“东西”(模块、类、方法)都应该只有一个“单一责任”。因此,一个方法只做一件事
  • 有“单层抽象”原则;基本上告诉你,你的方法中只有一个if,或者一个循环,或者一个try catch 但为了避免这里的误解:目标是创建“最大”可读性的代码。你不会创建很多方法,因为原则上是这么说的。你创造了完成工作所需的方法;不少,;但也不是更多

    最后:“短方法多胜于长方法少”的一个重要方面是:这样的设置有助于“你的大脑”更快地掌握内容。关键是,当你研究任何写下来的东西时,你的大脑总是试图找到上下文,“边界”。这很简单:如果你写的代码有明确的、易于把握的边界;然后,当你稍后回来学习代码时,你正在帮助你的大脑。但是如果你把太多的东西放在一个方法中,你的大脑就会开始把这个方法的内容分成更小的部分。换句话说:你浪费了大脑的CPU周期,迫使你的大脑“忽略”一个事实,即在一个大方法中隐藏着许多小方法


    另外,请记住:不要担心运行时的效率。JVM/JIT非常擅长优化小方法;越小,在运行时内联它们就越容易

    调用代码的次数与此无关。当您有一组一个或多个操作时,您可以创建一个方法,这些操作可以封装在整个操作的一个直观和描述性名称中。也就是说,如果你有一行或多行代码来“做一件事”,那么你会将它们放入一个以该事情命名的方法中这样会更灵活。当我决定将一个方法绑定到一个特定的输出流时,我也会小心,因为这会降低代码的灵活性。@ChiefTwoPencils,谢谢。我只是用这个作为一个简单的例子。我想。我想这可能对你的问题也有用。
    printPlusOne
    方法利用了不必要的
    sum
    ,因为
    i
    通过值传递,实际上只做一件有用的事情(打印)。因此,将这两种方法结合到
    printNumsPlusOne()
    中,这样做正好
    System.out.println(i+1)
    似乎是更好地使用方法IMHO。@只要一行代码的意图不明显,就需要使用带有一行代码的伪随机方法。标准不一定是长度,尽管较长的方法在意图上往往冗长而模糊。
         class Count{
    
             public static void main(String[] args) {
    
                 //The below will print only once at the beginning of the program.
                 //Should I create a method for it even if it runs only once?
    
                 System.out.println("This is the introduction.");
                 System.out.println("The program will return a count");
                 System.out.println("Have fun.")
             }
         }