探索實踐之軟體構建(三)

2021-05-01 21:27:09 字數 808 閱讀 5123

adapter模式關鍵特徵
意圖:使控制範圍之外的乙個原有物件與某個介面匹配。

問題:系統的資料和行為都正確,但介面不符。通常用於必須從抽象類派生時。

解決方案:adapter模式提供了具有所需介面的包裝類。

--摘自《設計模式解析》的小片段。其實在實際應用中,還可以活用。在成本分配中,待分配費用(通常為間接的共耗費用)如果是從資料庫查詢出來的rowset,可以分解、包裝為具有業務意義名稱、提供預設實現的介面和介面卡方法。例如:

這樣適配後的方法,如getcostcenterid就比不適配而直接在rowset _allocatingdata上操作要優雅許多了。

其實這個實現還是有不足的,因為_allocatingdata是某個具體分配的待分配查詢出來的,例如其它費用分配,如果開發員給它的那一列名不叫costcenter.id,而且叫costcenterorgunit.id,則getcostcenterid()實現就會取不到正確值了。也就是說,此實現違背了依賴倒置原則(dip):抽象的feeinfo不應該依賴於各具體的分配查詢的rowset。

更好的改進是去掉抽象層的硬編碼的欄位名,或者把目前帶有硬編碼欄位名的實現作為預設實現,而再增加乙個過載的方法,例如:

在作設計時,切記要消除硬編碼、魔術數字之類的,並作出變化的預計。消除硬編碼常用的辦法有:

1、把硬編碼作為protected例項字段,例如上面的例子可以有_costcenterid變數;

2、作為protected getter方法;

3、有時用正規表示式可以消除;

4、有時用反射api可以達到效果。

軟體工程實踐探索

為了解決軟體危機,用工程化的思想來進行軟體開發,於是出現了一門新的學科 軟體工程。說道軟體工程,就不得不說與之相關的devops,其中包括持續整合,持續交付和持續部署等 這些東西不是和某種軟體工程方法關聯的,而是軟體開發需求,是為了保證軟體質量而準備的,而軟體工程是為了解決客戶端需求和軟體實現之間的...

軟體探索性測試 筆記三

把所有要做的事情按照優先順序排序,然後從最重要的事情做起 進行區域性探索式測試的決策的5要素 輸入 狀態 路徑 使用者資料 執行環境 輸入 1 識別哪些輸入值和其他輸入有關聯,在同乙個測試用例中使用它們 2 識別和考慮輸入的先後順序 3 注意區分非法輸入是input filter 還是input c...

軟體架構實踐讀後感三

軟體架構實踐讀後感三 問題,在過去的學習中我並沒有注意到分析架構這個問題,直到我閱讀了這本書,我才真正接觸並理解了軟體架構中還有分析架構這一階段,閱讀中我了解了架構並不是單獨存在的,而是在某個週期的一部分。構架是實現某個目的的手段,他受到系統涉眾的影響,也受到客戶和開發組織的功能及質量目標的影響,還...