為什么程序員總是寫糟糕的代碼?3個原因

   1.明顯原因


  一下子想到的最明顯的原因是,有好的程序員,也有不那么好的程序員,有的人技術水平高,有的人水平卻低,有人對這門技藝感興趣,但也有的人卻不愿意在工作之外學習其他。


  好了,就不深入探討了。


  那么是不是在這表層之下還有更多的問題呢?有沒有導致糟糕代碼的根本性原因?我覺得有必要深入探究一下。


  2.低預期


  對于這一點,眾所承認的是,我們在大學中,通過自學或書籍學到的東西,并不能匹配現實世界的真正需求。


  因此,可以想象初學者總是需要在工作中學習如何產出好的代碼。我們也相信,真正的編程知識只能通過經驗累積才能獲得。因而,初學者甚至覺得他們能寫出的就是糟糕的代碼!


  當初學者預期他們將產出質量不好的代碼,通常,那就是你將得到的結果!


  雖然上述推理有部分是真理,但這個假設我不愿意接受,原因很多,但主要是以下三個:


  期望低標準的職業生涯起點,也就是說質量變成了一個不重要的因素。低入口門檻的直接結果是低質量開發人員的大量涌入,并導致下面的第2點。


  通過強迫他們和大多是低質量的開發者一起工作,我們讓那些關心工藝和對自己的工作質量感到自豪的人過得苦不堪言。


  上述兩個因素的結合導致了我們現在這個狀況,每個人都認為他們會寫代碼,但是我們更信任如同品牌商品一樣的專業開發者。


  我們得對初學者有更高的預期。試問,哪家醫院會聘用一個以前沒有做過手術的醫生,或者說,哪家航空公司會雇用一個不會緊急降落的飛行員?我們根本不能接受這樣的醫生和飛行駕駛員。那么,為什么軟件行業要接受低質量的程序員呢?


  那么,低質量開發者的根本原因是什么呢?


  3.編程書籍


  幾天前,我正找一些我以前看過的舊書的時候,恰巧找到了幾本關于Java的書——一本針對學習Java的初學者,另一本針對于SCJP認證。對于接下來要講的話題,具體書名我就不說了。


  不幸的是,初學者參考的那些書籍總是在不經意間準確描繪了差的代碼應該是怎么樣的。


  任何編程語言的初學者書籍,大多滿是壞的代碼。如《Clean Code》和《Pragmatic Programming》就是如此,但這些書籍卻被廣泛用于教導大多數的初學者。


  一些糟糕代碼的例子……


  3.1糟糕地命名類、變量和方法


  i, ii, j, k用于循環;SampleChapter1用于類名;等等


  3.2不分離關注點


  三頁長的main()方法囊括了一切,沒有根據責任不同分成不同的方法。


  3.3不好的編碼實踐


  沒有如包含驗證或異常處理這樣好的編碼實踐。相反,他們通常使用一個包含所有代碼在類內的大的通用的try()..catch(Exception e)塊。


  大量使用if-else,switch,goto語句等。


  3.4走捷徑


  這些書籍還需要擺脫“快速修復”的編程風格。例如,方法中有10個參數并不罕見。


  需要做兩種類型的計算?沒問題,傳遞一個布爾參數,并添加一個if-else結構即可。需要增加新的功能呢?哈哈,那就添加更多的代碼到那個已經長達兩頁的方法中去!這里只舉幾個走捷徑例子。


  學習編程的一個好方法是掌握語言的語法,高效開發所需的工具,以及組成代碼的組件和??櫚納杓啤哉庵炙承?。


  不幸的是,大多數書籍停留在語法上,而不觸及工具和設計改進的話題。雖然這些書的意圖和目的是要教導編程語言的語法,但是閱讀的人同時也會學習編碼風格和方法。


  在初學者學習代碼的時候,教導他們明白一件事非常重要,那就是,代碼是為其他人閱讀和理解而寫的,而并非是為了編碼器而寫。


  希望你們中的一些人在閱讀了這篇文章之后,如果將來寫編程書籍的話,請務必要記得在書中寫好代碼!學著產出高質量的代碼不應該只限于專家級的書籍中,而應該是每本關于編程的書的重要組成部分!

上一篇: HTML5技術實現Web圖形圖像處理——WebPhotoshop精簡版

下一篇: 5個主流的HTML5開發工具

分享到: 更多
所有电子游戏大全 pk10人工计划网页版 七星彩历史开奖号码 后三组六八码倍投 组选包胆一共多少注 北京pk10走势图怎么分析 大乐透中奖规则 黑马计划软件下载 腾讯出的游戏 时时彩龙虎和是什么 七乐彩开奖视频 通比牛牛怎么赢 91计划pk10全天计划 彩神幸运飞艇冠军5码app 大赢家足球比分310 彩票官网北京pk10