眾所周知,解決代碼耦合問(wèn)題的核心原則之一是信息隱藏。即把所有客戶不需要關(guān)心的信息盡力隱藏起來(lái),只暴露出僅需要被依賴的東西。這樣做不僅可以控制變化...
符號(hào)隱藏與依賴管理是軟件工程中關(guān)乎效率的關(guān)鍵能力。它的核心是“每個(gè)軟件模塊如何在隱藏好自己的同時(shí),還能低成本的精準(zhǔn)獲取依賴”。做好了這件事,每個(gè)...
一個(gè)項(xiàng)目中,除了非常底層的軟件模塊外,大多數(shù)模塊都需要其它的模塊的協(xié)助才能完成功能,這需要借助模塊之間的依賴管理能力。 依賴管理包含如何控制模塊...
前文談了代碼和庫(kù)的符號(hào)隱藏手段。在C/C++中,無(wú)論我們?nèi)绾螌?duì)符號(hào)進(jìn)行隱藏,最后該暴露給客戶的API還是要聲明到頭文件中發(fā)布給別人使用。如何設(shè)計(jì)...
當(dāng)程序規(guī)模變大之后,人們會(huì)對(duì)軟件進(jìn)行模塊劃分,以便分而治之。有了模塊之后,就可以將其構(gòu)建成庫(kù)(靜態(tài)庫(kù)或者動(dòng)態(tài)庫(kù))發(fā)布給別人使用。 前文所述的符號(hào)...
C語(yǔ)言中全局變量和函數(shù)的符號(hào)是默認(rèn)外部可訪問(wèn)的。 只要我們知道一個(gè)全局變量或者函數(shù)的聲明,我們就可以在當(dāng)前的編譯單元中直接使用它,即使它定義在另...
由于工作原因,常常會(huì)在各種編程語(yǔ)言技術(shù)棧下切換。每次切回到C/C++技術(shù)棧下,都會(huì)為C/C++語(yǔ)言缺乏一個(gè)好用的包管理器而不適應(yīng)好一陣。 包管理...
上一篇中我們談到在軟件開(kāi)發(fā)中使用演進(jìn)式設(shè)計(jì)來(lái)讓軟件持續(xù)的響應(yīng)變化。 演進(jìn)式設(shè)計(jì)強(qiáng)調(diào)對(duì)不確定的變化不做提前預(yù)估,優(yōu)先保持設(shè)計(jì)的“簡(jiǎn)單性”,避免過(guò)度...
上世紀(jì)60年代后,由于“軟件危機(jī)”的推動(dòng),人們開(kāi)始借助工程化的方式解決軟件開(kāi)發(fā)中質(zhì)量、成本和工期不可控的問(wèn)題,形成了軟件工程學(xué)。 軟件工程學(xué)從其...