有关代码的7个问题

前几天我在想-为什么编写好的代码这么难? 尽管经过多年的努力,最佳实践,方法论和工具,为什么该行业仍无法生产高质量的软件。 这些问题的答案绝非简单。 它涉及经济诱因,市场现实,截止日期,正规教育,行业标准,市场上开发商数量不足等。

作为一个组织,为了生产高质量的软件,您必须做很多事情。 设置流程,正确招募人才,能够向客户收取质量费用,并对此进行实际管理。

但是即使采取了所有措施,您也无法保证质量代码。 首先,因为这是主观的,但是其次,因为它总是归结于各个开发人员。 不仅是他们是否有能力编写高质量的软件,而且还包括他们是否确实在编写软件。

作为开发人员,您可能适合该过程,但仍会产生平庸的代码。 这就是为什么我的想法使我从开发人员的角度将代码带到代码中,而在整个软件的上下文中。 工具可以自动捕获代码样式问题,圈复杂度,大方法,太多方法参数,循环依赖关系等。但是,即使涵盖了这些内容,仍不能保证会生产出高质量的软件。

因此,我提出了七个问题,开发人员在每次提交代码时都应该问自己。

  1. 这是对的吗? –代码是否实现了规范。 如果没有明确的规范,您是否做了足够的努力来找出预期的行为。 并以某种方式对行为进行了测试-最好通过自动测试,或者至少通过手动测试。
  2. 完成了吗? –是否照顾所有边缘情况,无论它们是否在规范中定义。 许多边缘情况是技术性的(连接断开,内存不足,接口更改等)。
  3. 安全吗? –是否防止滥用,是否遵循最佳安全实践 ,是否验证其输入,是否防止注入等?是否经过测试以证明它对这些已知攻击是安全的。 安全不仅限于代码,但代码本身会带来很多漏洞。
  4. 它可读性和可维护性吗? 它能让其他人轻松阅读,关注并理解它吗? 它是否具有适当的注释 ,描述了一段代码如何适应全局,是否以易读的小型代码分解了代码。
  5. 它可以扩展吗? –是否允许使用其他用例进行扩展?是否使用了允许扩展的适当设计模式?是否可参数化和可配置?是否允许编写新功能而又不破坏旧功能?是否覆盖了足够的现有功能百分比?测试,以使更改不会“吓人”。
  6. 有效率吗? –在高负载下工作良好,是否关心算法复杂性( 无需过早优化 ),是否使用批处理,是否读取以避免立即将大块数据加载到内存中,是否正确使用了异步处理。
  7. 有什么值得骄傲的吗? –它代表您的经验教给您的每一种良好实践吗? 并不是每段代码都是光荣的,因为大多数代码都执行平凡的任务,但是代码是值得骄傲的还是您希望没有人看到的东西? 您可以将它放到GitHub上吗? 在这里,我们还可以添加道德方面的内容 ,尽管它不一定与质量有关。

我认为我们可以内化这些问题。 不断问自己这些问题会有所作为吗? 我认同。 如果每个开发人员都向自己询问有关其代码的这些问题,我们会神奇地获得高质量的软件吗? 当然不是。 但是,与现有工具,流程和实践相结合,我们将拥有更好的代码。

高质量的软件取决于许多因素,但是开发人员是最重要的因素之一。 劣质软件常常是我们的错 ,并且通过向自己提出正确的问题,我们也可以为劣质软件做出贡献。

翻译自: https://www.javacodegeeks.com/2019/03/7-questions-ask-yourself-about-code.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值