前端开发者如何消除代码中的技术债务

开发者很可能在无意中给代码增加了技术债务。以下是如何从代码中消除技术债务。

译自 How Frontend Devs Can Take Technical Debt out of Code

技术债务可以有多种形式。它可能表现为代码中的bug,或者同一部门不同开发者的编码实践不统一。

技术债务是指任何由于首次没有做对而需要额外工作或重新工作的东西。有时开发者编写的代码在一台机器上运行良好,但是当部署到分布式环境时就会失败 - 这也属于技术债务,BOS Framework的创始人兼CEO Shashank Purighalla表示,BOS Framework是一个云基础架构和DevOps自动化平台。

“从高层次来看,从业务层面来说,你可以谈到有意的技术债务,几乎每个程序员和每个开发团队由于时间和预算局限都会承担这种债务。” Purighalla说。“同时也存在许多非故意或意外的技术债务,人们简单地不知道自己正在承担这种债务 - 由于知识欠缺,对整个生态系统认知有限,或者局限在自己的视野中。”

Purighalla 在接受 The New Stack 的采访时表示,前端和 Web 应用开发者可以帮助解决技术债务。但首先,他们需要知道技术债务的表现。

理解技术债务

开发者可以通过各种方式识别技术债务,首先是修复代码中的bug这种最令人讨厌的技术债务。但他说还有其他指标。

“高级开发人员通常可以查看代码,并指出:‘我看到某些构造做得不好,或者某些实现可能不太优化。’” Purighalla说。“从识别系统中的bug,到未完成的代码,到实现粗糙,以及从生态系统分析角度略微提升 - 缺少安全构造或某些协议没有正确实现。”

过去三年网络攻击的增加证明了软件技术债务的存在,他说。

“这是技术债务的后果,我称之为无意的技术债务,因为大多数情况下,技术团队在使用、引入它或者接手该项目时,甚至不知道存在所有这些问题。”他说。

全栈思考,前端行动

为了应对技术债务,Purighalla 建议开发者 - 甚至前端开发者 - 应把自己的工作视为一个更大系统的组成部分,而不要孤立看待。

“开发者要考虑他们编写的代码是作为一个更大系统的一部分,而不仅仅是那个具体的部分。”他说。“有这样一个工程原则: '对艺术的过度追求完美会损害整体的完整性'。”

BOS Framework创始人兼CEO Shashank Purighalla

BOS Framework创始人兼CEO Shashank Purighalla

这意味着即使不是真正的全栈开发者,开发者也必须具有全栈开发者的思维方式。对前端来说,这具体是要了解网站或Web应用所依赖的底层数据,Purighalla解释道。

“这个系统明显是从前端开始的,终端用户通过它与应用程序进行交互,然后它与某种编排层比如API进行交互,然后与后端基础设施交互,最后与数据库交互。”他说。“编排层和前端的实现必须非常小心。”

Purighalla说,前端开发者应对他们的应用所依赖的数据负责。例如,前端开发者应知道,他们最终从界面展示或获取的大致有5种类型的数据:

  • 机密数据;
  • 高度机密数据;
  • 限制性数据;
  • 内部数据;
  • 公开数据。

根据数据的获取方式以及将数据放回数据库的方式,或者相反,根据从数据库获取并在界面展示数据的方式,这5种类型的数据有不同的要求,他说。

“当我们谈论前端Web应用程序时,界面类型也非常重要。”他说。“特别是在AI世界中,你不仅仅是在屏幕上展示数据。你正在谈论一个高度交互的系统,它可能由自然语言处理驱动。所以数据的获取方式非常重要。”

例如,前端开发者需要知道何时使用加密、验证码或注册表单。

“理解开发者的决策如何直接影响组织及其领导也很重要。”他补充说。“这是开发者经常没有意识到的。”

面向所有开发者的标准

要开始减少技术债务,开发团队应采用每个开发者都要遵守的编码标准,他补充说。

“最基本的,要考虑命名规范。” Purighalla说。“如何命名变量?公共变量、全局变量、私有变量。”

他还建议采用测试驱动开发。在测试驱动开发中,单元测试是在开发实际代码之前创建的。

“最起码,测试驱动开发是减少功能和用户体验缺陷的一个非常好的策略。”他说。“所以需求不仅被视为需要验证的清单,而且被视为需要实现的结果的一部分。”

测试驱动开发形成一种思维转变,从功能代码完整性或代码完整性的角度来思考代码,他补充说。

他还表示,前端还必须考虑自己是否在开发某些内部目的的Web应用,或者面向公众的SaaS应用。可能存在与HIPAASOC 2或其他法规相关的合规性问题,他补充说。这与数据和安全的考量结合起来应该指导开发者。

这决定了必须遵循的标准类型,以及必须以一定周期进行的代码扫描、代码覆盖率和安全扫描等基本原则。”他说。“要么进行静态代码分析,要么在每个部署周期中完成。”

他补充说,优秀的实践必须致力于确保代码可读性,并进行适当的内联文档注释。这可以简单到开发者添加注释说明谁在开发,何时编写,为何编写,存在什么需求,目的是什么,他说。注释还应指明项目中是否存在更深层次的设计文档或顺序图等参考资料。

“缺少这些是我们出现大量网络安全漏洞的原因,我不能过分强调这一点,”他说。“如果你可以选择技术栈,有时候就很容易,对吧?如果你用前端采用解释型语言而不是编译型语言,比如 PHP,很容易就可以找到漏洞然后开始攻击系统。即使只有一个小漏洞,也不需要很长时间。如果你使用基础的编译型技术,如果做得好,被攻击的机率会大大降低。”

此外,他补充说,组织中的所有开发者都应遵循这些实践的相同标准。

“开发者必须明白,自己是更大生态系统的一部分,要构建能融入总体框架的组件,”他说。“从商业视角理解一切,然后按照商业需求反向工作,这可能包括我不会专门编写某些安全构造的要求。”

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注