有效編程的14件事

1. 計(jì)劃

所謂plan,其實(shí)就是對(duì)于編程中的“設(shè)計(jì)”階段徐裸,當(dāng)然女器,這里的plan并不像設(shè)計(jì)那樣重量級(jí)诀蓉。它要求我們程序員在正式編程錢最少要考慮一下下面的問(wèn)題:

  • 你這個(gè)程序,工具或是項(xiàng)目的目的癣漆,究竟是用來(lái)干什么的维咸。你只有知道做什么,要達(dá)到什么樣的目的扑媚,你才能做得好腰湾,做得對(duì)。
  • 需要有什么樣的功能疆股。需要你給出來(lái)個(gè)功能表费坊。這樣可以保證我們不會(huì)遺漏了什么。
  • 準(zhǔn)備好一些技術(shù)難題的前期調(diào)查和解決方案旬痹。不要等到開(kāi)始編程的時(shí)候才去想附井。

下面是你因?yàn)橛小皃lan”而得到的好處:

  • 你能夠清楚地明白你要做的東西長(zhǎng)什么樣?
  • 你能清楚知道你要開(kāi)發(fā)的東西要干些什么事两残?
  • 你能夠在開(kāi)發(fā)工程中解決你所有可能發(fā)生的難題永毅。

2. 使用偽代碼

偽代碼是一個(gè)非常不錯(cuò)的方式,讓你可以看到你要寫得程序長(zhǎng)什么樣人弓?
一些人并不喜歡偽代碼沼死,因?yàn)樗麄儾⒉幌喟淹瑯拥拇a寫兩遍,一遍是偽代碼崔赌,一遍是真代碼意蛀。其實(shí),這是可以理解的健芭,因?yàn)閮蓚€(gè)copy的東西是比較不好維護(hù)的县钥。但是我想,這是可以權(quán)衡的慈迈,如果的算法很簡(jiǎn)單若贮,那么就不需要偽代碼了,如果你的算法比較復(fù)雜,比較繞谴麦,那么蠢沿,有一個(gè)偽代碼提綱挈領(lǐng)將會(huì)是一件非常不錯(cuò)的事情细移,因?yàn)樗欣谧寗e人從一個(gè)簡(jiǎn)單的文檔來(lái)了解一個(gè)復(fù)雜的算法或系統(tǒng)搏予。這就好像一個(gè)電線的布線圖一樣,你可以很容易地通過(guò)一個(gè)簡(jiǎn)單的文檔從復(fù)雜的實(shí)現(xiàn)中找到頭緒弧轧。

3. 書寫清楚的注釋

請(qǐng)?jiān)谀愕拇a中書寫清楚的程序注釋。當(dāng)然碗殷,注釋不是越多越好精绎,注釋應(yīng)該是簡(jiǎn)明扼要的,如果你的程序足夠地清楚簡(jiǎn)單锌妻,那么注釋就會(huì)顯的多余代乃。另外,注釋應(yīng)該是注釋“原因仿粹,理由搁吓,目的”,而不是注釋“是什么”吭历。

4. 使用自動(dòng)的編輯工具

自動(dòng)的編輯工具有很多堕仔,比如 Typinator,這是一個(gè)可以通過(guò)設(shè)定一些替代的簡(jiǎn)單代碼來(lái)實(shí)現(xiàn)重復(fù)語(yǔ)句的快捷插入晌区,比如你自己的簽名摩骨、常用的語(yǔ)句等等,通過(guò)它可以設(shè)定替代的簡(jiǎn)短代碼朗若。還有其它一些代碼自動(dòng)完成的工具恼五,比如一些VC的插件,還有像Source Insight這樣的東西哭懈。別小看這一點(diǎn)點(diǎn)時(shí)間灾馒,如果你每天都在寫代碼的話,今天一點(diǎn)點(diǎn)遣总,明天一點(diǎn)點(diǎn)睬罗,將會(huì)為你省出很多的時(shí)間。

5. 減少代碼

減少代碼的數(shù)量彤避,堅(jiān)持DRY(Don’t Repeat Yourself) 和KISS(Keep It Simple & Stupid) 原則傅物。這樣可以有交物減少代碼的復(fù)雜度,提高程序的易讀性和可維護(hù)性琉预,同時(shí)也能增加代碼的質(zhì)量

6. 代碼重用

DRY (don’t repeat yourself) 原則就是告訴我們需要重用現(xiàn)有的代碼董饰。這樣,你才能夠站在巨人的肩膀之上,從而可以更多的關(guān)注和自己所要處理業(yè)務(wù)的邏輯卒暂。編程的最高境界就是寫出來(lái)的代碼是可能被重用的啄栓,重用和泛型這是編程里始終在追求的目標(biāo)。

7. 代碼重構(gòu)

一些老的代碼可能已經(jīng)不合時(shí)宜了也祠,比較以前老的C++的STL庫(kù)在多線程下可能會(huì)出現(xiàn)很多問(wèn)題昙楚。所以,我們自己的代碼也是一樣的诈嘿,每過(guò)一段時(shí)間堪旧,我們需要把這些代碼回收再利用,這就是軟件的重構(gòu)奖亚。重構(gòu)代碼所追求的并不是要提供更多的功能淳梦,而是讓老的代碼更有生命力,讓老的代碼跟上時(shí)代昔字,更具擴(kuò)展性爆袍,靈活性。

8. 使用設(shè)計(jì)模式

設(shè)計(jì)模式是一種從代碼級(jí)解決某一些問(wèn)題的方法論作郭。這個(gè)世界上有很多很多的設(shè)計(jì)模式陨囊,比如MVC,單實(shí)例夹攒,工廠蜘醋,觀察者等等,等等芹助。使用好的設(shè)計(jì)模式可以讓你的代碼更具重用和擴(kuò)展性堂湖。

9. 使用程序框架Framework

Frameworks 是一份給程序員的禮物,他們幫助你完成了很多很細(xì)節(jié)的事情状土,他們有可能是一個(gè)lib庫(kù)无蜂,你需要進(jìn)行簡(jiǎn)單的拼裝,一個(gè)幾乎完成了的軟件框架就已形成蒙谓。這是一個(gè)能夠給開(kāi)發(fā)工作提速的東西斥季。只要上網(wǎng)隨便搜一搜,你可以看到太多太多的框架了累驮。形形色色酣倾,幾乎都是開(kāi)源社區(qū)貢獻(xiàn)的。

10. 泛型編程

如果抽像出一些程序中相似的東西谤专,然后把這些相似的東西用一個(gè)標(biāo)準(zhǔn)的東西實(shí)現(xiàn)躁锡,這也是編程所追求的最高境界之一,像諸如C++中的STL之類的東西就是此類東西的最佳體現(xiàn)置侍。靈活之及映之,幾乎都快放之四海皆準(zhǔn)了拦焚。

11. 使用開(kāi)源的代碼

這個(gè)世界上有太多太多開(kāi)源的代碼了。學(xué)會(huì)利用他們可以讓你更節(jié)省時(shí)間和精力杠输,因?yàn)槲覀兺耆珱](méi)有必要把相當(dāng)?shù)臇|西實(shí)現(xiàn)若干次赎败,學(xué)會(huì)使用開(kāi)源的代碼不但是一個(gè)學(xué)習(xí)的過(guò)程,同樣也是一個(gè)增加編程效率的事情蠢甲。

12. 完善開(kāi)發(fā)環(huán)境

開(kāi)發(fā)環(huán)境非常重要僵刮,因?yàn)楹玫拈_(kāi)發(fā)環(huán)境可以讓你事倍功半。他們可以讓你不需要關(guān)注別的東西鹦牛,比如搞糕,我曾看過(guò)某程序員在調(diào)整編輯器的字體和高亮上花費(fèi)了不少工夫。是的能岩,這是值得肯定了寞宫,只有把開(kāi)發(fā)環(huán)境變得舒服,才能讓自己更好的編程拉鹃。

13. 使用調(diào)試器

學(xué)會(huì)使用調(diào)試器來(lái)調(diào)試代碼,單步跟蹤鲫忍,變量值跟蹤膏燕,內(nèi)存,堆棧等等悟民。熟練地使用調(diào)試器可以讓你更好的查找程序的問(wèn)題坝辫,以得到最優(yōu)的代碼。

14. 使用版本管理工具

版本管理工具應(yīng)該是任何程序員都應(yīng)該要去學(xué)會(huì)使用的東西射亏,特別在一個(gè)團(tuán)隊(duì)中近忙,如何管理程序的不同版本,如何維護(hù)智润,存放代碼及舍,版本管理工具絕對(duì)是開(kāi)發(fā)過(guò)程中不可少的東西。其意義絕對(duì)不只代碼備份和共享那么簡(jiǎn)單窟绷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锯玛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兼蜈,更是在濱河造成了極大的恐慌攘残,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件为狸,死亡現(xiàn)場(chǎng)離奇詭異歼郭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)辐棒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門病曾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)牍蜂,“玉大人,你說(shuō)我怎么就攤上這事知态〗堇迹” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵负敏,是天一觀的道長(zhǎng)贡茅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)其做,這世上最難降的妖魔是什么顶考? 我笑而不...
    開(kāi)封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮妖泄,結(jié)果婚禮上驹沿,老公的妹妹穿的比我還像新娘。我一直安慰自己蹈胡,他們只是感情好渊季,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著罚渐,像睡著了一般却汉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荷并,一...
    開(kāi)封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天合砂,我揣著相機(jī)與錄音,去河邊找鬼源织。 笑死翩伪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谈息。 我是一名探鬼主播缘屹,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼黎茎!你這毒婦竟也來(lái)了囊颅?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤傅瞻,失蹤者是張志新(化名)和其女友劉穎踢代,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗅骄,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胳挎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溺森。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慕爬。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窑眯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出医窿,到底是詐尸還是另有隱情磅甩,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布姥卢,位于F島的核電站卷要,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏独榴。R本人自食惡果不足惜僧叉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望棺榔。 院中可真熱鬧瓶堕,春花似錦、人聲如沸症歇。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忘晤。三九已至题画,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間德频,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工缩幸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留壹置,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓表谊,卻偏偏與公主長(zhǎng)得像钞护,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子爆办,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容