6.8 Replace Method with Method Object 以方法物件取代方法
將大型方法放入單獨物件,使方法內的臨時變數成為物件中欄位,在物件中將大型方法分解為多個小型方法
更多精彩
- 更多技術部落格,請移步 asing1elife’s blog
前置條件
- 有時候會發現無法使用 6.4 Replace Temp with Query 以查詢取代臨時變數 ,因為無法拆解一個需要被拆解的物件
- 這個時候就需要先使用本方法,在使用上述方法
動機
- 小型方法的複用率更高,且更容易被理解
案例
public class Order {
public double price() {
double primaryPrice;
double secondaryPrice;
double tertiaryPrice;
}
}
public class Order {
public double price() {
Price price = new Price();
}
}
public class Price {
private double primaryPrice;
private double secondaryPrice;
private double tertiaryPrice;
// 提供一系列 getter/setter 方法
}
相關推薦
6.8 Replace Method with Method Object 以方法物件取代方法
將大型方法放入單獨物件,使方法內的臨時變數成為物件中欄位,在物件中將大型方法分解為多個小型方法 更多精彩 更多技術部落格,請移步 asing1elife’s blog 前置條件 有時候會發現無法使用 6.4 Replace Temp w
重構 改善既有程式碼的設計 Replace Method with Method Object(以函式物件取代函式)
你有一個大型函式,其中對區域性變數的使用使你無法採用Extract Method。 將這個函式放進一個單獨物件中,如此一來區域性變數就成了物件內的欄位。然後你可以在同一個物件中將這個大型函式分解為多個小型函式。 動機 我們一直在強調,小型函式優美動人。只要將相對獨立的程式碼從大型函式中提煉出來,就大大提
6.4 Replace Temp with Query 以查詢取代臨時變數
將表示式提煉到一個獨立方法中,將這個臨時變數的所有引用點替換為對新方法的呼叫 更多精彩 更多技術部落格,請移步 asing1elife’s blog 前置條件 該方法通常是 6.1 Extract Method 提煉方法 的前置條件
10.12 Replace Constructor with Factory Method 用工廠方法取代構造方法
將構造方法替換為工廠方法 更多精彩 前置條件 動機 希望在物件建立時做到構建動作以外的其他事情 可以讓工廠方法根據引數的不同型別,選擇不同的建立行為 案例 Employee(int type
attempted to return null from a method with a primitive return type (Double).
span att 但是 sele 代碼 mysql from ive star <select id="getMaxHitEventId" parameterType="string" resultType="int"> select max(ap
【java】Mybatis返回int型別為空時報錯 attempted to return null from a method with a primitive return type (int)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:93) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) at
[golang]call method with reflection
package main import ( "reflect" "fmt" ) type Ax struct { X int } type By struct { Y int } type Handler struct { } func (h *Handler) Add(ax A
【Java 6】Invocation of init method failed
【Java 6】Invocation of init method failed 背景敘述: 在除錯SpringMVC時報錯: Error creating bean with name
重構---重構手法-----以查詢取代臨時變數(Replace Temp with Query)
本文轉載,原作者:皮斯特勞沃 開門見山 發現:你的程式以一個臨時變數儲存某一表達式的運算結果。 解決:將這個表示式提煉到一個獨立函式中。將這個臨時變數的所有引用點替換為對新函式的呼叫。 //重構前 double basePrice = _quantity * _itemPr
重構手法30:Replace Type Code with Class (以類取代型別碼)
類之中有一個數值型別碼,但它並不影響類的行為。以一個新的類替換該數值型別碼。 動機:在以C為基礎的程式語言中,型別碼或列舉值很常見。如果帶著一個有意義的符號名,型別碼的可讀性還不錯。問題在於,符號名終究只是個別名,編譯器看見的、進行型別檢驗的,還是背後那個數值。任何接受
ADF備忘:EL表示式呼叫帶引數的方法(expression language invoke method with parameter)
EL表示式呼叫帶引數的方法很簡單,直接傳入呼叫值即可 例如在專案中的這種用法: jsf: <af:inputText value="#{pageFlowScope.incidentReq
專案銷燬主頁Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService異常
專案需求,專案退出登入的時候,跳轉登入頁面,重新登入,會重新進入首頁。很簡單的需求,只需在退出的時候將儲存的使用者資訊銷燬,把之前活躍的activity銷燬,重新跳轉進入登入介面即可。但是在真正執行退出登入的時候,卻出現了問題:退出登入銷燬主頁的時候,因為主頁裡
CentOS 6.8 部署騰訊藍鯨運維平臺
騰訊 產品 軟件包 成本 而且 導讀運維的自動化一般需要經過四個階段:手工操作->腳本自動化->WEB自動化->調度自動化,目前很多公司的運維同仁處於“腳本自動化”階段,藍鯨智雲開放的社區版V1系列,就是為這個階段的同仁準備的產品,可以幫助各位進入“WEB自動化”;當進入
【編碼格式錯誤】SyntaxError: Non-UTF-8 code starting with
org 一行 文件 編碼 with details pla err pytho 問題: SyntaxError: Non-UTF-8 code starting with ‘\xba‘ in file E:/placement/placement/Placement Tes
centos 6.8 /etc/sysconfig/下沒有iptables的問題
進行 配置命令 out sysconf div 命令 table 重啟 防火墻規則 解決辦法: 1.任意運行一條iptables防火墻規則配置命令: iptables -P OUTPUT ACCEPT 2.對iptables服務進行保存: serv
ADS-B顯示終端6.8
div log -s pan 地圖 bsp 基礎上 mark tom 更新日誌; 本次更新依舊主要註重是BUG修正。 1 改動鼠標移動時地圖重繪的BUG 鼠標移動時地圖即發生重繪,占用了CPU資源,修正後僅僅當鼠標點擊選中對象或拖動對象時地圖才
Linux NFS服務器的簡明配置6.8
server2 機器 高效率 操作系統 文件 init 3 重新 磁盤文件 avi Linux NFS服務器的簡明配置 一、NFS服務簡介 NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1
[RxJS] Replace zip with combineLatest when combining sources of data
his cnblogs ons repl com combine zed mean pla This lesson will highlight the true purpose of the zip operator, and how uncommon its use c
CentOS 6.8 SSH遠程登錄優化
ssh sshd 遠程登錄 近期發現通過Xshell登錄遠程Linux主機時需要等待很長時間:通過配置文件sshd_config,修改以下2個參數的值:# vim /etc/ssh/sshd_config#UseDNS yes --> UseDNS noGSSAPIAuthenticat
6.8
center inner 之前 dev .proto mouse 程序 success 例子 1、數組和函數 concat 將參數列表連接到原數組後面形成一個新的數組並返回,原有數組不受影響。 var arr = ["a","b","c"]; var arr1 = arr.