讀《代碼整潔之道》

代碼整潔之道-程序員的職業(yè)素養(yǎng).jpg

借部門的一次讀書會上,我挑選了 Bob大叔的《代碼整潔之道》這本書。在讀了這本書的前面幾章節(jié)時就覺得感觸極大,今天剛好讀完,希望下面我的感受也能幫到想成為專業(yè)程序員的你。

什么是專業(yè)程序員

專業(yè)程序員并不好當。
作為一個專業(yè)程序員,最重要的一條是堅守原則,為自己的承諾負責。如何堅守?在面對外界(項目經(jīng)理,產(chǎn)品經(jīng)理,客戶等)強制的要求時,應(yīng)該用自己專業(yè)的知識去衡量問題的可行性,而不是輕易妥協(xié)。
“試試看” 這類的詞不應(yīng)該從一個專業(yè)程序員口中說出,因為你說的“試試看”對你來說是代表著可能完成,可能完成不了,但是在外人聽來,他們認為你說的是可以完成,而最終當問題沒法在他們預(yù)期的時間完成時,受到影響的不單單是公司的利益,你的信譽也收到了損害。
所以,在面對一個自己覺得沒法在指定時間完成的任務(wù),應(yīng)該堅決的說不,并且堅持這個底線。而在覺得問題可行的情況下,也應(yīng)該準確的說是,并為自己的承諾負責。

專業(yè)的程序員并不代表什么都懂,他們勇于接受他人的幫助,知道什么時候該結(jié)對編程。同時,他們也樂于幫助其他人,輔導新人。他們會抽出時間去閱讀,編碼來提升自己。

專業(yè)的程序員對自己的每一行代碼負責,沒經(jīng)過測試的代碼絕不提交。
我們應(yīng)該把“QA應(yīng)該找不到任何錯誤”作為努力目標,對QA找到的每一個問題,都應(yīng)該高度重視、認真對待。應(yīng)該反思為什么會出現(xiàn)這種錯誤,并采取措施避免今后重犯。

測試驅(qū)動編程(TDD)

什么是TDD?簡單來說就是:先寫測試,再寫功能。這聽起來好像很扯,但是了解其意義之后,你會為TDD喝彩。
因為自己這段時間也在負責部門 React-Native 項目單元測試的實踐(不過并沒有執(zhí)行TDD,而是采用了相反的方式,即先功能后測試)。
過程中,深刻體會到單元測試其中的一個好處:強迫自己抽象,再抽象。為了讓自己所寫的函數(shù)可測試,你需要做到盡量讓其內(nèi)部邏輯簡潔,單一,耦合性低,否則你根本就測不了它,或者說你要寫更多的case才能完整覆蓋它。
其好處自然就很明顯了:

  1. 通過測試的代碼,我們可以很有信心的將他提交;
  2. 簡潔的代碼,既提高其可讀性,也提高其健壯性。

TDD相關(guān)的書籍我沒閱讀過,借助作者的簡單描述,我在項目的一個模塊重構(gòu)上做了實踐,效果是真不錯。之后也打算更深層次的去理解它,并在以后的項目上加以實踐。

作者提到了TDD 的三項法則,這里摘抄了下來:

  1. 在編好失敗單元測試之前,不要編寫任何產(chǎn)品代碼;
  2. 只要有一個單元測試失敗了,就不要再寫測試代碼:無法通過編譯也是一種失敗情況;
  3. 產(chǎn)品代碼恰好能夠讓當前失敗的單元測試成功通過即可,不要多寫。

時間管理

這部分應(yīng)該說不單單是面向?qū)I(yè)程序員,而是面向所有希望走向成功的人。
毫不夸張的說:能否對自己時間有個好的管理是決定你能走多遠的必要條件。但是我們大多都做的不夠好,甚至一塌糊涂。從專業(yè)程序員角度,作者也說了下面幾點:

  • 如果發(fā)現(xiàn)參加某個會議是在浪費時間,就應(yīng)當想個禮貌的辦法退出來,繼續(xù)參加對你沒有太多意義的會議,是不專業(yè)的行為。你有責任合理分配老板給你的時間和金錢,所以,選個合適的機會離席,并非不專業(yè)的行為。
  • 如果觀點無法在短時間(5-30分鐘)里達成一致,就永遠無法達成一致。唯一的出路是,用數(shù)據(jù)說話。
  • 注意力點數(shù)會隨時間流逝而減少,使用合理的方式進行恢復:充足的睡眠(不熬夜的情況下7-8個小時足夠了);也可以選擇小憩,看雜志等方式;另外可以通過訓練肌肉注意力(騎車,吉他等方式)來提升自身的心智注意力。
  • 番茄工作法
  • 如果你掉進了坑里,別挖
  • 陷入泥潭,別繼續(xù)往前

在參加會議這塊,我經(jīng)常表現(xiàn)的不夠?qū)I(yè),參加了一個會議或者講座,發(fā)現(xiàn)根本聽不下去或絕對對自己沒什么用處,但是又不好意思中途離開,所以就干脆玩起了手機。最后講座沒收獲,自己時間也浪費了。在看了作者說的話后,默默的給以后的自己提了個醒。


番茄工作法的書籍我也讀過,也因此在App Store上買了個便宜的軟件(窮哭),但是實踐起來是真的難,排除掉那些繁瑣的步驟,你需要做的就是:

  1. 列出你當天要做的事情;
  2. 啟動番茄鐘(一般設(shè)置25分鐘),開始執(zhí)行任務(wù);
  3. 時間到就停止手中的事情,休息5分鐘。(3個番茄鐘結(jié)束后休息15分鐘)

難就難在,在番茄鐘的25分鐘里,你需要專注,高效率的去執(zhí)行。但是,自身的注意力以及外界的突然打擾總是會讓我分心。這一分心,回頭再看下時間,番茄鐘快結(jié)束了,我還什么都沒做呢。
番茄鐘工作法其中一個重要原則是:嚴格按照番茄鐘去工作,該工作時認真工作,該休息時認真休息。這樣做的好處是:可以培養(yǎng)你在短時間內(nèi)快速進入專注狀態(tài),因為你必須在這25分鐘里高效輸出。
番茄工作法我目前也在實踐著,不過每次受到外界因素影響時我都沒法說出:等我20分鐘之類的話。當我能很好的去遵循番茄工作法時我也會給大家分享下我更多的心得。(番茄鐘到了,我休息5分鐘)


代碼總是會隨著業(yè)務(wù)功能的增刪改而變的混亂,之前設(shè)計很好的實現(xiàn)方式,也會逐漸不適用,這時是選擇繼續(xù)用這種設(shè)計方式去實現(xiàn)新功能,還是推翻重構(gòu)呢?作為專業(yè)程序員,應(yīng)該清楚的認識到,繼續(xù)以這種方式去迭代,只會導致后面開發(fā)效率越來越低,代碼也變得很難維護。剛進入泥潭你可能可以繼續(xù)往前,但是你會發(fā)現(xiàn),你會越走越慢,最后進退兩難。所以,重構(gòu)是明智的選擇。

引用書的最后,觸動到我的一句話:

你還記得你寫的第一個程序跑起來的那個時刻嗎?它改變了你的生活并指引你大步踏上編程之路了嗎?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容