對 Java 程序員的20建議(其他語言也適用)
作為一個程序員,在提高自己技能的同時,也要提高自己的思維方式。以下20條建議,可以幫助我們成為一個專業(yè)的coder,專業(yè)的技術(shù)人員。
(1) 熟悉工具
軍人手中有槍,農(nóng)民手中有鋤頭,而我們手中有Java。這是我們引以為豪的工具。我們應(yīng)該了解它的適用范圍、生態(tài)系統(tǒng)、發(fā)展趨勢。
他就可能是陪伴我們一生的工具。
(2) 使用IDE
在技術(shù)領(lǐng)域,不要相信“無刀勝有刀”,“高手都是用記事本或VI開發(fā)”。
傻子才放著好的工具不用呢。選擇好的開發(fā)工具,好的IDE,并堅定不移的使用它。
(3) 堅持編碼
不要考慮自己的職位、崗位、只要是 Javaer,就應(yīng)該堅持編碼。
沒有編碼,就等于無源之水,無本之木。就不會有靈感。長時間不coding,就等于廢了。
(4) 編碼前思考
在編碼之前,必須已經(jīng)完成設(shè)計,最低要求是對開發(fā)中遇到的問題有清楚的認(rèn)識。不要在編碼中走一步看一步來解決問題。
(5) 堅持重構(gòu)
不要相信一次就能寫出優(yōu)秀的代碼。這不現(xiàn)實。任何優(yōu)秀的代碼、算法都是經(jīng)過了無數(shù)次的重構(gòu)磨煉。堅信自己下一個版本更優(yōu)秀!
(6) 多寫文檔
寫注釋、說明、文檔都是對代碼或項目的回顧和總結(jié)。不僅是為了后續(xù)參與人員。同時也是為了整理自己頭腦中混亂的邏輯。
(7) 保持版本的簡單性
一個項目不要保持多個版本。即使有分支也必須定義出項目合并條件。或者時間約束、目標(biāo)約束。不可任由版本擴(kuò)散。
(8) 做好備份
不做備份,一旦災(zāi)難發(fā)生就無挽救余地。經(jīng)常備份代碼到不同主機,能夠?qū)崿F(xiàn)自動備份將是一個非常好的方法。
上傳代碼到SVN、GitHub、Coding都是不錯的備份。如果你是Coding的鉆石會員,那備份到Coding是很好的選擇(^-^)V。
(9) 做單元測試
單元測試不僅能夠增強你的信息。也能給你帶來好名聲。尤其是小姑娘一看,“哇哦,單元測試寫的這么完整,肯定是一個認(rèn)真、負(fù)責(zé)、靠譜的人。肯定可以托付終身!”
(然而,殘酷的現(xiàn)實是沒有小姑娘會看你寫的代碼╭(╯^╰)╮, 但是大老爺們會夸你也是不錯的昂)。
(10) 不要重復(fù)發(fā)明輪子
直接使用成熟的工具或框架。但如果想共享一個新的超級好用的框架,那就盡管去發(fā)明輪子吧。以技術(shù)研究為目標(biāo),而不是項目交付。
(11) 不要拷貝
如果經(jīng)常按下“Ctrl+C”,為什么不重構(gòu)一下呢?不要做代碼的搬運工。
(12) 讓代碼充滿靈性
為變量、函數(shù)、類起一個好聽的名字。增加畢業(yè)的注釋。“One Line” 能解決一個上百行代碼的問題。也是一個優(yōu)秀的實現(xiàn)。
(Coding的小姐姐會夸你“哇ヾ(◍°∇°◍)ノ゙,優(yōu)秀!”,經(jīng)常在Coding冒泡的你肯定會懂。)
(13) 測試自動化
不論是單元測試還是集成測試。都盡量讓他自動化。如果需要不斷的各種配置或觸發(fā)條件。會讓代碼“汗顏”。能自動執(zhí)行,就不要手動設(shè)置。
(14) 做壓力測試
不要迷信自己的代碼很健壯。(誰給你的自信?肯定不是梁靜茹。)把業(yè)務(wù)人員制定的指標(biāo)擴(kuò)大三倍再做壓力測試。在高并發(fā)時,只有上帝知道發(fā)生了什么。
(15) 在編碼中,“剽竊”不可恥
多看開源代碼。學(xué)習(xí)別人的編碼。經(jīng)常從中“剽竊”一下。也是快速提高技能不錯的途徑。
(16) 向敏捷學(xué)習(xí)
敏捷中的一些思想也是很優(yōu)秀的。比如測試驅(qū)動開發(fā)、循序漸進(jìn)開發(fā)等等。
(17) 重里更重面
UI 是“面”,Java程序是“里”。客戶首先感受到的是“面”,然后才是“里”。簡潔、清晰、便捷的 UI,可以給客戶良好的印象。
(前端的小伙伴們看到這里是不是很開心 (๑❛ᴗ❛๑) ?你們是“面”!你們比“里”更重!)
(18) 分享
“獨樂樂”不如“眾樂樂”,開源代碼。不僅會收獲贊許和 GitHub 的 ★star 。還能暴露自己的 bug,在眾目睽睽下提升自己。
(19) 刨根問底
有問題不可怕,可怕的是掩蓋。在解決答案之后加上“是因為……”,這才是真的解決了問題。
(20) 橫向擴(kuò)展
Java程序要運行在 JVM 上,同事還要與網(wǎng)絡(luò)、存儲等交互。另外要遵循 FTP、HTTP、SMTP 等協(xié)議。還要實現(xiàn) Web-service、RMI、XML-RPC 等接口。
所以,我們必須熟悉相關(guān)的知識。擴(kuò)展知識面。