每日代碼 - 6/29 讀寫分離

public class CartMainTypeSelector {
public static void selectCartMainType(CartContext context,CartOption options){
Params params = context.getParams();
if (params != null && params.isMiniCart()) {
options.cartType = CartType.MINI_CART;
return;
} 
if(context.getShopId() > 0){
options.cartType = CartType.SHOP_TYPE;
} 
}

一個很常見的方法,從參數一中讀值,根據判斷和計算,修改參數二的值。安全

根據CQS(command query seperation)的思想,一個方法最好要麼作查詢,要麼負責更新對象的狀態。這樣對於那麼作查詢的方法,咱們就會很放心,由於咱們能夠以任意順序和次數調用它們,而且它們的結果在大多數狀況下都是能夠預料的,不變的。spa

public class CartMainTypeSelector {
public static CartType getCartMainType(CartContext context){
Params params = context.getParams();
if (params != null && params.isMiniCart()) {
return CartType.MINI_CART;
} 
if(context.getShopId() > 0){
return CartType.SHOP_TYPE;
} 
}


 比較一下下面兩段代碼的可讀性和安全性(從反作用的角度看)code

CartOption option = ...;
CartContext context = ...;
option.cartType=getCartMainType(context);


CartOption option = ...;
CartContext context = ...;
selectCartMainType(context,option);
相關文章
相關標籤/搜索