Press "Enter" to skip to content

彼得·麦基,Sonar开发者关系主管-访谈系列

Peter McKee 是 Sonar 的开发者关系负责人,Sonar 是一个解决糟糕代码这一万亿美元挑战的平台。Sonar 为开发者和组织提供装备,使其能够系统地达到 “Clean Code” 的状态,以便所有的代码都适用于开发和生产。通过应用 Sonar 的 Clean as You Code 方法论,组织可以最大限度地降低风险,减少技术债务,并以可预测和可持续的方式从软件中获得更多的价值。

您最初是如何被计算机科学吸引的呢?

从小我就对计算机感兴趣。即使在最初追求其他职业道路的时候,我仍然不断地被计算机和编程吸引。有一段时间,我爸爸在弗吉尼亚经营一家钢铁公司,他们失去了顾问团队。由于我在年轻时学会了编程,他邀请我为他工作并为他建立系统。起初,我并不完全知道自己在做什么,但我通过书籍学习和实践工作,在工作中完全自学成才。这继续驱动着我对编码和计算机的兴趣,并真正巩固了我对计算机科学的兴趣。

您能否解释一下您对“Clean Code”是如何定义的以及为什么它如此重要?

多年来人们一直说软件将吞食世界,我想现在可以说已经正式成立了 – 世界是建立在软件之上的,每家公司都是一个软件公司。优秀软件的基础是优质的代码,因为代码是所有软件的核心,它决定了软件的行为和性能。这就是为什么“Clean Code” — 一种一致、有意、适应性强且负责任的代码 — 如此重要的原因。清晰的代码易于理解和修改,在运行时运作流畅并且不包含任何技术债务,因此非常适合使用。对于实现日益增长的业务成功,组织应该 embrace Clean Code 作为标准。

Clean Code 带来的好处适用于各个规模和成熟度的团队和组织,并提高了软件的价值。其中一些具体好处包括:

  • 提升开发技巧 — 开发人员可以在编码过程中检测、理解和解决问题,并学习最佳实践
  • 提高效率和生产力 — 减少持续的反复工作和长时间的反馈循环,提高工作效率
  • 降低声誉和商业风险 — 通过在生产环境之前主动解决问题,Clean Code 保证较少的安全风险
  • 减少代码级技术债务 — Clean Code 逐渐解决代码库的债务,而无需对应用进行大规模的改变和中断
  • 提高软件开发速度 — Clean Code 标准和流程改进了 DevOps 的速度,促进更快的上市时间

您能讨论代码的一致性和结构的重要性吗?还有哪些一致且 Clean 的代码的例子?

一致的代码质量是每个经理或技术总监都希望保持的目标。一致性在代码质量方面至关重要,因为一致性会导致可预测性。代码以统一和常规的方式编写 —— 所有的代码看起来类似,遵循统一的模式,即使在不同时间有多个贡献者的情况下也是如此。一致的代码格式化、常规性强、可辨识。当采用一致的编码标准时,开发人员变得更加高效,并能够以速度和精确度达到交付预期。

您能讨论代码如何处理意外情况的重要性以及为什么不应忽视这一点吗?

开发人员总是试图在设计和开发过程中预测和应对意外情况,但并非每一次都能预防。由于意外的滥用或故意触发的攻击,意外状态可能会出现。这些意外状态可能会无意中引入安全漏洞,黑客可以利用这些漏洞。这就是为什么开发人员应该始终努力提高代码的质量和稳定性,并对意外情况进行测试的原因。通过采用“Clean as You Code”方法,团队可以更好地加速新功能的开发,避免不必要的反复工作成本,促进人才的成长和留任。Clean Code 促进安全性、可维护性和可靠性,并使开发人员能够更有效地预测和处理意外状态,以便尽快恢复软件的运行。

您能讨论一下使用生成式人工智能进行代码生成的好处吗?

将人工智能融入软件开发生命周期确实有其优势,例如能够使开发人员更高效地工作。实际上,GitHub的研究发现使用人工智能的开发人员完成任务的速度比普通方式快50%以上。GenAI还能更快地生成代码,从而摆脱更繁琐、例行的任务负担,如文档编写或生成代码片段等,使开发人员能够更好地集中精力解决更复杂的问题,从而获得更高价值、更有回报的工作。但无论代码如何生成,都必须确保符合Clean Code标准,以确保代码安全、可靠和可维护。

生成的代码可能存在哪些潜在的问题和风险?

 虽然人工智能可以为开发人员释放出更多时间来从事高价值的项目并提高生产力,但也存在一些风险。这就是为什么在人工智能时代的需求也不会消失。因为GenAI工具可以快速生成大量代码,存在潜在的出错风险。以下是一些具体的问题:

  • 追究责任:由于由人工智能生成的代码减少了对编写人员追究责任的能力,这可能使问题的解决更加困难。
  • 漏洞:由于它主要采用的是众包信息,不能保证生成的代码是安全、干净的,甚至可能存在可能将业务风险暴露出来的错误或安全问题。
  • 质量:人工智能不能进行质量双重检查,仅仅因为是由人工智能生成的代码并不意味着它是高效或高质量的。
  • 缺乏上下文:失去人类的参与意味着失去了问题或项目的背景信息。必须进行审核来确保人工智能生成的代码能够完整地完成工作。

当开发人员在编写代码时采用“边码边检查”的方法时,无论是人工编写的代码还是由人工智能生成的代码,都可以确保符合开发和生产的要求,符合组织的标准。

在适合用于生产的代码中还应考虑哪些因素?

 遵循Clean Code原则编写代码的开发人员可以确保其代码适合开发和生产,这意味着代码应具备以下特征:

  • 一致性:代码应保持一致,并遵循一种常用的风格。即使代码经过多个不同的开发人员多次修改,它也应具有相似的外观并遵循已确定的模式。
  • 有意:有意码应该像是经过用心和关注写成的,传达其目的;它应只有一个可用的解释。
  • 可适应:可适应的代码将其分段和组织成更易于管理并查看每一行代码之间关系的方式,这使得代码结构化,易于自如地演变。
  • 有责任心:代码及其开发人员应在数据方面和对社会规范的潜在影响方面具有慎重的伦理义务。代码最终不应出现无意中损害第三方的持续风险。

您能讨论一下Sonar的各种服务以及它如何帮助编码人员快速、系统地构建负责任、安全且高质量的代码吗?

 通过我们领先行业的分析器,Sonar以全面的方式识别代码问题,并通过短反馈循环推荐修复方法,同时在上下文中对开发人员进行教育,最终使组织能够快速、系统地构建负责任、安全且高质量的代码。Sonar解决方案的核心元素包括SonarLint、SonarQube(自管理;开源)和SonarCloud(SaaS),具有广泛的覆盖范围,支持30多种编程语言、框架和基础设施、11种IDE和5000多个编码和特定语言的规则。

SonarLint是一种IDE扩展,可从编写代码的那一刻起提供首行检查,实时发现问题。它可以预先捕获大部分问题,并帮助开发人员像拼写检查一样发现和解决错误。SonarQube和SonarCloud是Sonar静态分析代码审查工具,能够连续检查和分析代码库,并与SonarLint集成。使用质量门控确定代码是否符合质量、安全和可靠性的定义标准,SonarQube和SonarCloud检查代码中的错误、漏洞、安全热点和代码异味。

通过我们的解决方案集与我们的“编码过程中保持干净”的方法论相结合,开发人员和组织能够交付干净的代码并自然修复现有的代码,从而可以专注于推动业务价值的新创新项目。

Sonar如何确保代码符合规范并符合行业标准?

Sonar帮助开发人员获得即时、具体化的反馈,基于多年的语言分析经验,在开发工作流程中突出显示问题所在的代码库。开发人员可以清楚地了解问题发生的原因以及如何快速解决它,并提供更多深入学习的资源。我们在整个工作流程中提供教育,包括IDE到CI/CD。例如,Sonar在SonarLint中具有特定的MISRA C++ 2023规则,以帮助团队创建最符合认证要求的代码。它提供编码指导,解释标记问题背后的原因以及如何修复,以确保编写的代码符合MISRA规范。

您对人工智能如何改变未来编码的愿景是什么?

我认为人工智能将继续为解决开发人员的过度劳累提供巨大价值。虽然我不认为人工智能能够替代开发人员的思维和人的触角,但我确实认为,即使是几个月后,我们也将看到一个全新的GPT集合,更不用说几年后的情况了。我不认为技术人员或开发人员会消失,但他们每天工作的方式肯定会发生变化。开发人员使用人工智能将变得简单而普遍,就像使用谷歌搜索以获取快捷方式一样。关于人工智能的使用还有很多探索空间,但我们必须始终将人的因素放在首位来检查人工智能的缺点。软件开发具有变革潜力,但我们不能让它失控,尤其是当今数字化业务依赖于支撑其的软件。

感谢这次精彩的采访,希望希望了解更多的读者请访问Sonar

Leave a Reply

Your email address will not be published. Required fields are marked *