讀書報告之《修改程式碼的藝術》 (III)
《修改程式碼的藝術》,每次讀來,都會相當重構,正如作者自己就說到的:從技術上講,書中列到的解依賴技術,都是重構技術,因為他們都保持了程式碼的行為。這裡莊稼人再多引用《大話重構》中的一句話:先重構我們的系統,使之可以應付那個需求,然後再新增程式碼,實現新需求。是的,正如讀書報告(I)中所闡述的,引入單元測試,本質上就是做定製需求。
作為最後一篇,來總結一下最後的解依賴技術。核心思想就是泛化,這裡偷懶了,直接簡單列一下
1. 引數化方法。 就是為某個方法再添加個引數,傳入不同的引數,實現不同的行為。相信碼工都幹過
2. 引數適配。說穿了就是將引數型別重新適配成基類引用(指標), 於是傳入不同的子類物件,實現不同的功能。
3. 實現提取,介面提取。最常用的解依賴技術,簡單的派生一個子類去重寫就可以解依賴。
書中還列了很多其他方法,這裡不說了。最後說一點自己的體會,直接暴力的解依賴實際很少用到,至少我是這樣。一般都是使用模擬類,或者將程式碼分塊,只測試其中某些塊。
寫在最後,因為個人私事,差不多整整一年都沒有碰技術了,有些荒廢。這篇濫竽充數的文章,算是對”有始有終“這四個字的交代吧。各位見諒
相關推薦
讀書報告之《修改程式碼的藝術》 (III)
《修改程式碼的藝術》,每次讀來,都會相當重構,正如作者自己就說到的:從技術上講,書中列到的解依賴技術,都是重構技術,因為他們都保持了程式碼的行為。這裡莊稼人再多引用《大話重構》中的一句話:先重構我們的系統,使之可以應付那個需求,然後再新增程式碼,實現新需求。是的,正如讀書報告(I)中所闡述的,引入單
讀書報告之《修改程式碼的藝術》 (II)續2
這裡作為(II)的第二個續篇,繼續複雜的巢狀if else 的處理。 為了保持篇幅不會太長,以一篇新的文章形式給出。 化簡複雜的if else語句,基本的手段 針對頭重腳輕的if else,使用return快速返回,從而減少巢狀層數。 合併分支。有些分支的執行內容
讀書報告之《修改程式碼的藝術》 (II)續
這裡作為(II)的續篇,繼續距離 複雜的巢狀if else 的處理。 為了保持篇幅不會太長,所以截斷了,以一篇新的文章形式給出。 化簡複雜的if else語句,基本的手段 針對頭重腳輕的if else,使用return快速返回,從而減少巢狀層數。 合併分支。有些分支的執
讀書報告之《修改程式碼的藝術》 (II)
今天繼續從本書的第二章學習, 昨天我們已經總結了下面三個內容 1. 降低修改的風險 2. 需要修改大量相同的程式碼 3. 時間緊迫,必須修改 今天繼續第四點 4. 修改時應當測試哪些方法 作者提出了影響結構圖的概念。說穿了,就是CallRela
讀書報告之《修改程式碼的藝術》 (I)
《修改程式碼的藝術》,英文名《Working Effectively with Legacy Code》,中文翻譯的文筆上絕對談不上“藝術”二字,愧對藝術二字(當然譯者不是這個意思)。書中第三部分不論是例子還是解說都有點混亂,遠不如《重構——改善既有程式碼設計》一書。此書精華在於第一、二部分。
移植u-boot-2015.07-rc3之修改程式碼支援DM9000網絡卡(七)
目前的u-boot啟動後有如下資訊: Net: CS8900-0 Error: CS8900-0address not set. 板子上的是DM9000不是CS8900,網絡卡模組肯定是錯誤的嘛。看到這裡,你應該有了熟悉的思路,grep "Net:" * -nR查詢網絡
讀書筆記之《程式碼大全2》
1.軟體構建很重要,直接決定了專案的成敗,一般佔據專案成本的65%,降低風險,亡羊補牢,為時晚矣。 2.鼓勵重用,改變,但是不僅僅是抄襲 3.相對於試錯式程式設計必定是不如經過用心仔細的規劃和設計的程式設計,但是也不是意味著過度計劃。 4.見多學廣活學活用
修改程式碼的藝術讀書筆記002——帶著反饋工作
實際上來說,幾乎大部分人都是按照第一種做法來做的。先確保理解程式碼,然後找到改動點,編輯之後,再花大量的時間來確認改動是否生效,改動是否破壞了其他功能。這裡存在的問題,首先是,這種方式意味著修改都要非常小心,並且,當這個改動對系統侵入性較強的時候,還需要倍加小心,不然出錯的可能性會更大;即使如此,改動的安全性
spring boot之 DevTools 熱部署,修改程式碼立刻見效,快速重啟
IDEA新建sping boot選擇 DevTools spring-boot-devtools 模組能夠實現熱部署,新增類 新增方法 修改配置檔案 修改頁面等 都能實現熱部署 原理就是重啟專案,但比手動重啟快
LintCode 買賣股票的最佳時期I II III 之Python 程式碼
假設你有一個數組,它的第i個元素是一支給定的股票在第i天的價格。設計一個演算法來找到最大的利潤。 I:如果你最多隻允許完成一次交易。 II:你可以完成儘可能多的交易(多次買賣股票)。 III:你最多可以完成兩筆交易。 買賣股票的最佳時期I (I)簡單粗
spring boot之 DevTools 熱部署,修改程式碼立刻見效,快速重啟
IDEA新建sping boot選擇 DevTools spring-boot-devtools 模組能夠實現熱部署,新增類 新增方法 修改配置檔案 修改頁面等 都能實現熱部署 原理就是重啟專案,但比手動重啟快多了,其深層原理是使用了兩個ClassLoade
讀書筆記之《編寫高質量程式碼:改善C#程式的157個建議》
最近,在閱讀書籍《編寫高質量程式碼:改善C#程式的157個建議》,感覺寫得很不錯,特將其中的建議整理了一下,待以後隨時檢視。 現只羅列了其中的部分建議,因為書籍還沒有閱讀完,會慢慢的完善補充。 1 正確操作字串 1.1 確保儘量少的裝箱 在使用其他值引用型別到字串的轉換並
《編寫可維護的JavaScript》讀書筆記之程式設計實踐-將配置資料從程式碼中分離
將配置資料從程式碼中分離出來 任何時候修改原始碼都會有引入 bug 的風險,且只修改一些資料的值也會帶來一些不必要的風險。精心設計的應用應當將關鍵資料從主要的原始碼中抽離出來,因為資料是不應當影響指令的正常執行。 什麼是配置資料 配置資料是應用中寫死(har
數學之美 程式碼撩妹的藝術
上圖是本次要實現的效果(文末有工程檔案地址),程式狗的美術,大家將就著感受一下,我們注重的是實現的原理。小程式的導航切換、對應資料夾、以及事件觸發、資料繫結,官網API和開發手冊中已經有了很詳細的說明,在這裡我就不贅述了,這裡主要分享一下一個相對較難的
解題報告 之 HDU5288 OO' s Sequence
bold repr frame roman efi int tom relative 記錄 解題報告 之 HDU5288 OO‘ s Sequence Description OO has got a array A of size n ,defined
Linux之修改主機名(永久生效)
etc 想要 常常 重新啟動 重新 cnblogs 登錄 用戶 sysconf Linux系統安裝好後,都會有默認的主機名,這裏以CentOS系統為例,默認的主機名為localhost.localdomain,為了便於使用,我們常常需要修改主機名,下面演示的是永久更改主機名
程序外掛之修改名稱
技術 img png idt chan http alt die 動態 1.建立運行應用程序如PicPick 2.使用工具OllyDbg v1.0窗口工具捕獲該窗口的類名和標題如下圖 3.根據獲取的類名TfrmMDIEditor和標題PPP編寫c代碼如下 #inclu
讀書筆記之面向對象的程序設計-1理解對象
-i chrom conf 理解 cnblogs object ftw 不能 pro ECMA-262把對象定義為:“無序屬性的集合,其屬性可以包含基本值、對象或者函數。” 創建自定義對象的最簡單方式就是創建一個Object的實例 eg:先創建一個名為person的對象,
《大型網站技術架構》讀書筆記之六:永無止境之網站的伸縮性架構
映射 應對 方法 訂閱 知識 位置 n+1 轉換 bsp 此篇已收錄至《大型網站技術架構》讀書筆記系列目錄貼,點擊訪問該目錄可獲取更多內容。 首先,所謂網站的伸縮性,指不需要改變網站的軟硬件設計,僅僅通過改變部署的服務器數量就可以擴大或者縮小網站的服務處理能力。在整個互聯
《C#圖解教程》讀書筆記之四:類和繼承
intern html pan 類中訪問 ted obj 小寫 his new 本篇已收錄至《C#圖解教程》讀書筆記目錄貼,點擊訪問該目錄可獲取更多內容。 一、萬物之宗:Object (1)除了特殊的Object類,其他所有類都是派生類,即使他們沒有顯示基類定義。