請依照標準寫碼風格撰寫程式

作者:蔡煥麟
日期:Aug-29-2001

就像散文作家常在作品中不經意地流露作者的性格,程式碼也會顯露了一個人的部分潛在的性格與思維模式,然而鐘鼎山林,各有天性,而且每個人的審美觀念不同,便各自發展出不同的程式碼撰寫風格。當個人已經習慣於某種形式的寫法時,要改變這個習慣就不大容易,如果有個統一的標準,事情會簡單一些。

為什麼寫碼風格要統一?

只有一個最重要的原因:維護。如果一份程式碼初次完成後就永遠不再需要修改,就沒有維護的問題,但事實上這幾乎是不可能的(除非該程式沒啥用處),也因此我們可能會在三個月甚至一年以後還要回頭來修改自己的程式,這時候,你有把握能花多久時間看懂自己寫的程式並且找出臭虫所在?所以,為了不要讓自己寫的程式成為日後的絆腳石,把程式寫得清晰易讀是很重要的。程式員也通常避免不了要維護別人寫的程式,如果寫碼風格沒有一個標準,那麼後面接手的人可就累了,為了自己,也為了小組其他成員,一致的寫碼風格是絕對必要的。

記得我退伍後的第二份工作,跟多數人一樣,一進入公司就是維護別人的程式,上頭給我的第二件任務是修改一位前輩寫的 Windows 程式(至於第一件任務....算了,好漢不提當年勇:p),那是一個用 C 語言和 SDK 撰寫的傳統視窗程式。當我在寫程式時,上司要求我程式碼的縮排必須要 3 個空白,我當時就不了解為什麼有這種規定,我從前用 4 格縮排已經很習慣了,為什麼非得改變呢?儘管不情願,我還是照做了,而且這習慣一改就維持到現在。

後來,我陸續寫了一些程式,也修改及除錯別人寫的程式,在維護別人的程式碼時嚐了不少苦頭,每當一團如義大利麵條的程式碼橫在眼前,我的挫折感就倍增,如果當時撰寫程式的前輩能夠多注重一下程式碼的品質,我的靈魂所遭受的磨難會少一些。在學習撰寫共用函式庫及類別庫的時期,我經常參考別人所撰寫的程式碼,逐漸地,我發現那些比較好用、臭虫較少的元件或函式庫的程式碼都有清晰易讀的優點以及相近的風格,這些高品質的程式碼節省了我許多學習的時間,也讓我領略到什麼是好的寫碼風格。然而,只有好的寫碼風格是不夠的,如果每個人的程式碼風格都不一樣,維護別人的程式時還是免不了要多花些時間適應或者動手整修。

標準,誰的標準?

當寫碼的風格要統一時,最容易引發的爭議就是:「你如何確定你的寫碼風格是最好的?為什麼不比照我的風格呢?」這類問題的答案很簡單,就是:照別人的規則來玩,你會快樂一些。

不要誤會,我的意思不是說你應該照我的規則來玩,而是照「世界規則」,一個放諸四海皆準的規範,你可以從網際網路上找到比較完整且具有公信力的 coding standard 文件(參考附錄),有了這些文件,我們就有了一個比較不受爭議的標準可以遵循,也節省了許多製作文件的時間,以這些標準文件為基礎,再針對其中比較有爭議的部分提出來討論,提供一些實務上較為靈活彈性的做法,在小組成員都同意之後就照此辦理,並且逐年進行檢討修正。我相信只要每個小組成員都了解一致的寫碼風格的重要性,並且都想要寫出好的程式,這些問題是很容易解決的。 

最後,如果大家都能依照標準行事,我們可以得到這些好處:

願我們都能快樂地工作。

附錄-Coding Standards 及程式碼美化工具

Delphi

Java

C++