什麼是防禦性程式設計
我們總是無法預期使用者會輸入什麼樣的資料進入系統,但是錯誤的資料可能會導致整個系統損毀,於是程式設計師便會在資料輸入的地方加上一些檢查的保護措施,也就是說當你不信任輸入的時候,你就必須去檢查它。
一位工作多年,擁有豐富經驗的同仁,從他的程式碼可以看出他將Defensive發揮得淋漓盡致,每個地方都守的密不通風,因為如此 他的程式碼很少會Crash,所以每當系統產生問題時,他總是可以大聲的說「對我來說,我負責的這部分沒有問題」。事實上,為什麼傳入的資料有問題呢?這是我們要去追蹤的,但是因為問題被掩蓋了,以至於我們沒有辦法“Fail Fast”,長久下來系統中便會累積一些潛藏的問題。
這是信任的問題
真正的問題不在於程式有沒有Crash,
而是團隊之間溝通與信任的問題,會存在這種Defensive Coding Style的團隊,一定是溝通不良,在設計前未充分溝通,便自顧自的開始Coding,不願麻煩別人或怕別人來麻煩,所以處處提防著。
這種自我防衛的意識雖然是用來保護自己,但是每每在問題產生時撇清責任的方式,卻也造成團隊成員間的疏離。
Coding Style反映性格
前面提到的同仁他的行事作風上就是充滿的防衛性,從不正面回應執行面上時程或是資源的問題,只回答技術面上是否可行。共同執行一個專案時,會要你把要處理的項目切割好再分給他,然後他會在計劃時間內完成,可是專案從來沒準時過,為什麼呢?因為軟體開發不是在堆積木,只要把已經建立的各個模組組合就行了,當然就物件導向來說,程式碼不就是要組合嗎?ㄜ ⋯那指的是程式內部的設計方式,我想說的是團隊成員之間如何互相整合各自的東西 ,團隊合作是建立在信任的基礎上。
當然羅馬不是一天造成的,長久以來的工作經驗,整個華人的工作氛圍造就了這樣的一個人格特質,也反映在Coding Style上,有趣的是你可以從程式碼了解一個人的工作態度。
No comments:
Post a Comment