如何提高編程效率?

感覺自己編碼速度太慢了。而且寫好後總是需要修補很多位置。有什麼方法改善?


在我們之前已經有許多有才華有執行力的人來解決這個問題,所以問題的答案當然也是站在前人的肩膀上。我嘗試過很多提高編程效率的方法和工具,下面是一些現在離開了就非常不爽的東西,另我現在使用windows操作系統。

指導原則:

1.儘可能地用鍵盤而不是滑鼠,儘可能地使用更少的擊鍵次數

2.儘可能地自動化

cygwin

windows下運行的unix的模擬環境。使用好各種工具(find, grep, sed)等可以提升工作效率一個等級,個人覺得這就是類Unix更適合程序員使用的最重要原因。舉個栗子,下面的命令

find -type f -name *.java | xargs sed -i s/[ ]*$//

就可以把當前目錄下後綴名為java的文件的每行後面的空白字元去掉。

clink

幾百kb的樣子,模擬unix命令行的readlines效果,更容易在命令行輸入命令。關於GNU的Readline library各種好用的命令可以自行google。

多桌面軟體

用的是mdesktop,只有兩百多KB,最多10個桌面,使用alt+數字鍵切換到相應桌面,用ctrl+alt+數字鍵把當前窗口移動到相應桌面。

多剪切板軟體

用的是clipx,不到100KB,還是使用系統的ctrl+c和ctrl+v來複制和粘貼,按ctrl+shift+v調出最近10個(這個數字可以配置)複製的內容,用數字鍵或滑鼠選擇一項粘貼。其最近複製的內容保存在文件里,即使重啟操作系統也不會丟失。

一個典型的使用場景為把一個界面中不連續的6段文字複製到另外一個界面,使用方法為在第一個界面連續ctrl+c六次,然後到另外一個界面按六次ctrl+shift+v 6,文字就按照複製的順序粘貼好了。可以省去在不同的上下文之間不停切換。

IDE or 編輯器

用好編輯器或IDE,先說IDE,比較成熟的應算eclipse,visual studio和XCode,每個都有一大堆快捷鍵,把這些快捷鍵用習慣又可以提高效率一個檔次了。我用eclipse比較多,按下ctrl+shift+L就可以查看所有的快捷鍵組合。

然後是編輯器,比較常見的是vim和Emacs。沒用過Emacs,不發表意見,vim學習曲線非常大,但是它估計是對我工作效率提升最猛烈的工具了,開始用得時候每隔一段時間都能發現一些巨好用的命令,這個細說下來都可以再開個話題了。

版本控制系統

使用git,同樣不細說,即便一個人寫程序git這樣的工具也是灰常灰常有用的。

自動化腳本

各種功能copy文件,編譯,壓縮,訪問資料庫等等都需要一些腳本來做,因為我之前寫java較多,所以使用ant比較多,另外根據問題領域可以考慮使用linux shell,perl,python等等。

測試驅動

這是實踐者的經驗,寫測試甚至在最開始寫測試會提高效率可能是有違直覺的,但是如果真正嘗試過幾次應該就明白其好處了,業界對於這方面也有很多書介紹。

代碼生成

編程的工作實際上是把自己的想法表達給計算機的一個過程,但是受限於編程語言的能力,代碼總是在除了想要表達的想法之外還有許多多餘的信息,這使得代碼總是有各個層面上的冗餘度。而作為人寫出來的規則化東西,代碼也有很多很多的公共模式。

而代碼生成就是寫程序來生成這些東西,而自己只用關心真正要表達的想法。還有另外一個方法是DSL(領域特定語言),即對於每個微小領域創造並使用一個專用的語言,例如rails這樣的,而ruby很適合做DSL的母語言。

你說寫好後總是需要修補很多位置,那是正常的,寫程序本來就是一個修修改改的過程嘛。

最後推薦The Productive Programmer這本書,本書的主題就是如何高效地編程,很多東西如多桌面,多剪切板,編輯器都有介紹。


如果只是局限在編碼上討論,我的經驗是:

1.先清楚的設計:敲代碼前,腦袋一定是清晰的業務邏輯,各分支已經清晰在腦袋裡。比較複雜的,先通過畫流程圖明晰思路再動手寫。

2.先寫偽代碼再完善:對於邏輯比較複雜的,可以先把框或者主要邏輯塊寫出來,然後再每塊細化。比如先把各相關類建立起來,介面寫好,再寫每個介面的邏輯實現。

3.代碼先語法review後再啟動編譯 :盡量少寫一點代碼就開始編譯,頻繁依賴編譯器來實現語法的檢查。這種做法很低效。

以上都是猜測,最最重要的其實還是自己多觀察,看看時間都耗費再哪裡,針對問題逐個優化是王道。


上大學的時候老師教的基礎學好,分享的技巧都記好,絕對能提高工作效率,總是在離開學校才發現。

提高工作效率的小經驗,碼農來mark了。

其實每天只有4-5個小時能專心編碼,充分利用這些時間。

在狀態的時候多干一些,不在狀態時可以就去做個大保健。

編碼在狀態,連續幾天加班是很正常的喲。

CPU可以並行,人卻不能,同時干幾件事只能分散你的注意力,程序員務必單核。

如果習慣了晚起床,就這樣吧,你的身體亦會配合你的工作,記得要持之以恆。

給自己的工作設定時間節點,這樣會讓你更專心和高效。

把系統分解,從小的工作做起。

先實現,再優化。做系統時先別整太多「萬一…」,先把功能完成去應付PM。

加班並不是萬能的,提高效率才是正道。

少開會。

專心干一件事,少切換上下文。溝通,設計,編碼,測試等切換隻會降低效率。

劃分事情的緊急優先程度,先把線上bug解決。

某件事別人能至少做到八成,就授權給他吧!

別扯過去的輝煌,做好手頭的工作。

多記。

過年了,就別再背電腦回家。


決定編程效率的是知識儲備,不是你用了什麼工具


解決方法就兩點,一是多寫,二是每個helloworld都當作OS來寫。


韓帥 從寫代碼的角度詳細的解答了問題。 我們都知道編碼是為了完成一件事情,也是有一個分析-&>設計-&>寫代碼-&>測試 的過程(TDD調整了步驟),寫代碼占其中25%~50%這樣的時間。

寫代碼上先熟悉語言、演算法、現成的函數庫、所運行的操作系統、各模塊的API。

設計上熟悉設計模式,典型 時序圖、模塊圖。

分析上熟悉需求分析的方法。

熟悉一種系統測試的方法,一種單步跟蹤的方法。

接著每天寫,每天悟。


理解需求,發現隱藏需求,確認需求。

需求需求需求。這點沒有搞好,談編程效率。。。。。有點偏了。


程序寫了這麼多年,自以為已經是個老手了,但實際量化了一下才發現,生產的速度其實是很低下的。經過痛苦的思索之後,我找到了原因,自己老了,思維能力下降。這不可避免地引起了吃青春飯的行業共有的恐慌,年老珠黃,心生凄涼。我發現可能面臨了一個危機,靠青春力的編程方式把我引到了陷阱中。而這已經顯然難以為繼,那就是愉快編程!又稱為任性編程!

我總是回憶起少年郎時候,吃飯必吃紅燒肉,中午吃完,晚上再來,然而依然身材勻稱,穿褲子必須要勒皮帶。

你具備了統籌一個大系統的能力的同時,你失去了快速重複造輪子的力量。

所以:

1、在基本框架和基礎功能單元構建的過程中,思考是最浪費時間,減少腦力思考,多採用成熟模塊,趕快動手最重要。因為細節思考容易錯,且不靠譜。

2、新解決方案模塊,盲目干基本上就是在破壞了原有穩定的基礎之上,創造更多更複雜的問題。這個時候要捨得花時間思考,畫流程圖,畫模塊關係圖,畫任何你能保證一眼看到基礎要素的圖。

3、思維劃分。每個人工作思維的寬度不同,縱深迭代程度不同。代碼劃分為自己思維能控制住的範圍內。不要貪大,貪大就混淆,就會增加錯誤率。了解自己的能力,找到最適合自己的尺度。


推薦閱讀:

Chrome Tips #3:如何讓每個標籤頁自動打開 Dev Tools
做好這21個細節,他戰勝了癌症,成為六百萬暢銷書作家
作為一個日常裸妝出門的女生,從起床到出門要多長時間?

TAG:編程 | 效率 | 思維方式 |