【发布时间】:2011-08-13 00:05:18
【问题描述】:
我在尝试返回结合函数调用的一组错误的结果时遇到了困难。
我是从以下方法入手的
List<String> errors;
bool result = Obj.GetResult(out errors, int id);
第二步是引入新的类
public class OperationResult
{
public bool Result {get;set;}
public List<string> Errors {get;set;}
}
但随后脏代码开始出现在 GetResult 方法中。
例如
public OperationResult GetResult(int id)
{
if (id == 0)
{
return new OperationResult { Result = false, Errors = {"Error"}};
}
if (id < 400)
{
var result = new OperationResult { Result = false, Errors = {"Error"}};
if (id >200)
result.Errors.Add("Error");
return result;
}
}
然后我开始担心不允许结果用户编辑他们得到的结果。
我已经从只能读取数据的 OpearationResult 类中提取了接口。
现在我想添加结果生成器类...
在这一点上,我开始认为我做错了什么。试图重新发明自行车,或者只是无中生有地制造问题。
请给我一个建议,如何处理所有这些东西。 我也很好奇这是如何在函数式编程语言中处理的。 (我的意思是不变性)
【问题讨论】:
-
有什么理由不使用异常?
-
从不喜欢过度使用异常,原因可能与迫使 MS 放弃基于异常的 ui 验证的原因相同。
-
你只能过度使用 throw 语句。将异常作为对象返回是可以的。返回 bool 的方法是非常邪恶的。
标签: c# design-patterns function functional-programming