我有一个包含两个主要“阶段”的数学模型: 1.数据加载(只有几KB的数据);2.在数据上运行模型。我希望实现一些测试和检查,以确保输入到模型中的数据是有效的(正确的类型、正确的值等)。以确保模型输出的正确性。
只在数据加载阶段运行测试,可以减少总体开销,并确保模型输出正确。在模型阶段运行测试会导致代码重复(如果在数据加载阶段已经实现了测试,则会带来额外的开销)。
该模型每周只由内部用户运行一次,因此不存在外部应用程序或责任/依赖方。但是,模型对象对用户是可用的,而不必使用(单独的)数据加载对象(因此,数据可以(但实际上不应该)从用户传递到模型,而不必经历数据加载阶段)。
这里有最好的做法吗?是否有更好的方法来构造代码来实现测试?
发布于 2018-12-21 20:37:21
在整个过程的哪个阶段是实现这些测试的最佳时间--当加载数据或在数据上运行模型时?
都不是。
相反,将该过程分为三个阶段:
这使得验证独立于1和3,这允许在其他上下文中重用验证。它还允许在所有数据可用时更容易实现的验证形式,以及在顺序加载步骤中难以实现的验证形式。
如果涉及到一些特定于模型的验证,那么第2步可以使用模型。然而,保持2和3清楚地分开往往是一个好主意。
我想唯一会发生的代码重复是在步骤1和2中迭代数据的代码,这是可以接受的,因为这通常不会重复这些步骤中的任何逻辑。但是不知道任何细节(比如数据结构),这只是一次黑暗的尝试。
发布于 2018-12-22 07:40:01
验证属于模型。数据是否糟糕取决于最终提供给它的模型,在加载阶段,这一点还不清楚。好的,您目前只有一个模型,但是从软件工程的角度来看,这个模型可能会发生变化。因此,就像在使用对象之前测试null一样,在执行计算之前测试数据的正确性。加载阶段不需要也不应该有关于模型的知识(==依赖)。
https://softwareengineering.stackexchange.com/questions/384427
复制相似问题