欢迎访问Sonar Source中文网站!
语言选择: ∷ 

Clean Code 是 Jupyter Notebook 代码质量的解决方案吗?

发布时间:2023-08-09浏览次数:83

“代码质量是迄今为止 Jupyter 笔记本的最大问题。” 这是我们在 Sonar 与数据科学家接触以了解是什么让他们彻夜难眠时最常遇到的说法。但为什么会这样,有解决办法吗?Jupyter 笔记本还需要 linting 吗?让我们深入研究一下。

那么问题出在哪里呢?

大数据的快速增长推动了对高质量数据分析的需求,随之而来的是数据科学作为关键业务功能的崛起。数据科学家通常编码经验有限,他们利用 Jupyter Notebook 等原型设计工具来快速建模、测试和表达想法,并为业务领导者提供有价值的见解和情报。随着数据量的持续增长,以及企业对数据科学家可以提取的见解的重视,快速获得这些数据见解的压力也随之增加。 


然而,速度和代码质量之间的紧张关系是数据科学领域长期存在的问题。快速移动和快速迭代的需求可能会以牺牲代码质量为代价。就 Jupyter 笔记本而言,代码质量通常被认为是最大的挑战。由于 Jupyter Notebook 缺乏 linting 工具来确保代码质量而不会对数据科学家的流程和速度产生不利影响,因此紧张局势加剧。 


开发商是否已经有了答案?

正如《传道书》中所说,日光之下并无新事。如果我们看看传统开发人员的世界,就会发现在传统编码环境中成功实施的方法和工具已经解决了这个问题。他们解决了代码质量和速度需求之间的紧张关系。是的,我们是说数据科学家可以向开发人员学习 🙂


关键是让开发人员能够拥有自己的代码质量,并在开发过程中发现并纠正错误。创作过程,而不是事后的想法。这是通过一个编码伙伴来实现的,该伙伴在代码创建过程中不引人注意,直到被调用为止。需要时,它会向开发人员发出上下文相关信息的警报,使他们能够快速决定所需的操作过程,而不会中断创意流程。这是一种经过验证的方法和工具,传统开发人员已经采用它来确保当前的干净输出,而不是稍后再返回。也就是说,第一次交付干净的代码,既适合开发又适合生产的代码。那么为什么不将相同的工具和方法应用于 Jupyter 笔记本和数据科学家呢?


但数据科学家不是传统的开发人员。数据科学家的需求是不同的。我们知道数据科学家正在使用笔记本作为建模、测试和表达想法的工具。编码只是实现这一目标的必要要求,它不是日常工作。不成为编码员/开发人员也没关系。理想情况下,原型设计应该是一个快速、创造性的过程,不受所需编码的阻碍。但与此同时,结果需要易于理解,并且想法易于吸收且不被误解。对干净代码的需求仍然存在。


这是什么魔法?

但这个工具是什么?它如何实际应用于 Jupyter 笔记本?传统开发人员通常在 IDE 中使用 linter 来帮助他们发现问题,但数据科学家使用 Jupyter Notebook 的机会更进一步,而且需求也不同。Sonar 不仅仅是一个 linter,它还设想了一种能够与数据科学家一起实际工作的解决方案,提供一个编码伴侣,通过干净的输出来增强创意流程。 


认识到笔记本用户可能不是经验丰富的编码员,解决方案应该标记任何会对代码质量产生负面影响并最终影响笔记本的完整性和可移植性的问题。它还将提供教育指导(如果需要的话可以访问),以便在不中断流程的情况下轻松纠正任何问题。与其说是传统编码意义上的 linter,不如说是一个同伴,可以解释为什么问题被标记、存在什么问题以及如何解决它。


Sonar 正在尝试一种能够实现这一目标的解决方案。这是一个省力的解决方案,对流程的干扰最小,使数据科学家能够创建具有高质量代码的 Jupyter 笔记本。我们准备好解决笔记本电脑最大的问题。 


凭借我们在帮助传统开发人员创建干净代码方面的经验,我们谦虚地开始为 Jupyter 笔记本提供解决方案,该解决方案可以在问题产生时立即标记它们,同时提供可选的、简单的修复选项。毕竟,清洁代码也适合数据科学家!


但何苦呢?对于数据科学家来说,清洁代码的实际好处是什么?

我们看到了 3 个主要好处:

被理解

当您打开 Jupyter 笔记本并开始创作过程时,您希望最终结果清晰易懂。但现实是,笔记本是一个进行建模、尝试不同事物和快速行动的空间。 


经过一段持续的数据科学工作后,通常会出现一些可能已复制粘贴到整个笔记本中的代码页。可能已经使用了缩写,可能有不再存在的变量,并且执行计数可能有数千次。换句话说,最终的结果可能是混乱的。生成的代码可能不干净,这增加了复杂性,使得笔记本和结果本身难以理解,更不用说沟通了。 


最重要的是,通过你不整洁的笔记本,你不太可能被理解。 


现在想象一下一台从一开始就拥有干净代码的笔记本。在安静地坐在机翼上的同伴的帮助下,它已经被清理干净,直到它发现问题。无需返回代码并进行修复。不会浪费时间,不会中断流程。只是一个易于理解的笔记本。帮助您被理解。

可以轻松地重新投入并进一步开发或充满信心地分享

正如 Jupyter 笔记本是进行数据建模、测试理论和经常进行修改的空间一样,笔记本可以暂时搁置,然后用新数据、新想法和新想法重新审视,这是有道理的。笔记本可以与其他人共享,或者可以将代码片段发布到开发人员组以进行评论迭代和协作。当代码风格及其结构遵循标准开发人员规范时,上述所有操作都会变得更加容易。干净代码方法不仅使任何人都可以更轻松地拿起笔记本并轻松地继续前一个创建者留下的地方,而且还确保在笔记本之外共享到更广泛的开发人员社区的代码被接受和移植。


具有清洁代码的笔记本有助于继续共享并确保轻松协作和未来开发。

它可以帮助您成长为数据科学家和编码员

不做编码员也没关系。但如果您可以一边编码一边学习,这将为个人成长提供机会。使用能够解释错误背后“原因”并建议补救措施的解决方案可以提供这种机会。当然,有时速度至关重要,而解决问题的快速解决方案就是关键。但当时机成熟时,同伴就准备好戴上老师的帽子,提供有助于成长的情境学习。


另外,对您的笔记本及其质量充满信心,无论是在没有编码问题的情况下,还是在可读性和符合公认规范方面,都对您(作者、创建者和所有者)有帮助。它只能保护您的声誉,甚至可能提高您的声誉,具体取决于您的工作质量。

那么我该如何开始呢?

我们相信干净代码也应该适用于数据科学家和 Jupyter 笔记本的用户。我们还相信,所有人都有权使用提供清洁代码的工具。这就是为什么在 Sonar,我们正在迈出第一步,提供免费的开源解决方案,作为您的清洁代码伴侣。SonarLint可从VS Code 市场下载,使数据科学家能够在 IDE 中编码和运行 Jupyter 笔记本,充当代码伴侣和老师,确保代码干净。您可以在这里找到官方公告


通过使所有 Jupyter Notebook 用户能够轻松编写干净的代码而不降低开发速度,我们的目标是减少速度要求和代码质量之间的紧张关系。但我们还没有完成。我们很乐意听取您的意见,了解如何进一步改进和开发 SonarLint。


微信扫码微信扫码 关注我们

  • 24小时咨询热线180-210-69380

  • 移动电话180-210-69380

Copyright © 2022 All Rights Reserved. 地址:上海市浦东新区崮山路538号808 苏ICP123456 XML地图