前几天我在想-为什么编写好的代码这么难? 尽管经过多年的努力,最佳实践,方法论和工具,为什么该行业仍无法生产高质量的软件。 这些问题的答案绝非简单。 它涉及经济诱因,市场现实,截止日期,正规教育,行业标准,市场上开发商数量不足等。
作为一个组织,为了生产高质量的软件,您必须做很多事情。 设置流程,正确招募人才,能够向客户收取质量费用,并对此进行实际管理。
但是即使采取了所有措施,您也无法保证质量代码。 首先,因为这是主观的,但是其次,因为它总是归结于各个开发人员。 不仅是他们是否有能力编写高质量的软件,而且还包括他们是否确实在编写软件。
作为开发人员,您可能适合该过程,但仍会产生平庸的代码。 这就是为什么我的想法使我从开发人员的角度将代码带到代码中,而在整个软件的上下文中。 工具可以自动捕获代码样式问题,圈复杂度,大方法,太多方法参数,循环依赖关系等。但是,即使涵盖了这些内容,仍不能保证会生产出高质量的软件。
因此,我提出了七个问题,开发人员在每次提交代码时都应该问自己。
- 这是对的吗? –代码是否实现了规范。 如果没有明确的规范,您是否做了足够的努力来找出预期的行为。 并以某种方式对行为进行了测试-最好通过自动测试,或者至少通过手动测试。
- 完成了吗? –是否照顾所有边缘情况,无论它们是否在规范中定义。 许多边缘情况是技术性的(连接断开,内存不足,接口更改等)。
- 安全吗? –是否防止滥用,是否遵循最佳安全实践 ,是否验证其输入,是否防止注入等?是否经过测试以证明它对这些已知攻击是安全的。 安全不仅限于代码,但代码本身会带来很多漏洞。
- 它可读性和可维护性吗? –它能让其他人轻松阅读,关注并理解它吗? 它是否具有适当的注释 ,描述了一段代码如何适应全局,是否以易读的小型代码分解了代码。
- 它可以扩展吗? –是否允许使用其他用例进行扩展?是否使用了允许扩展的适当设计模式?是否可参数化和可配置?是否允许编写新功能而又不破坏旧功能?是否覆盖了足够的现有功能百分比?测试,以使更改不会“吓人”。
- 有效率吗? –在高负载下工作良好,是否关心算法复杂性( 无需过早优化 ),是否使用批处理,是否读取以避免立即将大块数据加载到内存中,是否正确使用了异步处理。
- 有什么值得骄傲的吗? –它代表您的经验教给您的每一种良好实践吗? 并不是每段代码都是光荣的,因为大多数代码都执行平凡的任务,但是代码是值得骄傲的还是您希望没有人看到的东西? 您可以将它放到GitHub上吗? 在这里,我们还可以添加道德方面的内容 ,尽管它不一定与质量有关。
我认为我们可以内化这些问题。 不断问自己这些问题会有所作为吗? 我认同。 如果每个开发人员都向自己询问有关其代码的这些问题,我们会神奇地获得高质量的软件吗? 当然不是。 但是,与现有工具,流程和实践相结合,我们将拥有更好的代码。
高质量的软件取决于许多因素,但是开发人员是最重要的因素之一。 劣质软件常常是我们的错 ,并且通过向自己提出正确的问题,我们也可以为劣质软件做出贡献。
翻译自: https://www.javacodegeeks.com/2019/03/7-questions-ask-yourself-about-code.html