毫无疑问,我们应该编写应用程序来保护自己免受恶意,好奇和/或粗心的用户的攻击,但是当前和/或未来的同事呢?
例如,我正在编写一个基于Web的API,它接受来自用户的参数.其中一些参数可能映射到配置文件中的值.如果用户使用URL混乱并为参数提供了无效值,则在尝试从配置文件的不存在的部分读取时,我的应用程序将会出错.当然,我在尝试从配置文件中读取之前擦除了params.
现在,如果另外一个开发人员在这个应用程序上运行,那么为此参数添加另一个有效值,该值将通过清理过程,但不会将相应的部分添加到配置文件中.请记住,我只是保护应用程序免受不良用户的攻击,而不是糟糕的程序员.我的申请会失败.
一方面,我知道所有的更改都应该在转向生产之前进行测试,这样的事情无疑会出现在一个不错的测试环节中,但另一方面,我尝试构建我的应用程序以尽可能地抵御失败.我只是不知道在潜在的失败列表中包含同事修改我的代码是否"正确".
对于这个项目,我选择不检查配置文件的相关部分是否存在.作为当前的开发人员,我不允许用户指定会导致失败的参数值,因此我希望未来的开发人员不会将行为引入可能导致失败的生产环境......或者至少消除这样的问题测试期间的情况.
你怎么看?
懒惰......还是哲学上的声音?
"我只是不知道在潜在的失败点列表中同事修改我的代码是否"正确"."
防止同事破坏是不对的.
您不知道您的软件将用于什么新用途.您不知道将来如何修改它.
相反,这样做.
编写简单正确的软件,投入生产,并不再担心有人"破坏"某些东西.
如果您的软件实际上很简单,那么其他人可以在不破坏它的情况下维护它
如果你把它变得太复杂,他们会(a)打破它,无论你做了什么,(b)讨厌让它变得复杂.
因此,尽可能简单地完成这项工作.