讀古今文學網 > 編寫高質量代碼:改善Java程序的151個建議 > 建議151:以技術員自律而不是工人 >

建議151:以技術員自律而不是工人

技術人員和工人有什麼不同呢?這麼來說吧,在工廠的流水線上,工人的任務是過來一個零件就把它安裝在規定的位置上,而技術人員的任務則是確定零件的尺寸、材料、安裝位置等,而且一旦出現問題,技術人員還要能夠查明出現問題的原因,並且提出解決辦法,我們Javaer也應該是這樣的,這就需要我們逐步培養自己,在提高自己技能的同時也提高自己的思維方式,以下20條建議可以逐步把我們向技術人員方向培養。

(1)熟悉工具

軍人手中有槍,農民手中有鋤頭,而我們手裡只有Java,這也是我們能夠引以為豪的工具,我們應該瞭解它的使用範圍,瞭解的它的生態系統,瞭解它的發展趨勢——它也可能就是陪伴我們一生的那個工具,也祝願它是。

(2)使用IDE

在技術領域,不要相信「無刀勝有刀」之類的鬼話——「高手都用記事本或VI開發」,建議選擇Eclipse或NetBeans作為開發工具,而且堅持不移地使用它。

(3)堅持編碼

不要考慮自己的職位、崗位,只要是Java圈子的生物都應該堅持編碼,沒有編碼,就等於是無源之水,無本之木,何來靈感和靈性?

(4)編碼前思考

在坐下來開始編碼之前,必須已經完成設計,最低要求是對開發中遇到的問題有清晰的認識,不要在編碼中解決問題。

(5)堅持重構

不要相信一次就能寫出優秀的代碼,這是不現實的,任何優秀的代碼、算法都是經過多次重構磨練的,堅信自己的下一個版本或代碼更優秀。

(6)多寫文檔

寫註釋、寫說明、寫報告都是對代碼或項目的回顧和總結,不僅僅是為了後續的參與人員,同時也是為了整理自己頭腦中混亂的思維。

(7)保持程序版本的簡單性

一個項目不要保持多個版本,即使有分支也必須定義出項目合併的條件,或者時間約束,或者目標約束,不可任由版本擴散。

(8)做好備份

世界上沒有萬無一失的事情,不做備份,一旦災難發生就無挽救的餘地了,經常把代碼拷貝到不同的主機上備份是一個好習慣,如果能夠自動備份那將是一個非常好的方式。

(9)做單元測試

單元測試不僅能增強你的信心,也能給你帶來好名聲——後續者一看,「哇哦,單元測試寫得這麼完整,肯定是一個認真、負責的人」。

(10)不要重複發明輪子

在項目中使用已經成熟的工具或框架,而不是自己編寫。但是如果想共享一個新的MVC框架,那就儘管去重複發明輪子吧,它不是以交付為目的的,而是以技術研究為目標的。

(11)不要拷貝

當您按下Ctrl+C的時候,問問自己「我在做什麼?拷貝是否是唯一能做的?為什麼不能重構一下呢」,不要讓大段的代碼散落在各處,不要做搬運工,不要做拷貝工,要做技術工。

(12)讓代碼充滿靈性

為變量、類、方法起個好聽的名字是一個不錯的主意,為代碼增加必要的註釋也是很好的辦法,\"One Line\"能解決一個上百行代碼的問題,也是一個優秀的實現。

(13)測試自動化

不管是性能測試、單元測試,還是功能測試,想盡辦法讓它自動化,不要在測試之前手動配置或觸發條件,這不夠人性化,也同時讓代碼「汗顏」——本是用來自動執行的,但卻被手動設置了條件。

(14)做壓力測試

不要相信業務人員「最多200個用戶使用」之類的話,把業務人員制定的指標擴大3倍,然後再做壓力測試。不要迷信自己的代碼很健壯,在高並發時只有上帝知道發生了何事,你又怎麼能知道?

(15)「剽竊」不可恥

多看開源代碼,學習一下人家是如何編碼的,然後經常「剽竊」一下,這也是提高技能的最佳途徑,我們不是孔乙己,「剽竊」不可恥。

(16)堅持向敏捷學習

不管「敏捷」與「非敏捷」之間的爭論有多激烈,敏捷中的一些思想是非常優秀的,例如TDD測試驅動開發、交流的重要性、循序漸漸開發等。

(17)重裡更重面

UI(User Interface)是「面」,Java程序是「裡」,客戶首先感受到的是「面」,然後才是「裡」,要想獲得良好的第一印象,那就需要有一個簡潔、清晰、便捷的UI,即使「金玉其外敗絮其中」,我們也可以繼續重構。

(18)分享

「獨樂樂」不如「眾樂樂」,把自己的代碼分享出去收穫的不僅僅是讚許,還有自己能力的提升——暴露出自己的Bug,在眾目睽睽之下修正之,知恥而後勇也。

(19)刨根問底

有問題不可怕,可怕的是掩蓋,或者虛假掩蓋,「哦,這個問題呀,加上這個參數就可以解決了」——這不是解決問題的辦法,在答案之後加上「是因為……」,這才是解決了問題。

(20)橫向擴展

Java要運行在JVM、操作系統上,同時還要與硬件、網絡、存儲交互,另外要遵循諸如FTP、SMTP、HTTP等協議,還要實現Web Service、RMI、XML-RPC等接口,所以我們必須熟悉相關的知識——擴展知識面,這些都是必須去學習的。

技術人員的武器就是技術,我們Javaer的武器就是Java,如果我們能馳騁沙場,唯我獨尊,而且屹立不倒,那就是我們成長為頂尖技術高手的時刻,朝著這一目標奮鬥、努力吧,總有一天我們能夠與James Gosling(Java的創始人之一)、Rod Johnson(Spring項目的創始人)、Gavin King(Hibernate的創始人)坐而論道,煮酒論Java也!