提出问题

优雅的写代码,需要注意哪些代码格式???

解决问题

代码的格式对一个开发人员是非常重要的。工作中,开发人员在维护代码的时候经常会埋怨别人的代码写的很烂,如果不严格要求自己,以后就会成为别人眼中的”别人”了。下面是来自《代码整洁之道》中自己总结的几点。

1)垂直放向上的区隔:不同的逻辑之间用空格间隔;

例:在导入申明,方法和方法之间用空白行隔开,这是正确的做法

  1. package com.hwy.test;
  2. public class CodeCleanTest {
  3. public static void main(String[] args) {
  4. eat();
  5. sleep();
  6. playPeas();
  7. }
  8. public static void eat(){
  9. System.out.println("吃饭");
  10. }
  11. public static void sleep(){
  12. System.out.println("睡觉");
  13. }
  14. public static void playPeas(){
  15. System.out.println("打豆豆");
  16. }
  17. }

例:在看看下面的代码,没有相关的分隔行,代码可读性较差差。

  1. package com.hwy.test;
  2. public class CodeCleanTest {
  3. public static void main(String[] args) {
  4. eat();
  5. sleep();
  6. playPeas();
  7. }
  8. public static void eat(){
  9. System.out.println("吃饭");
  10. }
  11. public static void sleep(){
  12. System.out.println("睡觉");
  13. }
  14. public static void playPeas(){
  15. System.out.println("打豆豆");
  16. }
  17. }

格式:

2)垂直方向上的靠近:关系密切的逻辑要靠近才会更加清晰(可看System这个类的实现);

3)变量申明尽可能靠近使用的地方;

package com.hwy.test;

public class CodeCleanTest {

    String food = "吃饭食物";
    public void eat(){
        System.out.println(food);
    }

    public void sleep(){
        System.out.println("睡觉");
    }

    String peas = "豆豆";
    String feel = "爽";
    public void playPeas(){
        System.out.println("打" + peas);
        System.out.println("感觉" + feel);
    }

    //-----------上面是正确的,下面是错误的------------------------

    String food = "吃饭食物";
    String peas = "豆豆";
    String feel = "爽";
    public void eat(){
        System.out.println(food);
    }

    public void sleep(){
        System.out.println("睡觉");
    }

    public void playPeas(){
        System.out.println("打" + peas);
        System.out.println("感觉" + feel);
    }
}

4)相关函数:放在一起,调用者放在被调用者的上面;

例:

package com.hwy.test;

public class CodeCleanTest {

    String food = "吃饭食物";
    public void eat(){
        System.out.println(food);
        /** 调用的sleep函数应该写在eat函数的下面 **/
        sleep();
    }

    public void sleep(){
        System.out.println("睡觉");
        String peas = "豆豆";
        String feel = "爽";
        /** 调用的playPeas函数应该写在eat函数的下面 **/
        playPeas(peas,feel);
    }


    public void playPeas(String peas, String feel){
        System.out.println("打" + peas);
        System.out.println("感觉" + feel);
    }

    //----------上面是正确的写法,下面是错误的-----------------


    public void sleep(){
        System.out.println("睡觉");
        String peas = "豆豆";
        String feel = "爽";
        /** 调用的playPeas函数应该写在eat函数的下面 **/
        playPeas(peas, feel);
    }

    String food = "吃饭食物";
    public void eat(){
        System.out.println(food);
        /** 调用的sleep函数应该写在eat函数的下面 **/
        sleep();
    }

    public void playPeas(String peas, String feel){
        System.out.println("打" + peas);
        System.out.println("感觉" + feel);
    }

}

5)水平方向:以不拖动滚动条为准则,代码行长度80个字符可以接受,最多120个字符,再多,你想逆天啊;

6)* / + =,+=等前后的空格可以起强调的作用,同时空格可以强调逗号;

例:

String food = "吃饭食物";
public void eat(){
    System.out.println(food);
    sleep();
}

public void sleep(){
    System.out.println("睡觉");
    String peas = "豆豆";
    String feel = "爽";
    playPeas(peas,feel);
}

/** 这里  String peas和String feel有个空格,强调逗号分割
public void playPeas(String peas, String feel){
    long startTime = System.currentTimeMillis();
    System.out.println("打" + peas);
    System.out.println("感觉" + feel);
    long endTime = System.currentTimeMillis();
    System.out.println(endTime - startTime);
}

7)缩进,只有一行的也按缩进规则来;

例:

package com.hwy.test;
public class CodeCleanTest {
   String food = "吃饭食物";
   public void eat(){
       System.out.println(food);
       String time = "白天";
       sleep(time);
   }
   public void sleep(String time){
       if(time.equals("黑夜")){
           System.out.println("睡觉");
       }
       //-------上面写法是正确的,下面写法错误--------------
       if(time.equals("黑夜")){System.out.println("睡觉");}
   }
}

8)遵守团队规则,这点很重要;