在看完軟體建構之道、無暇的程式碼後,在下要以這篇文章簡短說明程式碼在維護上的難題,首先以最簡單的例子:在文字模式下輸出 Hello World 文字。
請先看此網頁 The Hello World Collection,光是語言的選擇就有好多種了,且同一種語言也可以不同的寫法,例如 C 語言也可以像下面:
#include <stdio.h> /* * 這是印出 Hello World 的程式嗎? */ int main(void) { printf("%c%c%c%c%c%c%c%c%c%c%c%c", 72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100); return 0; }
\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020\u0020 \u0063\u006c\u0061\u0073\u0073\u0020\u0055\u0067\u006c\u0079 \u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0020\u0020 \u0020\u0020\u0020\u0020\u0073\u0074\u0061\u0074\u0069\u0063 \u0076\u006f\u0069\u0064\u0020\u006d\u0061\u0069\u006e\u0028 \u0053\u0074\u0072\u0069\u006e\u0067\u005b\u005d\u0020\u0020 \u0020\u0020\u0020\u0020\u0061\u0072\u0067\u0073\u0029\u007b \u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074 \u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0020 \u0022\u0048\u0065\u006c\u006c\u006f\u0020\u0077\u0022\u002b \u0022\u006f\u0072\u006c\u0064\u0022\u0029\u003b\u007d\u007d
變數命名與註解的例子
若在看到類似下面的程式碼時,看的人會如何想?
#include <stdio.h> /* * 底下程式碼我也不知道在做什麼,因為我是接手的人,並非原作者 * 而原作者也已經往生了,更糟的還在後頭, * 關於此部分的程式碼也沒有任何文件。 */ int main(void) { int guessWhatIsIt; /* ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 ...這不是程式碼 */ char charCanNotBeA_VariableName; short shortCanNotBeA_VariableName; int intCanNotBeA_VariableName; long longCanNotBeA_VariableName; float floatCanNotBeA_VariableName; double doubleCanNotBeA_VariableName; for(int i = 0; i < 100; i++) { /* * Under construction.... */ } /* * The following code has a bug that needed to fixed quickly. */ a_bug_in_some_function(param1, param2, param3); return 0; }
條件式寫法的例子(由FB wayne.chang 網友所提供)
有的人喜歡把 if 包很多層,但一般比較接受的是用 && 連接條件。另外,遇到 enumeration 用 switch 也比多個 if 來的讓人接受。
有的人喜歡把 if 包很多層,但一般比較接受的是用 && 連接條件。另外,遇到 enumeration 用 switch 也比多個 if 來的讓人接受。
真可謂程式語言裡的火星文,以上只是問題的幾點,還有可移植性、容不容易擴充、排版、整體架構等問題。
沒有留言:
張貼留言