覺得別人寫的程式碼難以維護,應該吐槽嗎?
寫程式碼多年,接手過大量別的程式設計師寫的系統。每接手一個系統我都要吐槽一番,程式碼寫的爛,可讀性差,不美觀;用的語言有問題,不應該用PHP,應該用java或c#。反正任何別人寫的系統並且由我接手的我都要批判一番,認為自己總能寫的比他們好。
不過隨著行業經驗的增加,我發現自己寫的程式碼也老是被別人吐槽。結合平時和同行的溝通和觀察,我發現不管是什麼樣的程式設計師,不管是經驗豐富的老手還是剛出道的菜鳥,有一個共同的特徵就是會抱怨別人寫的程式碼有問題。
顯然,不可能所有的程式碼有問題, 也不可能所有的程式設計師有問題。
就拿最近發生在我身上的事情說好了。 最近在公司換了一個部門,原來的工作交接給了原來部門的同事,與此同時自己也接手了新部門的系統。
老部門接手我之前維護的系統的同事經常來找我麻煩,今天這兒不明白,明天那兒有問題,我可以深刻感受到他們對我寫的程式碼的吐槽與怨恨。
同時,對於我在新部門開發維護的這套系統,我的感受完全和維護我之前系統的同事的感受一模一樣。
造成這種問題的原因有很多
首先,程式碼是對業務邏輯的描述,先有業務邏輯,再有程式碼。要理解程式碼, 必須先理解業務邏輯, 在不理解業務邏輯的情況下,要理解程式碼肯定存在障礙,而接手非自己開發系統的程式設計師往往是不瞭解系統的業務邏輯的。當然,通過程式碼反推業務邏輯也是可行的,但會加倍費力,許多程式設計師吐槽別的程式設計師程式碼有問題往往就是在反推業務邏輯的過程中發生的。
其次,對程式設計師而言,程式碼是自己寫的還是別人寫的是有區別的,這是鐵律,每個程式設計師都有體會。對於別人寫的程式碼,即使寫的再好,在沒有深刻理解的情況下, 程式設計師也會覺得讀起來費勁, 難以維護。舉例來說,對於github上的牛逼專案,如果有程式設計師在沒有接觸過的前提下敢說輕而易舉看的懂的,那就是圖靈轉世。 我看不懂linux核心原始碼, 未必就是它質量有問題, 其它專案也一樣,包括我們平時寫的。
再次,很多時候,程式設計師的確會覺得自己寫的程式碼有問題,想改,卻騰不出手, 因為工作太忙,需求堆積,有大堆功能要做。 而程式碼寫的好不好,程式設計師的老闆才不管。 程式碼寫的好老闆不會給你加工資,功能完不成有可能獎金就沒了,孰輕孰重,程式設計師懂得如何權衡。
所以,程式設計師們, 不要吐槽別人的程式碼寫的爛,想要輕輕鬆鬆一樣看懂別人寫的程式碼,不可能的, 除非電腦科學以及衍生的商業邏輯被重新定義,否則除非不當程式設計師, 不然沒有辦法可以避免。