天天看點

關于軟體可擴充性與代碼防禦性程式設計的一點思考

軟體可擴充性我從程式員的角度來了解,應該是這樣的:

代碼應該是可擴充的,便于他人閱讀的,代碼是非暴力的(非暴力的意思是說我修改了一個地方,其它與之類似的地方時頁同時修改或者說隻需修改很小的一部分,典型的例子是字元串的國際化問題,我見過n多人寫的代碼都不太好,而且經常都振振有詞)

我感覺國人做軟體的最大一個問題是:很多時候以為做出功能就很牛B了,都沒有考慮軟體的健壯性,易用性,和對意外事件的處理,這點也是國外軟體與國内軟體最大的差別。(典型的例子是ms)。記得翁恺當年說過國内很多程式員是想當然,很多情況下隻考慮if part,至于else part他從來不考慮,因為他們很自豪的說:else part的情況應該不會出現,或者說這個軟體的主要功能實作在if部分,else部分無所謂。而如果真正出現了該問題又經常找借口。。。

程式設計精粹那本書說要進行防禦性程式設計,以上那種coding方法我想偏離了防禦性太久,另外,程式員能力矩陣中提高的進階能力也沒達到(防禦性程式設計必須會),在微軟軟體開發都是要保證代碼100%沒有錯誤才能送出的,100%可能有點誇張,但至少說明了一點,将代碼寫好不是一件容易的事(典型的例子是程式設計珠玑那本書說的二分搜尋的例子。。。。)

記得一本書上提到過真正的軟體中,防錯的代碼要比實作功能的代碼多很多,具體比例多少我忘了,但我覺得應該是3:7,防錯的代碼占7成。

我一直在想國人其實挺聰明的,但為什麼軟體業一直不如印度,尤其印度的tester那真是牛B啊。。。記得ACM icpc上多次tester都是印度的。。。。

印度搞test那思維真是缜密。。我覺得我們真是悲劇。。。

繼續閱讀