大多數程式設計師最重要的應該學習什麼?
過去七年半以來我在Ronimo輔導了很多程式設計實習生,數百名學生和畢業生,在他們身上我看到一樣同樣的東西需要學習,也許有人認為,他們應該是需要學習特定技術、演算法、數學或其他形式的具體知識。 但是在Joost看來,這些從來都不是最主要的。 最主要的是他們需要學習“ 自律 ”。有紀律地編寫清晰程式碼,有紀律地在程式碼變得混沌時重構它們;有紀律地刪除未使用的程式碼和新增備註。
我在這個主題上花了大部分時間輔導實習生,不是解釋先進的技術或我們的引擎的細節,而是讓他們編寫更好的程式碼,我總是詢問有工作經驗的開發者,他們認為成為優秀程式設計師最重要的是需要什麼?他們通常回答程式碼應該清晰,易於理解和維護。這確實也是我想聽的,但是年輕的程式設計師罕有能始終遵循的。
記住自律,不要停息,如果所有變數的名稱都錯了,但是功能完美,那麼程式碼將超級混亂,從功能程式碼中逐步理清雖然在短期內可能得不到回報,但這就是邁向自律的第一步,這也是作為實習生的好的導師通常非常注意程式碼質量,從而能迫使實習生邁出正確的第一步。
下面是我經常看到的一些例子:
假的函式/變數/類
這些函式 類和變數實際做的事情並不是它們名稱的意思所代表的,而是實現其他功能,它們的名字是假的,名不符實,很明顯,名字應該是正確的,但是讓我們驚訝的是很少見完全封閉的名稱。
......
(banq注:快取失效和命名是電腦科學最難的兩件事)
糾結在一起的類
我看到另外一個問題是泥團一樣黏糊在一起的類,做了很多無關的事情,無關的新特性新功能一點點加入,讓簡單的類變得臃腫,塞入各種與該類名無關的行為,有時一個類的大小超過幾百行程式碼。
...
避免這個問題的辦法應該總是想:我在這裡新增的功能符合類名本身嗎?如果不是,那麼重新命名類的名稱,或者分成兩個獨立的類。
如果你不能想出一個程式碼類的合適名稱,就會發出壞味道,那類的內部就會變得混雜。有時可能一個需要分成兩個部分,才能找到合適的名稱分別代表它們。
超大號的類
隨著時間推移,越來越多程式碼新增到一個類,變得非常臃腫,雖然這個類還能工作,但是程式碼太長,非常繁瑣,容易發生很多bug,方向和細節混同在一起。
切分一個非常大的類的工作是枯燥的,也是一個挑戰,類中程式碼高度交織在一起,執行中不斷修復新增新功能,最後結果是必須有自律才能阻止它變得更大。
一般經驗是我們儘量保持類程式碼低於500行,函式低於50行,有時雖然不可行,但是我們總能尋找到辦法來重構它,切分成更小 更易於管理的程式碼塊。
程式碼的註釋
如果沒有註釋,代表沒有任何資訊,這是臨時破碎的程式碼嗎?被取代的舊程式碼在哪裡呢?
..
並行邏輯和重複程式碼
舉一個例子,有某個結構特徵的名稱暗示我們一些它是什麼的資訊,比如“TreeBackground.dds”. 為了瞭解這個特徵能被用於一個tree類,我們需要檢查檔名中是否以單詞“Tree”開始. 透過使用 filename.beginsWith(”Tree”)檢查得很快. 這段程式碼如此短,但是我們在不同地方需要它,這樣我們就複製貼上它,這就造成了重複程式碼,當然每個人知道重複程式碼不好,但是這段程式碼真的很短,複製貼上非常容易,我們這裡面臨的問題很明顯:也許以後我們會檢查這個結構特徵是否適合樹tree的改變,那是我們就需要在每個地方單獨一個個去解決(因為這段短程式碼被複制到這些地方)
一般經驗是,這段程式碼不應該被複制,應該放在一個函式中,即使它超級短,主要因為做一個函式再呼叫需要許多程式碼,而直接複製貼上更直接簡單?
本文討論的事情似乎很簡單,它們應該是大學第一年教,但是面臨的挑戰是如何讓他們花時間去遵循,總是記住它們,這就是這為什麼是最重要的事情,他們最應該學習的不是知識,而自律。
相關文章
- 為什麼大多程式設計師黑php不黑python?程式設計師PHPPython
- 程式設計師最應該知道的一些事程式設計師
- 聰明的程式設計師應該知道什麼是最值得解決的問題 - Fagner Brack程式設計師
- 為什麼程式設計師在學習程式設計的時候什麼都記不住?程式設計師
- 一名合格的程式設計師應該是什麼樣子程式設計師
- 什麼樣的程式設計師最易漲薪?程式設計師
- 為什麼軟體工程師應該學習哲學?軟體工程工程師
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- 程式設計師最核心的競爭力是什麼?程式設計師
- 不想做程式設計師學習python有什麼用途?程式設計師Python
- 學習程式設計先學什麼程式設計
- 程式設計師的數學程式設計師
- java程式設計師學歷重要嗎?Java程式設計師
- 為什麼程式設計師應該有一臺Mac個人電腦程式設計師Mac
- 為什麼程式設計師應該有一臺 Mac 個人電腦程式設計師Mac
- 9月書訊 | 程式設計師最應該知曉的 189 道題程式設計師
- UI設計師需要學習什麼呢?UI
- Java程式設計師應該在2018年學習三種JVM語言Java程式設計師JVM
- 為什麼Python程式設計師需要學習Linux系統?Python程式設計師Linux
- 轉行學習web前端開發程式設計師應該具備的條件Web前端程式設計師
- 程式設計師程式設計入門一定知道!程式設計師需要學什麼?程式設計師
- 小白程式設計師想走後端方向,該怎麼學習計算機基礎知識?需要做什麼?程式設計師後端計算機
- 為什麼企業要求學歷?對於程式設計師來說學歷重要嗎?程式設計師
- 為什麼程式設計師應該儘早投資於決策技能 - Reforge程式設計師
- 哪本書是對程式設計師最有影響且最應該讀的?程式設計師
- 程式設計師為什麼要持續學習(升級版)程式設計師
- 好程式設計師Java學習路線分享maven是什麼程式設計師JavaMaven
- 數字展廳設計方案中應該包含什麼
- 2020年Java程式設計師應該學習的七大前後端框架 - javarevisitedJava程式設計師後端框架
- 上萬名程式設計師總結出的Java學習路線 !你應該看看 !!程式設計師Java
- 美女程式設計師觀點:程式設計師最重要的非程式設計技巧程式設計師
- 程式設計師應該如何找工作呢?程式設計師
- 程式設計師你應該勇敢說不程式設計師
- 程式設計師應該少做些"工作" - johnwhiles程式設計師While
- 學Python的程式設計師,程式設計能力都“退化”成什麼樣了?Python程式設計師
- 小程式的ui應該怎麼設計?UI
- 對程式設計師而言,學歷重要還是技術重要?程式設計師
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- 程式設計師的悲哀是什麼?程式設計師