开拓者很可能在无意中给代码增加了技能债务。以下是如何从代码中肃清技能债务。
译自How Frontend Devs Can Take Technical Debt out of Code。
技能债务可以有多种形式。它可能表现为代码中的bug,或者同一部门不同开拓者的编码实践分歧一。

技能债务是指任何由于首次没有做对而须要额外事情或重新事情的东西。有时开拓者编写的代码在一台机器上运行良好,但是当支配到分布式环境时就会失落败 - 这也属于技能债务,BOS Framework的创始人兼CEOShashank Purighalla表示,BOS Framework是一个云根本架构和DevOps自动化平台。
“从高层次来看,从业务层面来说,你可以谈到故意的技能债务,险些每个程序员和每个开拓团队由于韶光和预算局限都会承担这种债务。” Purighalla说。“同时也存在许多非故意或意外的技能债务,人们大略地不知道自己正在承担这种债务 - 由于知识欠缺,对全体生态系统认知有限,或者局限在自己的视野中。”
Purighalla 在接管 The New Stack 的采访时表示,前端和 Web 运用开拓者可以帮助办理技能债务。但首先,他们须要知道技能债务的表现。
理解技能债务开拓者可以通过各种办法识别技能债务,首先是修复代码中的bug这种最令人讨厌的技能债务。但他说还有其他指标。
“高等开拓职员常日可以查看代码,并指出:‘我看到某些布局做得不好,或者某些实现可能不太优化。’” Purighalla说。“从识别系统中的bug,到未完成的代码,到实现粗糙,以及从生态系统剖析角度略微提升 - 短缺安全布局或某些协议没有精确实现。”
过去三年网络攻击的增加证明了软件技能债务的存在,他说。
“这是技能债务的后果,我称之为无意的技能债务,由于大多数情形下,技能团队在利用、引入它或者接手该项目时,乃至不知道存在所有这些问题。”他说。
全栈思考,前端行动为了应对技能债务,Purighalla 建议开拓者 - 乃至前端开拓者 - 应把自己的事情视为一个更大系统的组成部分,而不要伶仃看待。
“开拓者要考虑他们编写的代码是作为一个更大系统的一部分,而不仅仅是那个详细的部分。”他说。“有这样一个工程原则: '对艺术的过度追求完美会危害整体的完全性'。”
BOS Framework创始人兼CEO Shashank Purighalla
这意味着纵然不是真正的全栈开拓者,开拓者也必须具有全栈开拓者的思维办法。对前端来说,这详细是要理解网站或Web运用所依赖的底层数据,Purighalla阐明道。
“这个别系明显是从前端开始的,终端用户通过它与运用程序进行交互,然后它与某种编排层比如API进行交互,然后与后端根本举动步伐交互,末了与数据库交互。”他说。“编排层和前真个实现必须非常小心。”
Purighalla说,前端开拓者应对他们的运用所依赖的数据卖力。例如,前端开拓者应知道,他们终极从界面展示或获取的大致有5种类型的数据:
机密数据;高度机密数据;限定性数据;内部数据;公开数据。根据数据的获取办法以及将数据放回数据库的办法,或者相反,根据从数据库获取并在界面展示数据的办法,这5种类型的数据有不同的哀求,他说。
“当我们评论辩论前端Web运用程序时,界面类型也非常主要。”他说。“特殊是在AI天下中,你不仅仅是在屏幕上展示数据。你正在评论辩论一个高度交互的系统,它可能由自然措辞处理驱动。以是数据的获取办法非常主要。”
例如,前端开拓者须要知道何时利用加密、验证码或注册表单。
“理解开拓者的决策如何直接影响组织及其领导也很主要。”他补充说。“这是开拓者常常没故意识到的。”
面向所有开拓者的标准要开始减少技能债务,开拓团队应采取每个开拓者都要遵守的编码标准,他补充说。
“最基本的,要考虑命名规范。” Purighalla说。“如何命名变量?公共变量、全局变量、私有变量。”
他还建议采取测试驱动开拓。在测试驱动开拓中,单元测试是在开拓实际代码之前创建的。
“最最少,测试驱动开拓是减少功能和用户体验毛病的一个非常好的策略。”他说。“以是需求不仅被视为须要验证的清单,而且被视为须要实现的结果的一部分。”
测试驱动开拓形成一种思维转变,从功能代码完全性或代码完全性的角度来思考代码,他补充说。
他还表示,前端还必须考虑自己是否在开拓某些内部目的的Web运用,或者面向"大众年夜众的SaaS运用。可能存在与HIPAA、SOC 2或其他法规干系的合规性问题,他补充说。这与数据和安全的考量结合起来该当辅导开拓者。
这决定了必须遵照的标准类型,以及必须以一定周期进行的代码扫描、代码覆盖率和安全扫描等基本原则。”他说。“要么进行静态代码剖析,要么在每个支配周期中完成。”
他补充说,精良的实践必须致力于确保代码可读性,并进行适当的内联文档注释。这可以大略到开拓者添加注释解释谁在开拓,何时编写,为何编写,存在什么需求,目的是什么,他说。注释还应指明项目中是否存在更深层次的设计文档或顺序图等参考资料。
“短缺这些是我们涌现大量网络安全漏洞的缘故原由,我不能过分强调这一点,”他说。“如果你可以选择技能栈,有时候就很随意马虎,对吧?如果你用前端采取阐明型措辞而不是编译型措辞,比如 PHP,很随意马虎就可以找到漏洞然后开始攻击系统。纵然只有一个小漏洞,也不须要很永劫光。如果你利用根本的编译型技能,如果做得好,被攻击的机率会大大降落。”
此外,他补充说,组织中的所有开拓者都应遵照这些实践的相同标准。
“开拓者必须明白,自己是更大生态系统的一部分,要构建能融入总体框架的组件,”他说。“从商业视角理解统统,然后按照商业需求反向事情,这可能包括我不会专门编写某些安全布局的哀求。”