每日代码 - 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);
相关文章
相关标签/搜索