4 Long Parameter List (過(guò)長(zhǎng)參數(shù)列)
因?yàn)樘L(zhǎng)的參數(shù)列難以理解, 太多參數(shù)會(huì)造成前后不一致,不易使用, 而且一旦你需要更多數(shù)據(jù),就不得不修改它. 如果將對(duì)象傳遞給函數(shù). 大多數(shù)修改都將沒(méi)有必要, 因?yàn)槟愫芸赡苤恍?在函數(shù)內(nèi)) 添加一兩條請(qǐng)求. 就能得到更多的數(shù)據(jù).
如果向已有的對(duì)象發(fā)出一條請(qǐng)求就可以取代一個(gè)參數(shù), 那么你看應(yīng)該激活重構(gòu)手法Replace Parameter With Method(以函數(shù)取代參數(shù)). 在這里"已有的對(duì)象" , 可能是函數(shù)所屬類(lèi)內(nèi)的一個(gè)字段, 也可能是另一個(gè)參數(shù). 你還可以運(yùn)用Preserve Whole Object(保持對(duì)象的完整性)將來(lái)自同一對(duì)象的一堆數(shù)據(jù)收集起來(lái), 并以該對(duì)象替換它們. 如果某些函數(shù)缺乏合理的對(duì)象歸屬. 可使用Introduce Parameter Object (引入?yún)?shù)對(duì)象)為它們制造出一個(gè)"參數(shù)對(duì)象".
這里有一個(gè)例外: 有時(shí)候你明顯不希望造成"被調(diào)用對(duì)象" 與 "較大對(duì)象"間的依賴(lài)關(guān)系. 這時(shí)候?qū)?shù)據(jù)從對(duì)象中拆解出來(lái)單獨(dú)作為參數(shù), 也很合情合理. 但是請(qǐng)注意其所引發(fā)的代價(jià). 如果參數(shù)列太長(zhǎng)或變化太頻繁, 你就需要重新考慮自己的依賴(lài)結(jié)構(gòu)了.