我有一个每15分钟运行一次的程序来验证我公司的销售订单。目前,大约有65个"支票"每个销售订单必须通过我的程序才能通过。该程序使用"权限列表,"这本质上是一个SQL表,它使用True / False列存储项目中每个方法的名称,"您希望此方法运行吗?"我运行SQL查询:
SELECT [MethodName] FROM [table] WHERE Permission='true'
然后我将其转换为集合类型List<string>
。当我浏览我的Main时,我的列表中必须存在方法的名称才能运行该方法。这样,我可以控制通过SQL运行哪些方法,如果需要,可以轻松更新或关闭某些方法,而无需更新代码库。这样,如果逻辑关闭,或者没有按预期工作,我可以轻松关闭该方法,以便在接下来的15分钟内检查订单。
我们正在重组订单的方式&#34;踢回&#34;之前,如果订单甚至一次方法检查失败,它会立即结束剩余的支票,通知CSR订单有什么问题,他们改变订单并重新提交给应用程序。
现在,我们希望所有检查都能运行,并且我们正在生成每个错误的列表,以加快修复订单的过程。但是,某些方法依赖于其他传递方法,例如某些值已经被检查,如果它们被设置为null
,值不正确,不正确的邮政编码,日期等等。
因此,作为一个例子,如果我有一个方法可以确保邮政编码正好是5或9位数,并且我有一个验证传递地址的方法,它过去看起来像这样:
//Make sure zipCode is 5 or 9 in length.
//kickback = true if zipCode is invalid.
checkZipCodeLength();
if(kickback == true)
//try to confirm the order, which will fail due to kickback = true
evaluateOrder(SalesOrder);
//Make sure delivery address is a valid address
//kickback = true, if address is invalid.
checkDeliveryAddress();
if(kickback == true)
evaluateOrder(SalesOrder);
因此,检查在这种类型的样式中工作,直到所有样式都运行。我们希望删除if语句,并且在所有检查都发生之前不要回复任何内容,这意味着使检查单独依赖,但如果之前用于回扣订单的检查失败,则会收到通知。
我有点失去了如何更新它,甚至更新要使用的集合类型。使用SQL表来制作&#34;规则&#34;让这些方法运行的好方法?有没有更好的方法来处理这个?这几乎感觉就像我正在使用真实的方式来检查和平衡&#34;系统,我正在寻找有关如何重构代码的建议,以便更好地检查运行方法,如果有的话。
对不起文字之墙,我只是想帮助人们更好地理解这个问题
答案 0 :(得分:1)
“但是,某些方法依赖于其他传递方法,例如某些值已被检查,如果它们被设置为null,值不正确,不正确的邮政编码,日期等等”
如果你的测试是原子的,那么这不是不可克服的:如果你有一个检查值是否为null的测试,那么后续测试应该返回df.ix[df.groupby('CITIES_LABEL').TIME.idxmax()]
如果值为null,因为它们无法确定它的有效性。 / p>
例如:
true
通过这种方式,测试不需要彼此了解,并且您有很多测试,每个测试都检查一件事。
但是,如果你的测试很复杂并依赖于几个值,我不确定这会如何扩展..