在編程過程中,整潔的程序雖然不是是編寫一個優質程序的必須,不過能用整潔的代碼編寫優質程序,那也是極好的。不過中培軟件專家郭老師指出,他在授課過程中,和自己的學員討論這一問題是,發現在這一問題上,很多程員本末倒置的現象不少。
郭老師曾經和一些參加中培駕馭培訓的程序員就編程問題進行過有趣的討論。郭老師通常會有這樣的印象,感覺一些程序員過于強調代碼的整潔。雖然郭老師也很注重代碼的整潔,在過去幾年來也寫過不少強調代碼整潔的重要性的文章。但當郭老師認為,代碼整潔只是程序員的第二重要目標,它永遠不會取代編程過程中的首要目標:讓軟件先跑起來,讓它能跑得順暢而有效,這是應該是編程首先應該解決的問題。
當談論起代碼整潔時,很多人都能饒有興趣的說出很多。他們堅持不懈的追求這個目標,有時他們在編程時還會穿上帶有Uncle Bob的綠色的宣傳圖標衣服,代碼整潔以此提醒自己什么是最重要的:寫出整潔的代碼。不幸的是,很多次郭老師都發現,很多人在重視“代碼的樣子”的同時,卻忽略了要把“代碼的功能”也放在同等重要的位置。例如,很多人不愿意去學習ORM實現的背后原理,他們更愿意使用一些像Hibernate實體映射工具的東西把數據映射成實體對象,即使當這樣做比起直接獲取數據是效率低的讓人驚訝時也是如此。他們并不考慮多次遠程調用的代價或大數據量傳輸的成本。他們一遍一遍的就是寫不出一個好的保齡球游戲,因為他們把數據庫的操作放在循環里了。
代碼整潔并不是構成好程序的必要條件,好程序也并不必定是代碼整潔的。對郭老師來說,好程序是運行良好的代碼,容易理解,容易修改。這是它們的先后次序。郭老師說也許大家都非常明白,代碼的易于理解、易于安全的修改是非常的重要。但不管代碼寫的如何清晰易于閱讀和修改,如果它沒有做它本該做的事情(不能覆蓋所有角落場景),或花費了它本不該使用的長時間執行操作,它就不是好代碼。當然,它很整潔,可卻沒有用處,不是嗎?
郭老師不是鼓勵程序員過早的進行優化,這個程序員有著不可思議的非凡技術,否則你過早的優化的程序里至少有四分之一是不正確的。優化最重要的是找到瓶頸,其它的努力都是浪費。
最后,郭老師總結道:程序員在編程過程中應該寫成整潔的代碼,但在編程過程中一定要把握本末和主次,不要為了代碼整潔,而放棄了編寫優質的程序。