讀古今文學網 > 程序員必讀之軟件架構 > 第46章 代碼不會講述完整的故事 >

第46章 代碼不會講述完整的故事

我們都知道,編寫好的代碼很重要,重構迫使我們考慮讓方法變得更小、更可復用和自文檔化。有人說註釋是有害的,自註釋的代碼才應該是我們的追求。不管你怎麼做,我們每個人都應該 追求易於閱讀、理解和維護的好代碼。但是代碼不會講述完整的故事。

讓我們想像一下,你新加入一個正在進行中的軟件項目。主要的結構單元都到位了,已經交付了一些功能。你啟動了自己的開發機,從源代碼控制系統下載了代碼並加載到你的開發環境中。下一步要做什麼,如何變得有效率?


從哪開始

如果沒人有時間帶你過一遍代碼庫,你可以根據對這個項目有限的瞭解、業務領域、你對團隊如何構建軟件的期望以及你對所用技術的知識,做出自己的假設。

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

  • 系統用C#在微軟.NET平台上編寫。
  • 整個.NET解決方案被分拆為很多個Visual Studio項目,有一個被稱為ib.web的.NET Web應用程序,你已經料到了,因為這是一個網上銀行系統(IB即「網上銀行」)。
  • 系統似乎是由多個架構層組成的。有ib.web和ib.middletier,但我不知道是否有物理或邏輯層。
  • 項目看起來有一個命名約定。如,iib.middletier.authentication.lib 、ib.middletier.messaging.lib和b.middletier.bankingsystem.lib似乎都是中間層相關的類庫。這些僅僅是類的一種邏輯分組,還是一些更重要的東西,比如高層次組件和服務?
  • 借助一些技術知識,我能夠看到ib.web項目下潛藏了一個「服務引用」文件夾。這是Windows通信基礎(WCF)服務的引用,在這個例子中,基本上就是Web服務的客戶端。它們的命名似乎對應了中間層的類庫,因此我認為我們實際上擁有的是一個分佈式系統,它有一個暴露了一些良好定義的服務的中間層。