求解,领域模型内业务逻辑检测返回值的问题

  在业务逻辑中经常有各种逻辑规则检测的情况,当不符合业务规则时,执行将终止。

  通常我使用两种方法来解决这种情况。

  第一种,就是返回错误码的解决方法,定义一个0到100的数字,每个数字代表一种错误信息,如下边示例:0代表操作成功,1代表提交的number数字不合法,2代表其它操作异常。这种解决方法,使得我基本上所有的操作方法都必须有一个返回值。并且都要定义返回码所代表的意义。特别是当我某个方法有需要返回一个特定对象时,处理起来很麻烦。回为返回结果对象让错误码占用了。

第二种比较简单,就是当规则验证不通过时就抛一个相应的异常出去。这种方法不会占用返回果。但是异常又比较耗性能。如果业务规则判断都用异常处理,那么肯定性能受影响。

请教大家有什么好的解决方法么?

示例1:


public int Submit(int number){
if(number<=0 || number>100){
return 1; //
}

try{
........
}
catch{
return 2;
}

return 0;
}

示例2:

public void Submit(int number){
if(number<=0){
throw new ArgumentOutOfRangeException("数量必须大于0。")
}

.........
}

[该贴被lswweb于2013-09-02 14:54修改过]

推荐第一种,可以将返回值和返回对象封装成一个新的对象。