一個好的程式設計??


電影「駭客任務」裡面有一句台詞,尼奧問: 「What is Martix?」,莫斐斯:「Martix is a CONTROL」。
而我覺得程式設計也是如此,一個好的程式設計 = 一個好的控制流程

今天在debug一個UI錯誤時,看到有一些code真的快讓我吐血。重覆的code出現了好幾次,一堆event跳躍式的控制寫法,一堆例外處理判斷。上面講的都是寫程式時的大忌。

一個好的程式碼除了要段落分明、格式清楚外(這是基本),更要避免不斷重覆的code出現。如果一段類似的程式邏輯出現兩次以上,你就應該要把它寫成function。這不是每個寫程式的人都應該具備的基本知識嗎??…… ~”~ 為何我還是不斷看到這樣的code出現,這是要我…………. 怎麼教?? (教這個好像在羞辱人一樣….. ~”~)

而在處理event時,儘量要統一在一個地方處理。不要一下子換這段處理,一下子又跳到那段處理。這會讓人搞不清楚,到底這個event收到時,真正是在哪裡被做。如果是一個複雜的event處理邏輯,可以在class object內定義一個global flag變數去control,也總比到處綁callback function再拿掉好,雖然在object內用global變數其實也是不太好的做法。

而處理一段邏輯時,最好將所有的可能的情形先做分析,做一個統一並且一致化的處理或設計。才不會一下子漏了這塊沒想到,補一補,一下子又漏了那塊,再補一補。這樣補下來的結果,只會讓程式碼變得非常複雜難以理解和除錯。

除了上面提到的這些,在做模組化(Modulize)的設計時,要儘量避免不同的程式模組彼此相依的設計。若要溝通,最好透過一個中介層或API處理。這點尤其是在寫底層library時尤其重要。若一個模組的code切不乾淨時,也是會造成日後maintain上的困難。

這些,學校老師不一定會教,我也是這幾年工作慢慢累積這些經驗的。這些原則,說起來沒什麼,可是很多人往往就是做不好。我覺得一個好的軟體工程師要自己會去想,自己去反省過去寫過的code的優缺點,這樣程式的功力才會進步。最好要時時刻刻把這些準則放在心裡,不要想說為了貪圖一時的方便,而用比較投機的寫法,這是不對的。

最後,發表個感言:
如果你問我:「程式設計對我而言是什麼?」
我會說:「程式設計對我而言,是一個帶領人們進入神奇國度的東西,是一個好的控制,一個控制的藝術」

Tags: , , ,

Leave a Reply