程序員修煉之道----從小工到專家(參考指南)

其實(shí)不只是說程序員的修煉之道浑玛,也是人生的修煉之道。

1、Care Abort Your Craft關(guān)心你的技藝

如果你不在乎能否漂亮的開發(fā)出軟件全蝶,你又何必要耗費(fèi)生命去開發(fā)軟件呢德迹?
要深入的了解你所使用的技術(shù)弦赖。要知其然知其所以然。

2浦辨、Think! Abort Your Work思考蹬竖!你的工作

關(guān)掉自動(dòng)駕駛儀,接管操作流酬,不斷地批評(píng)和評(píng)估你的工作

3币厕、Provide Options, Don't Make Lame Excuses提供各種選擇,不要找蹩腳的借口

提供各種選擇芽腾,而不是找借口旦装,不要說事情做不到 ,說明做到了什么摊滔。

4阴绢、Don't Live with Broken Windows不要容忍破窗戶

當(dāng)你看到糟糕的設(shè)計(jì)、錯(cuò)誤的決策或者不好的代碼時(shí)艰躺,修正他們

5呻袭、Be a Catalyst for Change做變化的催化劑

你不能強(qiáng)迫人們改變,想法腺兴,你要向他們展示未來可能會(huì)怎樣左电,并幫助他們參與對(duì)未來的創(chuàng)造

6、Remember the Big Picture記住大圖景

不要太過專注于細(xì)節(jié),以致忘了查看你周圍正在發(fā)生什么

7篓足、Make Quality a Requirements Issue使質(zhì)量成為需求問題

讓你的用戶參與確定項(xiàng)目真正的質(zhì)量需求

8段誊、Invest Regularly in Your Knowledge Portfolio定期為你的只是資產(chǎn)投資

讓學(xué)習(xí)成為習(xí)慣

9、Critically Analyze What You Read and Hear批評(píng)地分析你讀到的和聽到的

不要被供應(yīng)商栈拖、媒體炒作或教條左右连舍。要依照你自己的看法和你項(xiàng)目的情況去對(duì)信息進(jìn)行分析

10、It's Both What You Say and the Way You Say It你說什么和你怎么說同樣重要

如果你不能有效地向他人傳達(dá)你的了不起的想法涩哟,這些想法毫無用處

11索赏、DRY --- Don't Repeat Yourself不要重復(fù)你自己

系統(tǒng)中的每一項(xiàng)知識(shí)都必須具有單一、無歧義染簇、權(quán)威的表示

12参滴、Make It Easy to Reuse讓復(fù)用變得容易

如果復(fù)用很容易,人們就會(huì)去復(fù)用锻弓,創(chuàng)造一個(gè)支持復(fù)用的環(huán)境

13砾赔、Eliminate Effects Between Unrelated Things消除無關(guān)事物之間的影響

設(shè)計(jì)自足、獨(dú)立青灼、并具有單一暴心、良好定義的目的的組件

14、There Are No Final Decisions不存在最終決策

沒有決策時(shí)澆鑄在石頭上的杂拨,想法专普,要把每項(xiàng)決策都視為是寫在沙灘上的,并為變化做好計(jì)劃

15弹沽、Use Tracer Bullets to Find the Target用曳光彈找到目標(biāo)

曳光彈能通過試驗(yàn)各種事物并檢查它們離目標(biāo)有多遠(yuǎn)來讓你追蹤目標(biāo)

16檀夹、Prototype to Leam為了學(xué)習(xí)而制作原型

原型制作是一種學(xué)習(xí)經(jīng)驗(yàn),其價(jià)值并不在于所產(chǎn)生的代碼策橘,而在于所學(xué)到的經(jīng)驗(yàn)教訓(xùn)

17炸渡、Program Close to the Problem domain 靠近問題領(lǐng)域編程**)

用你的用戶的語言進(jìn)行設(shè)計(jì)和編碼

18、Estimate to Avoid Surprises估算丽已,以避免發(fā)生意外

在著手之前先進(jìn)行估算蚌堵,你將提前發(fā)現(xiàn)潛在的問題

19、Iterate the Schedule with the Code通過代碼對(duì)進(jìn)度表進(jìn)行迭代

用你在進(jìn)行實(shí)現(xiàn)時(shí)獲得的經(jīng)驗(yàn)提煉項(xiàng)目的時(shí)間標(biāo)度

20沛婴、Keep Knowledg in Plain Text用純文本保存知識(shí)

純文本不會(huì)過時(shí)吼畏,它能夠幫助你有效利用你的工作,并簡化調(diào)試和測(cè)試嘁灯。

21泻蚊、Use the Power of Command Shells利用命令shell的力量

當(dāng)圖形用戶界面無能為力時(shí)使用shell

22、Use a Single Editor Well用好一種編輯器

編輯器應(yīng)該是你的手的延伸旁仿,確保你的編輯器是可配置藕夫,可擴(kuò)展和可編程的

23孽糖、Always Use Source Code Control總是使用源碼控制

源碼控制是你的工作的時(shí)間機(jī)器-----你能夠回到過去

24枯冈、Fix the Problem毅贮,Not the Blame要修正問題,而不是發(fā)出指責(zé)

Bug 是你的過錯(cuò)還是別人的過錯(cuò)尘奏,并不是真的很有關(guān)系-----它仍然是你的問題滩褥,他仍然需要修正

25、Don't Panic When Debuging調(diào)試時(shí)不要慌張

做一次深呼吸炫加,思考什么可能是bug的原因

26瑰煎、“”Select“ Isn't Broken”"Select"沒有問題

在OS或者編譯器,甚或是第三方產(chǎn)品或庫中很少發(fā)現(xiàn)bug,bug可能在應(yīng)用中

27俗孝、Don't Assume It ---Prove It不要假定酒甸,要證明

在實(shí)際環(huán)境中,使用真正的數(shù)據(jù)和邊界條件赋铝,證明你的假定

28插勤、Learn a Text manipulation Language學(xué)習(xí)一種文本操作語言

你每天的很大一部分時(shí)間處理文本,為什么不讓計(jì)算機(jī)替你完成部分工作呢革骨?

29农尖、Write Code That Writes Code編寫能編寫代碼的代碼

代碼生成器能提高你的生成率,并有助于避免重復(fù)

30良哲、You Can't Write Perfect Software你不可能寫出完美的軟件

軟件不可能完美盛卡,保護(hù)你的代碼和用戶。使他們免于能夠預(yù)見的錯(cuò)誤

31滑沧、Design With Contracts通過合約進(jìn)行設(shè)計(jì)

使用合約建立文檔,并檢驗(yàn)代碼所做的事情證號(hào)是她聲明要做的

32巍实、Crash Early早崩潰

死程序造成的危害通常比有問題的程序要小的多

33滓技、Use Assertions to Pervent the Impossible用斷言避免不可能發(fā)生的事情

斷言驗(yàn)證你的各種假定,在一個(gè)不確定的世界里蔫浆,用斷言保護(hù)你的代碼

34殖属、Use Exceptions for Exceptional Problems將異常用于異常的問題

異常可能會(huì)遭受經(jīng)典的意大利面條式的所有可讀性和可維護(hù)性問題的折磨瓦盛。將異常保留給異常的事物

35洗显、Finish What You Start要有始有終

只要可能,分配某資源的例程或?qū)ο笠矐?yīng)該負(fù)責(zé)接觸其分配

36原环、Minimize Coupling Between Modules使模塊之間的耦合減至最少

通過編寫“羞怯的”代碼并應(yīng)用德墨忒爾法則來避免耦合

37挠唆、Configure, Don't Integrate要配置,不要集成

要將應(yīng)用得各種技術(shù)選擇實(shí)現(xiàn)為配置選項(xiàng)嘱吗,而不是通過集成或工程方法實(shí)現(xiàn)

38玄组、Put Abstactions in Code ,Details in Metadata將抽象放進(jìn)代碼滔驾,細(xì)節(jié)放進(jìn)元數(shù)據(jù)

為一般情況編程,將細(xì)節(jié)放在被編譯的代碼庫之外

39俄讹、Analyze Workflow to Improve Concurrency分析工作流哆致,以改善并發(fā)性

利用你的用戶的工作流中的并發(fā)性

40、Design Using Services用服務(wù)進(jìn)行設(shè)計(jì)

根據(jù)服務(wù)(獨(dú)立的患膛,良好定義摊阀,一致的接口之后的并發(fā)對(duì)象)進(jìn)行設(shè)計(jì)

41、Always Design for Concurrency總是為并發(fā)進(jìn)行設(shè)計(jì)

容許并發(fā)踪蹬,你將會(huì)設(shè)計(jì)出更整潔胞此,具備更少假定的接口

42、Separate Views from Models使視圖與模型分離

要根據(jù)模型和視圖設(shè)計(jì)你的應(yīng)用跃捣,從而以低廉的代碼獲取靈活性

43漱牵、Use Blackboards to Coordinate Workflow用黑板協(xié)調(diào)工作流

用黑板協(xié)調(diào)完全不同的實(shí)施和因素,同時(shí)又使各參與方保持獨(dú)立和隔離

44疚漆、Don't Program by Coincidence不要靠巧合編程

之一開可靠的事物酣胀,注意偶發(fā)的復(fù)雜性,不要把幸運(yùn)的巧合與有目的的計(jì)劃混為一談

45愿卸、Estimate the Order of Your Algorithms估算你的算法的階

在你編寫代碼之前灵临,先大致估算事情需要多長時(shí)間

46、Test Your Estimates測(cè)試你的估算

對(duì)算法的數(shù)學(xué)分析并不會(huì)告訴你每一件事情趴荸,在你的代碼的目標(biāo)環(huán)境中測(cè)定它的速度

47儒溉、Refactor Early,Refactor Often早重構(gòu),常重構(gòu)

就和你會(huì)在花園里除草发钝,并重新布置一樣顿涣,在需要時(shí)對(duì)代碼進(jìn)行重寫,重做和重新架構(gòu)酝豪,要鏟除問題的根源

48涛碑、Design to Test為測(cè)試而設(shè)計(jì)

在你還沒有編寫代碼時(shí)就開始思考測(cè)試問題

49、Test Your Software ,or Your Users Will測(cè)試你的軟件孵淘,否則你的用戶就得測(cè)試

無情的測(cè)試蒲障,不要讓你的用戶為你查找Bug

50、Don't Use Wizard Code You Don't Understand不要使用你不理解的向?qū)Тa

向?qū)Э梢陨纱罅看a瘫证,在你把他們合并進(jìn)你的項(xiàng)目之前揉阎,確保你理解全部這些代碼

51、Don't Gather Requirements ----Dig for Them不要搜集需求----挖掘它們

需求很少存在于表面上背捌,它們深深地埋藏在層層假定毙籽、誤解和政治手段的下面

52、Work with a User to Think Like a User與用戶一同工作毡庆,以像用戶一樣思考

要了解系統(tǒng)實(shí)際上將如何被使用坑赡,這是最好的方法

53烙如、Abstractions Live Longer than Details抽象比細(xì)節(jié)活得更長久

“投資”于抽象,而不是實(shí)現(xiàn)毅否,抽象能在來自不同的實(shí)現(xiàn)和新技術(shù)的變化“攻擊”之下存活下去

54亚铁、Use a Project Glossary使用項(xiàng)目詞匯表

創(chuàng)建并維護(hù)項(xiàng)目中使用的專用術(shù)語和詞匯的單一信息源

55、Don't Thank Outside the Box --- Find the Box不要在盒子外面思考----要找到盒子

在遇到不可能解決的問題時(shí)搀突,要確定真正的約束刀闷,問問自己:“它必須以這種方式完成嗎熊泵?它真的必須完成嗎仰迁?”

56、Start When You're Ready等你準(zhǔn)備好再開始

你的一生都在積累經(jīng)驗(yàn)顽分,不要忽視反復(fù)出現(xiàn)的疑慮

57徐许、Some Things Are Better Done than Described對(duì)有些事情“做”勝于“描述”

不要掉進(jìn)規(guī)范的螺旋。在某個(gè)時(shí)刻卒蘸,你需要開始編碼

58雌隅、Don't Be Slave to Formal Methods不要做形式方法的奴隸

如果你沒有把某項(xiàng)技術(shù)放進(jìn)你的開發(fā)實(shí)踐和能力的語境中,不要盲目的采用它

59缸沃、Costly Tools Don't Produce Better Designs昂貴的工具不一定能制作出更好的設(shè)計(jì)

小心供應(yīng)商的炒作恰起,行業(yè)教條,以及價(jià)格標(biāo)簽的誘惑趾牧,要根據(jù)工具的價(jià)值判斷它們检盼。

60、Organize Teams Around Functionality圍繞功能組織團(tuán)隊(duì)

不要把設(shè)計(jì)師與編碼員分開翘单,也不要把測(cè)試員與數(shù)據(jù)建模員分開吨枉,按照你構(gòu)建代碼的方式構(gòu)建團(tuán)隊(duì)

61、Don't Use Manual Procedures不要使用手工流程

shell 腳本或批文件會(huì)一次次地以同一順序執(zhí)行同樣的指令

62哄芜、Test Early.Test Often.Test Automatically早測(cè)試貌亭,常測(cè)試,自動(dòng)測(cè)試

與呆在書架上的測(cè)試計(jì)劃相比认臊,每次構(gòu)建時(shí)運(yùn)行的測(cè)試要有效得多

63圃庭、Coding Ain't Done.Til All the Tests Run 要通過全部測(cè)試,編碼才算完成**)

所有的代碼都需要測(cè)試一遍失晴,才能算完成了編碼

64剧腻、Use Saboteurs to Test Your Testing 通過“蓄意破壞”測(cè)試你的測(cè)試**)

在單獨(dú)的軟件副本上故意引入Bug,以檢驗(yàn)測(cè)試能夠抓住它們。

65师坎、Test State Coverage,Not Code coverage測(cè)試狀態(tài)覆蓋恕酸,而不是代碼覆蓋

確定并測(cè)試重要的程序狀態(tài),只是測(cè)試代碼行是不夠的胯陋。

66蕊温、Find Bug Once一個(gè)Bug只抓一次

一旦測(cè)試員找到一個(gè)bug,這應(yīng)該是測(cè)試員最后一次找到它袱箱。伺候自動(dòng)測(cè)試應(yīng)該對(duì)其進(jìn)行檢查

67、English is Just a Programming Language陰雨就是一種編程語言

像你編寫代碼一樣編寫文檔义矛,遵守DRY原則发笔,使用元數(shù)據(jù)、MVC凉翻、自動(dòng)生成等等

68了讨、Build Documentation In, Don't Bolt It On把文檔建在里面,不要拴在外面

與代碼分離的文檔不太可能被修正和更新

69制轰、Gently Exceed Your Users' Expectations溫和地超出用戶的期望

要理解你的用戶的期望前计,然后給他們的東西要多那么一點(diǎn)。

70垃杖、Sign Your Work在你的作品上簽名

過去時(shí)代的受益人為能在他們的作品上簽名而自豪男杈、你也應(yīng)該如此

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市调俘,隨后出現(xiàn)的幾起案子伶棒,更是在濱河造成了極大的恐慌,老刑警劉巖彩库,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肤无,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡骇钦,警方通過查閱死者的電腦和手機(jī)宛渐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來司忱,“玉大人皇忿,你說我怎么就攤上這事√谷裕” “怎么了鳍烁?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長繁扎。 經(jīng)常有香客問我幔荒,道長,這世上最難降的妖魔是什么梳玫? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任爹梁,我火速辦了婚禮,結(jié)果婚禮上提澎,老公的妹妹穿的比我還像新娘姚垃。我一直安慰自己,他們只是感情好盼忌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布积糯。 她就那樣靜靜地躺著掂墓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪看成。 梳的紋絲不亂的頭發(fā)上君编,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音川慌,去河邊找鬼吃嘿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛梦重,可吹牛的內(nèi)容都是我干的兑燥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼忍饰,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼贪嫂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起艾蓝,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斗塘,沒想到半個(gè)月后赢织,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馍盟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年于置,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贞岭。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡八毯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瞄桨,到底是詐尸還是另有隱情话速,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布芯侥,位于F島的核電站泊交,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏柱查。R本人自食惡果不足惜廓俭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望唉工。 院中可真熱鬧研乒,春花似錦、人聲如沸淋硝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至橄唬,卻和暖如春赋焕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仰楚。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國打工隆判, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人僧界。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓侨嘀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捂襟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咬腕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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