本文的作者 paul firth
這篇文章要介紹的,是我作為專業程式設計師這些年來學到的能真正提高我的**質量和整體工作效率的10件事情。
不惜任何代價避免重複的**。如果乙個常用的**片段出現在了程式中的幾個不同地方,重構它,把它放到乙個自己的函式裡。重複的**會導致你的同事在讀你的**時產生困惑。而重複的**如果在乙個地方修改,在另外乙個地方忘記修改,就會產生到處是bug,它還會使你的**體積變得臃腫。現代的程式語言提供了很好的方法來解決這些問題,例如,下面這個問題在以前很難解決,而如今使用lambdas卻很好實現:
///
/// 一些函式含有部分重複**
///
voidoriginala(
)///
/// 另外乙個含有部分重複**的函式
///
voidoriginalb(
)
現在我們重構含有部分相同**的函式,用delegate模式重寫它們:
///
/// encapsulate shared functionality
///
/// user defined action
void
///
/// new implmentation of a
///
voidnewa())
;}///
/// new implementation of b
///
voidnewb())
;}
當你發現自己在瀏覽facebook或微博、而不是在解決問題,這通常是一種你需要短暫休息的訊號。離開辦公桌,去喝一杯咖啡,或去跟同事聊5分鐘。儘管這樣做看起來有點反直覺,但長久去看,它會提高你的工作效率。
當帶著壓力去解決乙個問題或修改乙個bug,你很容易失去自製,發現自己匆匆忙忙,甚至完全忘了一直堅持的重要的測試過程。這通常會導致更多的問題,會讓你在老闆或同事眼裡顯得很不專業。
你知道你的**能做什麼,而且試了一下,它確實好用,但你實際上需要充分的驗證它。分析所有可能的邊界情況,測試在所有可能的條件下它都能如期的工作。如果有引數,傳遞一些預期範圍外的值。傳遞乙個null值。如果可能,讓同事看看你的**,問他們能否弄壞它。單元測試是到達這種目的的常規方法。
提交你的**之前,找個同事一起坐下來,向他解釋你做了哪些修改。通常,這樣做的過程中你就能發現**中的錯誤,而不需要同事說一句話。這比自己審查自己的**要有效的多得多。
如果你發現寫了大量的**來解決乙個簡單的問題,你很可能做錯了。下面的boolean用法是乙個很好的例子:
if(nummines >0)
else
這時你應該寫成這樣:
enabled = nummines >
0;
**越少越好。這會使bug更少,重構可能性更小,出錯的機率更小。要適度。可讀性同等重要,你可不能這樣做而使**喪失可讀性。
優雅的**非常的易讀,只用手邊很少的**、讓機器做很少的運算就能解決問題。在各種環境中都做到**優雅是很難的,但經過一段時間的程式設計,你會對優雅的**是個什麼樣子有個初步的感覺。優雅的**不會通過重構來獲得。當你看到優雅的**是會很高興。你會為它自豪。例如,下面就是乙個我認為是優雅的方式來計算多邊形面積的方法:
staticpublicdoublegetconvexpolygonarea(vector2[
] vertices)
returnarea /2;
}
勿庸置疑,注釋是程式設計中很重要的一部分,但能夠不言自明的**跟勝一籌,因為它能讓你在看**時就能理解它。函式名變數名要慎重選擇,好的變數/方法名字放到語言語義環境中時,不懂程式設計的人都能看懂。例如:
voiddamageplayer(player player,intdamageamount)
}
能自我說明的**不能代替注釋。注釋是用來解釋「為什麼」的,而自我說明的**是來描述「是什麼」的。
直接把數字嵌入**中是一種惡習,因為無法說明它們是代表什麼的。當有重複時更糟糕——相同的數字在**的多個地方出現。如果只修改了乙個,而忘記了其它的。這就導致bug。一定要用乙個命名常量來代表你要表達的數字,即使它在**裡只出現一次。
當做一系列動作時,人類總是喜歡犯錯誤。如果你在做部署工作,並且不是一步能完成的,那你就是在做錯事。盡量的讓工作能自動化的完成,減少人為錯誤。當做工作量很大的任務時,這尤其重要。
當你要去優化乙個已經好用的功能**時,你很有可能會改壞它。優化只能發生在有效能分析報告指示需要優化的時候,通常是在乙個專案開發的最後階段。效能分析之前的優化活動純屬浪費時間,並且會導致bug出現。
好吧,我說是10個,但你卻得到了額外贈送的乙個!
這些就是我要說的,我希望它們能幫助你改進程式設計開發過程。
下次再見!祝快樂!
cheers, paul.
[英文原文:
10 steps to becoming a better programmer ]
10步讓你成為更優秀的程式設計師
1.永遠不要複製 不惜任何代價避免重複的 如果乙個常用的 片段出現在了程式中的幾個不同地方,重構它,把它放到乙個自己的函式裡。重複的 會導致你的同事在讀你的 時產生困惑。而重複的 如果在乙個地方修改,在另外乙個地方忘記修改,就會產生到處是bug,它還會使你的 體積變得臃腫。現代的程式語言提供了很好的...
10步讓你成為更優秀的程式設計師
1.永遠不要複製 不惜任何代價避免重複的 如果乙個常用的 片段出現在了程式中的幾個不同地方,重構它,把它放到乙個自己的函式裡。重複的 會導致你的同事在讀你的 時產生困惑。而重複的 如果在乙個地方修改,在另外乙個地方忘記修改,就會產生到處是bug,它還會使你的 體積變得臃腫。現代的程式語言提供了很好的...
10步讓你成為更優秀的程式設計師
這篇文章要介紹的,是我作為專業程式設計師這些年來學到的能真正提高我的 質量和整體工作效率的10件事情。不惜任何代價避免重複的 如果乙個常用的 片段出現在了程式中的幾個不同地方,重構它,把它放到乙個自己的函式裡。重複的 會導致你的同事在讀你的 時產生困惑。而重複的 如果在乙個地方修改,在另外乙個地方忘...