日期:2014-05-17  浏览次数:20407 次

一个程序的健壮性问题
我有一个视图页面
例如三个文本框~
让客户输入产品数据
之后与我方产品数据进行比对 如果数据不对,则提示相应的错误

现在数据格式较为简单,只需要比对 数量,价格 

可是以后扩展后,可能会有很多项,比如时间,产品品牌,供销商之类的

如果10项以内,还能用IF ELSE 解决,可以后30项,100项呢

扩展性较好的方法~

求大神给提个醒。


------最佳解决方案--------------------
数据要有规则。
比如
数据现有:
class Data{Number, Price, TotalPrice}
规则是:
Rule 0:
Number: [Number]
Tip: "Must be Number"
Rule 1:
Price:  [Number]
Tip: "Must be Number"
Rule 2:
TotalPrice: [Number] <={Number}*{Price}>
Tip: "Must be Number and equals with Number*Price"
现在的逻辑可以是
1:Dictionary来记录数据 [Number, 10] [Price: 30] [TotalPrice: 300]
根据Key和Rule表来确定提示语
<={Number}*{Price}>这一行需要自己写程序分析
2: 用类型累积录数据
跟据反射的Property名字和Rule来确定提示语
同样<={Number}*{Price}>需要自己写程序分析

这种做法你可以不用任何的if else,并且可扩展性非常高。
Message message = Validate(DATAs,RULEs)
即可获得所有需要的信息。

这时候难点在分析<={Number}*{Price}>上, 看看逆波兰式就可以完成这一部分的编程。
------其他解决方案--------------------
这个地方不要用if else,一旦判断不符合直接给出提示并return,例如:
if(数量不满足要求)
{
    输出提示信息
     return;
}
if(价格不满足要求)
{
    输出提示信息
     return;
}
//如果都满足要求
执行其他代码
------其他解决方案--------------------
那要一条一条的把框里的值获取出来。然后验证了。再一起返回,或者可以用个变量来保存 是否可以提交至数据库这个的状态信息 flag。和一个message消息信息。然后只要验证的地方出现错误,。flag就等于flase 并继续验证下去 然后把错误信息都用+=的方式记录在message里。。最后一起提示。。
------其他解决方案--------------------
上代码看看。。。。
------其他解决方案--------------------
楼上的先谢谢你的回复了
可是如你所写的:只有一个错误,就返回,那客户填了十个错,需要提交10次才能修改正确~
我希望的是一次把所有的错误都报给客户~
------其他解决方案--------------------
5 楼正解

这个扩展性才可以得到真正的体现~~