程序員編程的10個實用技巧
下面是我自己在工作中學到的一些簡單的技巧和策略,希望能對各位有用。
1.橡皮鴨調試法
不知道各位有沒有這樣的經歷,當你正在給別人描述問題的時候,突然靈機一動想到了解決方案?這種情況的產生是有科學依據的。高談闊論能讓我們的大腦 重新有條理地組織問題。在這種情況下,你的聊天對象就是“橡皮鴨”。團隊中的每個人都應該積極主動樂意地成為彼此的“橡皮鴨”。有時候,如果你幸運的話, 你的“橡皮鴨”搞不好還能給出有效的建議呢。
2.快速信息反饋
一旦寫好代碼就要盡快得到反饋。當你和我們在HubSpot一樣,收到大量的Pull請求,不妨做些細微的改動,然后立馬打開PR,討論設計和代碼。和你的“橡皮鴨”交流一下,請他們提點建議。要知道,迭代原型可遠比糾正成品要節約成本。
有的團隊結構,最初可能并不要求寫代碼。因為實體模型、白板設計等等,這些成本都比一下子刪改上千行代碼的成本要低。
3.首先搞定端至端
當我們在解決問題和完成功能時,很容易深入到細節問題的研究。這里有一個好方法,能讓我們盡快搞定端至端。
例如,假設我需要在網頁上設置一個功能,能在用戶點擊之后做一些復雜運算并把結果存儲到服務器中。有些童鞋可能想著想著就先去研究這個運算方式了。 我的做法是,先為用戶的操作設置事件處理程序,用一些固定的值來模擬計算,然后調用API向服務器請求數據。這樣一來,我們就沒必要先考慮每一個具體細 節,可以直接端至端地測試系統。同時,這個快速的反饋回路有助于我們更快地迭代和寫代碼。一開始出來的設計可能并不完美,但是通過親眼目睹各個部件是如何 組合的,我們將會對整個系統有一個更清晰的了解,做出最優的設計。
在HubSpot,在產品還沒完成之前,我們就先將功能推出去了,這樣我們就可以及時進行內部測試。這是對此端至端概念更進一步的深化。
4.適時離開電腦
有時候在調試時,console.logging無處不在,最好的方法就是測試代碼。也有的時候,你絞盡腦汁嘔心瀝血地想要解決一些復雜的設計和問 題而不得其法,那么你最好先暫時離開一會。雖然這聽上去有點不可思議,但是有的時候,我的確是在廁所想到了問題的癥結所在。我的愛人,她也是一枚軟件工程 師,曾告訴我,當她睡著的時候常常會有各種奇思妙想(有時閉上眼睛天馬行空,有時夢里各種方案紛至沓來)。打個盹、散散步、上個廁所……都可以,總之適時 離開電腦。
5.自動化
高效的開發人員會將很多繁瑣的進程自動化。不過一直以來很多人都認為自動化只能節約時間,這是一個很普遍的誤解。其實不僅如此,自動化最大的優點是讓你的思想策馬奔騰無所阻礙,朝著完成目標的方向奮勇前行。
舉個例子,假設我需要經常運行一個相當復雜SQL查詢,而過程真心很長,每次又都要重新輸入一遍。我當然不會傻乎乎的這么做,我會使用類似于Alfred的程序保存于剪貼板中,或者自己想個辦法節約一些步驟。于我而言,自動化是一種更為積極的工作態度。
6.自己動手,“豐衣足食”
當我們在設計新代碼時,都希望自己能寫出完美的代碼,發現每一個抽象概念。但是當我們致力于設計新代碼時,抽象概念卻又成為了干擾因素,即便這些抽 象再怎么顯而易見、易于設計。我的做法是,不要立刻思考各種抽象概念,先簡單機械地復制一些代碼作為原型。這能讓我迅速上手新項目,效果比我僅僅只是紙上 談兵要好,之后所能做的抽象發散也更廣闊。不過,可不要光復制,還要清理代碼,不然它們很快就會變成一筆爛攤子。
7.運動很重要
寫代碼其實并不能燃燒很多卡洛里,因此我們必須強迫自己動起來。可以不時地伸伸懶腰,經常性地走來走去。在HubSpot,我們有一個俱樂部,我每周會有三天在午飯前去健身。此外,我的習慣是每隔一小時左右做幾個俯臥撐,拉伸肌肉,保持活力。
因為久坐我以前經常肩膀疼背疼,但是自從立式桌的出現,這些都成為了歷史。如果你也有這方面的煩惱,不妨試一下這個方法,起效快、效果好。 HubSpot為我們提供的電動辦公桌可以在立式和坐式之間轉換。當然如果放在家里,1000美元這樣一頂桌子可能太奢侈了,所以我就在網上買了個二手 的,只要40美元。
8.閱讀前文
閱讀別人的文檔、技術文章和代碼常常讓我抓狂。為了不氣得抓耳撓腮、捶胸頓足,不妨先閱讀前文,以期更多的細節內容。程序中的概念很難用線性方式表達出來。閱讀前文能讓我們更清楚文章內容和代碼在說什么。
9.一絲不茍做筆記
有些組織化程度較低的開發人員可能會對這個技巧嗤之以鼻。知道我是怎么做的嗎?我會將每一天我做了什么、遇到的問題以及我是如何解決這些問題的等 等,都詳細地記錄下來。然后當我再次碰到類似的問題時,那就再也不會只能“執手相看淚眼,竟無語凝噎”了。這些筆記成為了我無價的財富,因為我可以運用之 前的經驗和智慧來解決現在的問題。而且要是碰到1對1績效考核時,我也能迅速想起自己為公司所做的貢獻和自己的成就。
10.給第二天做個計劃
要么是下班回家之前,要么是晚上睡覺前,我都會在筆記本中為第二天列個待辦事項列表。這樣,當這一天來臨的時候,我的目標就很明確,知道自己要做什么,專心致志,聚精會神,朝著目標前進。知道嗎,這種方法讓我完成任務的速度更快質量更高,這樣我就有更多的時間休息了。
譯文鏈接:http://www.codeceo.com/article/10-coding-skills.html
英文原文:10 Practical Tips for Software Engineers
翻譯作者:碼農網 – 小峰