來架個網站吧-07.程式撰寫習慣

2024-02-28 來架個網站吧 linux 2023 iThome 鐵人賽

來架個網站吧-07.程式撰寫習慣

tags: 來架個網站吧

我是目錄


程式碼風格,是一件很抽象的事情。但是在團隊中風格一致,似乎很重要。

我鮮強調一次是,「似乎」。

讓我來說說吧

一個網站只有一個工程師開發。程式碼風格不一致(應該)沒有關係。例如,縮排、命名規則不一致、包含與更動業務邏輯前的程式片段,如下列範例:

public class Main {
    public static void main(String[] args) {
            int user_input = 0;

//for(int i=1;i<=9;i++) {
//            for(int j=1;j<=i;j++) {
 //               System.out.print(j+"×"+i+"="+i*j+"\t");
//            }
//            System.out.println();
//        }

    int Not_too_good = 60;
      int OK = 80;
    int good = 100;String showMsg = "";

    if(user_input < Not_too_good){
     showMsg = "Not too good";
      }else if(user_input < OK){
showMsg = "Not bad";}else if(user_input < good){
      showMsg = "OK";
  }else{
      showMsg = "Good";
    }
    System.out.println(showMsg);
}
  }

上述程式碼確實可以執行,可是相信大家都閱讀得很痛苦吧?這也是我第一個專案接手的程式碼品質,裡頭中充趕專案時程、能跑就好的影子,後續如何出了什麼狀況以後再說。

下列是我整理過後的程式片段:


/*
* 判別分數工具
*/
public class Main {
  public static void main(String[] args) {
    int userInput = 0;
    String showMsg = "";

    final int NOT_TOO_GOOD = 60;
    final int OK = 80;
    final int GOOD = 100;

    if(userInput < NOT_TOO_GOOD){
      showMsg = "Not too good";
    }else if(userInput < OK){
      showMsg = "Not bad";}
    else if(userInput < GOOD){
      showMsg = "OK";
    }else{
      showMsg = "Good";
    }

    System.out.println(showMsg);
  }
}

這樣的程式片段會比上述的狀況好閱讀的多了。

程式碼其實是一份協調過的文件

程式碼執行的結果最後還是由使用者進行操作、反饋。而程式開發人員其實也只是將各種的討論結果寫成程式碼而已。在我的職涯的前一兩年每天都會在不停的Codding,之後大部分的時間都在閱讀文件,如:需求設計文件、規格、技術文章。還有進行除錯、研究如何將新的技術導入專案中等等非寫程式碼的工作,大約一天只會有一到兩個小時執行Codding。

如果專案時程排的緊,其實很難回頭查看程式碼的品質。有時候是真的為了替老專案(十幾年的系統)導入新技術,花了好幾個夜晚趕出來,真的能跑且達到新需求要求就很不錯。

風格?品質?沒有多餘的精力、時間就只能先暫時擱置,畢竟只是為了養家餬口而已。所以一開始我說「程式碼風格似乎很重要」。

以這種角度來說,程式品質其實也是各方協調下來的結果。

為了解決時程緊迫這種困境,後來在報新的專案開發時程,我都會多估一到五天的開發人天做程式碼品質檢測,這樣如此一來就可以漸漸把程式品質提昇,同時系統問題也越來越少,因為好閱讀好維護。

品質要求

以下是我對自己的品質要求:

  • 變數命名:以駝峰式。
  • 常數命名:以大寫加下滑線,且為名詞為主。
  • function: 以駝峰式,且為動詞為主。
  • className: 以駝峰式,且為名詞為主。
  • 排版以扁平編排為優先,盡量避免巢狀編排。