如何通过简单调整开发过程,以使代码看起来

全文共字,预计学习时长11分钟

图源:unsplash

如今,擅长编写代码与精通英语一样重要。想要变成优秀的程序员需要长期的磨炼,最好方法是加入一家有高编码标准的公司。而笔者想要给你的,是如何通过简单调整开发过程,以使代码看起来更好。

本文汇集了笔者长期查看可补充学术论文的代码,发布数据集或分析Kaggle竞赛的解决方案总结而成的经验。

本文的目标读者是研究人员、数据科学家和初级软件开发人员。每个步骤只需不到5分钟,而且这些调整会迫使您做得更好。

使用版本控制来跟踪代码中更改的地方

版本化代码看起来很明显是必须做的事情,但事实并非如此。笔者的硕导是一个非常聪明的人,他开发了一种算法来执行Hubbard模型的QuantumMonteCarlo。该代码被全世界许多研究人员使用,以推进理论的“凝聚态物理”。

当开始使用这种算法时,笔者惊讶地发现没有集中式的存储库。代码的交换是通过电子邮件进行的。一位科学家开发的漏洞修正和新功能并未交换给其他用户。此外,我也看到同事如何使用不同的文件夹控制代码版本。

在GitHub或其他服务上进行代码版本控制和使用集中式存储库很有必要,许多研究人员正在这样做。但是如果不使用计算机科学,那么大多数教授和研究生正处于使用文件夹进行版本控制和通过电子邮件发送代码的阶段。

问题:什么时候需要开始在项目中使用git?

回答:从代码的第一行开始使用。

问题:何时需要在GitHub上创建存储库并将代码推送到库里?

回答:从代码的第一行开始。如果认为由于法律或其他原因不能公开共享自己的代码,那可以创建一个私人存储库。在其他所有情况下,请访问公共存储库。

等到代码看起来不错再公开,这是一个错误。如果GitHub存储库中有不完美的代码,我的许多同事都会感到非常不安全。他们担心别人会认为自己是差劲的程序员。实际上,根本没有人会去评判你。此外,现在编写的每个代码在六个月后看起来都会很糟糕。

私人存储库总比没有存储库要好。公共存储库又比私有存储库更便利。

Kaggle竞赛的参赛者在比赛结束后发布自己的pipeline是一个好习惯,对参赛者和社区都有帮助。

此外,还有一个名为Sourcegraph的工具,可以在所有公共Github存储库中的代码中执行搜索。非常方便,能够提高工作效率。

图源:pixabay

不要推送到主分支

在团队中工作时,不要直接推送到主分支。创建一个单独的分支,并在其中工作,创建一个拉取请求(PR),将拉取请求合并到主分支。这比直接的pushtomaster错误要复杂得多,原因是要合并拉取请求,更改须通过各种检查。手动检查是协作者进行的代码审查。自动检查包括语法、样式、测试等。

当独自工作时,没有机会代码审查,但是自动检查的功能仍然可以使用。

在GitHub上调整设置非常有必要,即使有意愿,也不会出现pushtomaster。如上所述,这可以防止犯错误并节省意志力。

图源:unsplash

使用持续集成/持续交付(CI/CD)系统

完成创建分支和合并的过程是一项日常开销,主要原因是允许对代码更改执行检查。设置持续集成系统后,创建的每个拉取请求需要进行检查,并且仅在所有检查通过后,才能合并拉取请求。

有许多提供CI/CD功能服务的软件,如GitHubActions、CircleCi、Travis、Buildkite等

推荐使用GitHubActions。完全免费,可在私有和公共存储库上使用,且易于设置。

这些听起来非常复杂,但是实际上,只需要向存储库添加配置文件即可。

·简单示例:笔者的库具有辅助功能。笔者检查代码样式、格式并运行测试。

·复杂示例:在Albumentations库中,检查语法和代码样式,运行测试,检查自动文档构建,并针对不同的python版本和操作系统(Linux,Windows,MacOS)执行操作。

注意:需要在GitHub存储库中更改设置,这样在所有检查都在绿色区域中的情况下将无法合并请求。

Linters

这些工具不会更改代码,而会对代码进行检查并查找可能存在的问题,这称为linter。最常用的是flake8。

它可以寻找:

·Pep8错误和警告。

·一致的命名公约。

·功能的圈复杂度。

·以及带有一组插件的其他内容。

这是一个功能强大的工具,建议将其添加到CI/CD配置以及预提交钩中。

Pre-


转载请注明:http://www.aierlanlan.com/grrz/2277.html