超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

10步讓你成為更優(yōu)秀的程序員

admin
2012年12月30日 23:48 本文熱度 4038

這篇文章要介紹的,是我作為專業(yè)程序員這些年來學(xué)到的能真正提高我的代碼質(zhì)量和整體工作效率的10件事情。


1. 永遠不要復(fù)制代碼


不惜任何代價避免重復(fù)的代碼。如果一個常用的代碼片段出現(xiàn)在了程序中的幾個不同地方,重構(gòu)它,把它放到一個自己的函數(shù)里。重復(fù)的代碼會導(dǎo)致你的同事在讀你的代碼時產(chǎn)生困惑。而重復(fù)的代碼如果在一個地方修改,在另外一個地方忘記修改,就會產(chǎn)生到處是bug,它還會使你的代碼體積變得臃腫?,F(xiàn)代的編程語言提供了很好的方法來解決這些問題,例如,下面這個問題在以前很難解決,而如今使用lambdas卻很好實現(xiàn):



///<summary>


/// 一些函數(shù)含有部分重復(fù)代碼


///</summary>


void OriginalA()


{


DoThingsA();


// unique code


DoThingsB();


}


///<summary>


/// 另外一個含有部分重復(fù)代碼的函數(shù)


///</summary>


void OriginalB()


{


DoThingsA();


// 沒有重復(fù)的代碼


DoThingsB();


}


現(xiàn)在我們重構(gòu)含有部分相同代碼的函數(shù),用delegate模式重寫它們:



///<summary>


/// Encapsulate shared functionality


///</summary>


///User defined action


void UniqueWrapper(Action action)


{


DoThingsA();


action();


DoThingsB();


}


///<summary>


/// New implmentation of A


///</summary>


void NewA()


{


UniqueWrapper(() =>


{


// unique code


});


}


///<summary>


/// New implementation of B


///</summary>


void NewB()


{


UniqueWrapper(() =>


{


// unique code


});


}


2. 留意你開始分心的時候


當(dāng)你發(fā)現(xiàn)自己在瀏覽facebook或微博、而不是在解決問題,這通常是一種你需要短暫休息的信號。離開辦公桌,去喝一杯咖啡,或去跟同事聊5分鐘。盡管這樣做看起來有點反直覺,但長久去看,它會提高你的工作效率。


3. 不要匆忙趕任務(wù)而放棄原則


當(dāng)帶著壓力去解決一個問題或修改一個bug,你很容易失去自制,發(fā)現(xiàn)自己匆匆忙忙,甚至完全忘了一直堅持的重要的測試過程。這通常會導(dǎo)致更多的問題,會讓你在老板或同事眼里顯得很不專業(yè)。


4. 測試你完成的代碼


你知道你的代碼能做什么,而且試了一下,它確實好用,但你實際上需要充分的驗證它。分析所有可能的邊界情況,測試在所有可能的條件下它都能如期的工作。如果有參數(shù),傳遞一些預(yù)期范圍外的值。傳遞一個null值。如果可能,讓同事看看你的代碼,問他們能否弄壞它。單元測試是到達這種目的的常規(guī)方法。


5. 代碼審查


提交你的代碼之前,找個同事一起坐下來,向他解釋你做了哪些修改。通常,這樣做的過程中你就能發(fā)現(xiàn)代碼中的錯誤,而不需要同事說一句話。這比自己審查自己的代碼要有效的多得多。


6. 讓代碼更少


如果你發(fā)現(xiàn)寫了大量的代碼來解決一個簡單的問題,你很可能做錯了。下面的boolean用法是一個很好的例子:



if (numMines > 0)


{


enabled=true;


}


else


{


enabled=false;


}


這時你應(yīng)該寫成這樣:



enabled = numMines > 0;


代碼越少越好。這會使bug更少,重構(gòu)可能性更小,出錯的幾率更小。要適度??勺x性同等重要,你可不能這樣做而使代碼喪失可讀性。


7. 為優(yōu)雅的代碼而努力


優(yōu)雅的代碼非常的易讀,只用手邊很少的代碼、讓機器做很少的運算就能解決問題。在各種環(huán)境中都做到代碼優(yōu)雅是很難的,但經(jīng)過一段時間的編程,你會對優(yōu)雅的代碼是個什么樣子有個初步的感覺。優(yōu)雅的代碼不會通過重構(gòu)來獲得。當(dāng)你看到優(yōu)雅的代碼是會很高興。你會為它自豪。例如,下面就是一個我認為是優(yōu)雅的方式來計算多邊形面積的方法:



static public double GetConvexPolygonArea(Vector2[] vertices)


{


double area = 0;


for (int i = 0; i < vertices.Length; i++)


{


Vector2 P0 = vertices[i];


Vector2 P1 = vertices[(i + 1) % vertices.Length];


area += P0.Wedge(P1);


}


return area / 2;


}


8. 編寫不言自明的代碼


勿庸置疑,注釋是編程中很重要的一部分,但能夠不言自明的代碼跟勝一籌,因為它能讓你在看代碼時就能理解它。函數(shù)名變量名要慎重選擇,好的變量/方法名字放到語言語義環(huán)境中時,不懂編程的人都能看懂。例如:



void DamagePlayer(Player player, int damageAmount)


{


if (!player.m_IsInvincible && !player.m_IsDead)


{


player.InflictDamage( damageAmount );


}


}


能自我說明的代碼不能代替注釋。注釋是用來解釋“為什么”的,而自我說明的代碼是來描述“是什么”的。


9. 不要使用純數(shù)字


直接把數(shù)字嵌入代碼中是一種惡習(xí),因為無法說明它們是代表什么的。當(dāng)有重復(fù)時更糟糕——相同的數(shù)字在代碼的多個地方出現(xiàn)。如果只修改了一個,而忘記了其它的。這就導(dǎo)致bug。一定要用一個命名常量來代表你要表達的數(shù)字,即使它在代碼里只出現(xiàn)一次。


10. 不要做手工勞動


當(dāng)做一系列動作時,人類總是喜歡犯錯誤。如果你在做部署工作,并且不是一步能完成的,那你就是在做錯事。盡量的讓工作能自動化的完成,減少人為錯誤。當(dāng)做工作量很大的任務(wù)時,這尤其重要。


11. 避免過早優(yōu)化


當(dāng)你要去優(yōu)化一個已經(jīng)好用的功能代碼時,你很有可能會改壞它。優(yōu)化只能發(fā)生在有性能分析報告指示需要優(yōu)化的時候,通常是在一個項目開發(fā)的最后階段。性能分析之前的優(yōu)化活動純屬浪費時間,并且會導(dǎo)致bug出現(xiàn)。


好吧,我說是10個,但你卻得到了額外贈送的一個!


這些就是我要說的,我希望它們能幫助你改進編程開發(fā)過程。


本文英文原文鏈接:10 steps to becoming a better programmer


該文章在 2012/12/30 23:48:24 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved