代碼不會講述完整的故事

我們都知道酬荞,編寫好的代碼很重要那婉,重構(gòu)迫使我們考慮讓方法變得更小、更可復(fù)用和自文檔化忽妒。有人說注釋是有害的,自注釋的代碼才應(yīng)該是我們的追求。不管你怎么做段直,我們每個人都應(yīng)該追求易于閱讀吃溅、理解和維護(hù)的好代碼。但是代碼不會講述完整的故事坷牛。

讓我們想象一下罕偎,你新加入一個正在進(jìn)行中的軟件項目。主要的結(jié)構(gòu)單元都到位了京闰,已經(jīng)交付了一些功能。你啟動了自己的開發(fā)機甩苛,從源代碼控制系統(tǒng)下載了代碼并加載到你的開發(fā)環(huán)境中蹂楣。下一步要做什么,如何變得有效率讯蒲?

從哪開始

如果沒人有時間帶你過一遍代碼庫痊土,你可以根據(jù)對這個項目有限的了解、業(yè)務(wù)領(lǐng)域墨林、你對團(tuán)隊如何構(gòu)建軟件的期望以及你對所用技術(shù)的知識赁酝,做出自己的假設(shè)。

舉個例子旭等,你可以通過代碼庫如何被拆分為子項目酌呆、目錄、包搔耕、命名空間等對軟件系統(tǒng)的整體架構(gòu)做出一些判斷隙袁。說不定有一些正在使用的命名約定。我們甚至能夠從前面的微軟Visual Studio屏幕截圖判斷出軟件的一些特征弃榨,在這種情況下它是一個(匿名)的網(wǎng)上銀行系統(tǒng)菩收。

系統(tǒng)用C#在微軟.NET平臺上編寫。

整個.NET解決方案被分拆為很多個Visual Studio項目鲸睛,有一個被稱為ib.web的.NET Web應(yīng)用程序娜饵,你已經(jīng)料到了,因為這是一個網(wǎng)上銀行系統(tǒng)(IB即“網(wǎng)上銀行”)官辈。

系統(tǒng)似乎是由多個架構(gòu)層組成的箱舞。有ib.web和ib.middletier,但我不知道是否有物理或邏輯層钧萍。

項目看起來有一個命名約定褐缠。如,iib.middletier.authentication.lib 风瘦、ib.middletier.messaging.lib和b.middletier.bankingsystem.lib似乎都是中間層相關(guān)的類庫队魏。這些僅僅是類的一種邏輯分組,還是一些更重要的東西,比如高層次組件和服務(wù)胡桨?

借助一些技術(shù)知識官帘,我能夠看到ib.web項目下潛藏了一個“服務(wù)引用”文件夾。這是Windows通信基礎(chǔ)(WCF)服務(wù)的引用昧谊,在這個例子中刽虹,基本上就是Web服務(wù)的客戶端。它們的命名似乎對應(yīng)了中間層的類庫呢诬,因此我認(rèn)為我們實際上擁有的是一個分布式系統(tǒng)涌哲,它有一個暴露了一些良好定義的服務(wù)的中間層。

代碼未描繪的設(shè)計意圖

進(jìn)一步深入代碼會幫助驗證你最初的假設(shè)正確與否尚镰,但也可能留給你一大堆問題阀圾。也許你在較高層次明白系統(tǒng)做的事情,但不明白像下面這樣的事狗唉。

軟件系統(tǒng)如何融入已有的系統(tǒng)形態(tài)初烘;

為什么會選擇正在使用的技術(shù);

軟件系統(tǒng)的整體結(jié)構(gòu)分俯;

各個組件在運行時部署在哪里肾筐,如何相互溝通;

Web層如何“知道”在哪里找到中間層缸剪;

日志/配置/錯誤的處理/其他采用了什么方法吗铐,在代碼庫中是否一致;

代碼庫中是否使用了通用的模式和原則橄登;

如何添加新功能抓歼,在哪里添加;

棧的安全性是如何實現(xiàn)的拢锹;

如何實現(xiàn)可伸縮性谣妻;

與其他系統(tǒng)的接口如何工作;

其他卒稳。

我曾被要求評審和參與開發(fā)沒有文檔的系統(tǒng)蹋半。你當(dāng)然可以從代碼的角度評估大部分問題的答案,但這會很繁重充坑。閱讀代碼的作用始終有限减江,但某些時候你可能需要向團(tuán)隊的其他人請教一些問題。如果沒有問對問題捻爷,你就得不到正確的答案:你不知道你未知的辈灼。

輔助信息

任何軟件系統(tǒng),在代碼之上都有另一個可以回答這些類型以及更多問題的信息層也榄。

代碼之上還有一個額外的信息層

這類信息和代碼是互補的巡莹,應(yīng)該在某處被捕獲司志,比如輕量級的輔助文檔,它能描述代碼自己無法描述的東西降宅。代碼會講故事骂远,但不會講述完整的故事。

【圖書推薦】

作者:Simon Brown

譯者:鄧鋼

“這是一本‘指南’型圖書腰根。作者會給你一個圖景以及達(dá)到它的關(guān)鍵技術(shù)指引激才,你可以得到一個思考問題的框架,而非一條道路或一套方法额嘿。但對于架構(gòu)師來說瘸恼,這樣就足夠了〔嵫”

——周愛民钞脂,現(xiàn)任豌豆莢架構(gòu)師,

前盛大網(wǎng)絡(luò)平臺架構(gòu)師捕儒、支付寶業(yè)務(wù)架構(gòu)師

【作者Simon Brown】

全球知名軟件架構(gòu)獨立咨詢師、講師邓夕,創(chuàng)辦了專門討論軟件架構(gòu)問題的網(wǎng)站“編碼架構(gòu)”(codingthearchitecture.com)刘莹。他自稱是寫代碼的軟件架構(gòu)師和明白架構(gòu)的軟件開發(fā)者。自2008年以來的7年時間里焚刚,Simon在全球28個國家做過有關(guān)軟件架構(gòu)点弯、技術(shù)領(lǐng)導(dǎo)力及其與敏捷的平衡等主題的百余場演講,并于2012年8月在中國舉辦的ArchSummit全球架構(gòu)師峰會上以“郁悶的架構(gòu)師”和“如何設(shè)計安全的架構(gòu)”為主題發(fā)表演講矿咕,深受與會者好評抢肛。Simon已為全球20多個國家的軟件團(tuán)隊提供咨詢和培訓(xùn),他的客戶既有小型技術(shù)初創(chuàng)企業(yè)碳柱,也不乏全球家喻戶曉的品牌公司捡絮。

【譯者鄧鋼】

誤打誤撞進(jìn)入IT行業(yè)的80后程序員,愛好Web技術(shù)莲镣,對前端技術(shù)尤其偏愛福稳。曾在盛大創(chuàng)新院擔(dān)任前端工程師,現(xiàn)在是IBM上海的一名軟件用戶界面工程師瑞侮。除了具體的技術(shù)的圆,對軟件架構(gòu)、軟件工程也很感興趣半火,希望把自己在IBM所見所聞分享出來越妈,為前端領(lǐng)域如火如荼的工程化浪潮貢獻(xiàn)力量。

【閱讀原文京東】

閱讀原文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钮糖,一起剝皮案震驚了整個濱河市梅掠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖瓤檐,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赂韵,死亡現(xiàn)場離奇詭異,居然都是意外死亡挠蛉,警方通過查閱死者的電腦和手機祭示,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谴古,“玉大人质涛,你說我怎么就攤上這事£#” “怎么了汇陆?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長带饱。 經(jīng)常有香客問我毡代,道長,這世上最難降的妖魔是什么勺疼? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任教寂,我火速辦了婚禮,結(jié)果婚禮上执庐,老公的妹妹穿的比我還像新娘酪耕。我一直安慰自己,他們只是感情好轨淌,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布迂烁。 她就那樣靜靜地躺著,像睡著了一般递鹉。 火紅的嫁衣襯著肌膚如雪盟步。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天梳虽,我揣著相機與錄音址芯,去河邊找鬼。 笑死窜觉,一個胖子當(dāng)著我的面吹牛谷炸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播禀挫,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼旬陡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了语婴?” 一聲冷哼從身側(cè)響起描孟,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤驶睦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后匿醒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體场航,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年廉羔,在試婚紗的時候發(fā)現(xiàn)自己被綠了溉痢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡憋他,死狀恐怖孩饼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情竹挡,我是刑警寧澤镀娶,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站揪罕,受9級特大地震影響梯码,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜好啰,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一忍些、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坎怪,春花似錦、人聲如沸廓握。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隙券。三九已至男应,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間娱仔,已是汗流浹背沐飘。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留牲迫,地道東北人耐朴。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像盹憎,于是被迫代替她去往敵國和親筛峭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

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