是否需要输入验证?

时间:2014-01-23 11:53:31

标签: matlab validation readability maintainability

这是一个关于输入验证的非常天真的问题。

我学习了输入验证技术,例如parse和validatestring。事实上,MATLAB内置函数充满了那些验证和解析器。所以,我自然认为这是代码开发的专业方式。使用这些技术,您可以确定输入变量的数据格式。否则,您的代码将拒绝输入并返回错误。

然而,有些人认为如果输入变量存在问题,代码将导致错误并停止。无论如何你会注意到这个问题,然后那些复杂的验证有什么意义呢?鉴于验证代码本身需要一些努力和时间,通常采用相当复杂的流量控制,我不得不承认这一观点有其意义。通过大量输入验证,代码的可读性可能会受到影响。

我想听听高级用户对此问题的意见。

2 个答案:

答案 0 :(得分:3)

这是我的经验,我希望它符合最佳实践。

首先,让我提一下,我通常在我完全控制的情况下工作,并且不会像@tom提到的那样构建我自己的UI。一般情况下,如果您的程序在任何时候很有可能获得垃圾输入,那么值得检查它们。

我通常会做出一些权衡来决定是否应该检查我的输入:

  • 开发时间与调试时间
    • 如果错误的输入难以调试(例如因为它们不会导致错误而只是不良结果),余额通常会支持检查,否则不支持。
    • 如果您不确定在哪里结束(重新)使用代码,可能有助于强制执行输入所需的任何假设。
  • 开发时间与运行时体验
    • 如果您的代码需要一个小时才能运行,并且在输入值无效时最终会中断,您可能需要在代码的开头检查此代码
    • 如果代码在打开文件时遇到错误,用户可能无法立即理解,如果您提到没有指定有效文件名,则可能更容易处理。

答案 1 :(得分:1)

真的(真的)短篇小说:

  • 将您的设计分解为用户界面,业务逻辑和数据 - (参见MVC模式)
  • 在您的UI图层中,执行“常识”验证,例如如果输入是$ cost值,那么它应该是> = 0,能够被解析成十进制等。
  • 在您的业务逻辑层中,验证该值,例如$ cost值可能不允许大于利润率(等)
  • 在您的数据层中,验证数据操作,例如插入操作成功

额外的短篇小说:是的!验证所有输入。

如需额外阅读学分,请参阅:this!