《程序員修煉之道——從小工到專家》摘要

要提供各種選擇您市,而不是找借口。不要說事情做不到役衡;要說明能夠做什么來挽回局面茵休。必須把代碼扔掉?給他們講授重構的價值手蝎。

一扇破窗戶榕莺,只要有那么一段時間不修理,就會漸漸給建筑的居民帶來一種廢棄感——一種職權部門不關心這座建筑的感覺棵介。于是又一扇窗戶破了钉鸯。人們開始亂扔垃圾。出現了亂涂亂畫邮辽。嚴重的結構開始損壞開始了唠雕。在相對較短的一段時間里,建筑就被損毀得超出了業(yè)主愿意修理的程度吨述,而廢棄感變成了現實岩睁。

如果你發(fā)現自己在有好些破窗戶的項目里工作,會很容易產生這樣的想法:“這些代碼的其余部分也是垃圾揣云,我只要照著做就行了捕儒。”

大多數人都以為維護是在應用發(fā)布時開始的邓夕,維護就意味著修正bug和增強特性刘莹。我們認為這些人錯了。程序員須持續(xù)不斷地維護焚刚。

系統(tǒng)中的每一項知識都必須具有單一点弯、無歧義、權威的表示汪榔。

注釋將不可避免地變得過時蒲拉,而不可信任的注釋比完全沒有注釋更糟。

處理這個問題的最佳方式是鼓勵開發(fā)者相互進行主動的交流痴腌。

你不是在窺探——你是在向他們學習雌团。

養(yǎng)成不斷地批判對待自己的代碼的習慣。尋找任何重新進行組織士聪、以改善其結構和正交性的機會锦援。

如果在代碼中有著糟糕的封裝、高度耦合以及硬編碼的邏輯或參數剥悟,事情也許就是不可能的灵寺。

發(fā)現了他人的bug之后,你可以花費時間和精力去指責讓人厭惡的肇事者区岗。在有些工作環(huán)境中略板,這是文化的一部分,并且可能是“疏通劑”慈缔。但是叮称,在技術競技場上,你應該專注于修正問題藐鹤,而不是發(fā)出指責瓤檐。

如果有一個錯誤,就說明非常娱节、非常糟糕的事情已經發(fā)生了挠蛉。

死程序帶來的危害通常比有疾患的程序要小得多。

無論何時你發(fā)現自己在思考“但那當然不可能發(fā)生”肄满,增加代碼檢查它谴古。最容易的辦法是使用斷言。

你的第一條防線是檢查任何可能的錯誤稠歉,第二條防線是使用斷言設法檢測你疏漏的錯誤讥电。

無論是誰分配的資源,它都應該負責解除該資源的分配轧抗。

最后恩敌,有一種技術可用于更進一步解除模塊的耦合:提供一個“聚會地點”,各模塊可以在那里匿名和異步地交換數據横媚。

但“羞怯”的工作方式有兩種:不向別人暴露你自己纠炮,不與太多人打交道。

很早以前我們就被教導說灯蝴,不要把程序寫成一個大塊恢口,而應該“分而治之”,把程序劃分成模塊穷躁。每個模塊都有其自身的責任耕肩;事實上,模塊(或類)的一個好定義就是,它具有單一的猿诸、定義良好的責任婚被。

對象應該能進行登記,只接收它們需要的事件梳虽,并且決不應該收到它們不需要的事件址芯。

不主動思考他們的代碼的開發(fā)者是在靠巧合編程——代碼也許能工作,但卻沒有特別的理由說明它們?yōu)楹文芄ぷ鳌?/p>

注重時效的程序員批判地思考所有代碼窜觉,包括我們自己的谷炸。

不要讓已有的代碼支配將來的代碼。如果不再適用禀挫,所有的代碼都可被替換旬陡。

當你遇到拌腳石——代碼不再合適,你注意到有兩樣東西其實應該合并或是其他任何對你來說是“錯誤”的東西——不要對改動猶豫不決语婴。應該現在就做季惩。

時間壓力常常被用作不進行重構的借口。但這個借口并不成立:現在沒能進行重構腻格,沿途修正問題將需要投入多得多的時間——那時將需要考慮更多的依賴關系画拾。我們會有更多的時間可用嗎?根據我們的經驗菜职,沒有青抛。

最勤勉的開發(fā)者如果被派到不在乎質量的團隊里,會發(fā)現自己很難保持修正瑣碎問題所需的熱情酬核。

事實上蜜另,好的項目擁有的測試代碼可能比產品代碼還要多。

匿名(尤其是在大型項目中)可能會為邋遢嫡意、錯誤举瑰、懶惰和糟糕的代碼提供繁殖地。只把自己看作齒輪上的一個齒蔬螟、在無休止的狀況報告中制造蹩腳的借口此迅、而不去編寫優(yōu)良的代碼,那太容易了旧巾。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末耸序,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子鲁猩,更是在濱河造成了極大的恐慌坎怪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廓握,死亡現場離奇詭異搅窿,居然都是意外死亡嘁酿,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門男应,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闹司,“玉大人,你說我怎么就攤上這事殉了】觯” “怎么了拟枚?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵薪铜,是天一觀的道長。 經常有香客問我恩溅,道長隔箍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任脚乡,我火速辦了婚禮蜒滩,結果婚禮上,老公的妹妹穿的比我還像新娘奶稠。我一直安慰自己俯艰,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布锌订。 她就那樣靜靜地躺著竹握,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辆飘。 梳的紋絲不亂的頭發(fā)上啦辐,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音蜈项,去河邊找鬼芹关。 笑死,一個胖子當著我的面吹牛紧卒,可吹牛的內容都是我干的侥衬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼跑芳,長吁一口氣:“原來是場噩夢啊……” “哼浇冰!你這毒婦竟也來了?” 一聲冷哼從身側響起聋亡,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肘习,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后坡倔,有當地人在樹林里發(fā)現了一具尸體漂佩,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡脖含,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了投蝉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片养葵。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瘩缆,靈堂內的尸體忽然破棺而出关拒,到底是詐尸還是另有隱情,我是刑警寧澤庸娱,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布着绊,位于F島的核電站,受9級特大地震影響熟尉,放射性物質發(fā)生泄漏归露。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一斤儿、第九天 我趴在偏房一處隱蔽的房頂上張望剧包。 院中可真熱鬧,春花似錦往果、人聲如沸疆液。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堕油。三九已至,卻和暖如春飘蚯,著一層夾襖步出監(jiān)牢的瞬間馍迄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工局骤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留攀圈,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓峦甩,卻偏偏與公主長得像赘来,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子凯傲,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容

  • 前言 編程不存在某種最佳解決方案犬辰,我們應該注重失效,在擁有足夠廣博的背景和經驗基礎上冰单,以保證能在特定情況下選擇好的...
    白樺葉閱讀 1,965評論 0 0
  • 學習最好的方式幌缝,是有個好師傅。他根據你的不同階段诫欠,教導你不同的技能涵卵,循序漸進浴栽;師傅不單教你練功,還會教你做人轿偎,使你...
    尋海閱讀 1,942評論 5 21
  • 一典鸡、溫故而知新 1. 內存不夠怎么辦 內存簡單分配策略的問題地址空間不隔離內存使用效率低程序運行的地址不確定 關于...
    SeanCST閱讀 7,808評論 0 27
  • 總有朋友問我如何泡好一杯茶?我個人覺得坏晦,泡茶其實是對茶葉的二次加工萝玷,因為要沖泡后才可以喝。從這個意義上來說昆婿,干茶也...
    妙巖子閱讀 621評論 0 49
  • 1.經濟法510 2.讀史記(25+5)*2 3.輸出一篇球碉,200+
    醉夢瑤池閱讀 175評論 0 0