虽然我对我负责的模块内发生的事情非常警惕,但我不断面临着要处理来自其他模块的错误数据的压力。本质上,我是一个“失败快速”原则的开发者,因此,当问题出现时,我通常能够消除我的模块中存在的错误可能性。这并不是为了指责别人,仅仅是为了节省浪费在错误地方查找错误的努力。
但是,我经常遇到的论点是:“我们不能让这些东西在生产环境中失败,客户希望这个工作,为什么你不解决这个问题。” 这将是一种强壮性的论点:在接受方面要宽松,在发送方面要保守。
我还应该注意到,这些大多数是间歇性问题。我们在集成测试中看到它们,但很难重现。时间和并发性都涉及其中。
我在两个原则之间很难取得平衡。部分原因是我担心如果我开始允许和传播异常数据,我会招惹麻烦,并且我对我的系统的信心不会那么强。但是,即使其他模块向我发送错误数据,我也不能反对保持系统正常工作。其他模块没有得到修复的原因是它们太复杂和脆弱了,而我的模块看起来仍然清晰而安全。但是,如果我不抵制这种压力,我的模块将逐渐被同样的问题所困扰,直到现在为止我一直在拒绝的那些问题。
我应该说,系统并没有在生产环境中“崩溃”,但我的模块可能只是向操作员显示一个错误,并要求他们联系支持人员。如果发生崩溃,那将是一个大问题,但如果我清楚地报告错误,那么这难道不是正确的做法吗?我怀疑我的同事只是不希望客户看到任何问题。但是我的模块正在拒绝我们产品内其他模块的数据,而不是客户输入。因此,我认为我们只是没有解决问题。
那么,我需要更加务实还是坚持自己的立场呢?