标准Ruby 1.0.

2021-03-07 09:15:17

其中一个开源项目测试双重维护称为标准化。不,它不是Ruby的StandardLibrary,它不能实施任何行业标准。相反,类似于Samename的javascript库 - 是一组静态分析(“Linting”)和Ruby代码的Codestyle规则。因为它建立在Rubocop之上,标准也能够从命令行或甚至在编辑器中自动暗示您的源代码。 Allthat,我甚至没有提到标准的标题功能:您无法配置它!

它是在标准的HQ-ocke over释放的1.0.0版!

在我们在Rubyconf2018推出标准的Ina Lighning谈话时,两年前很难相信。自从释放了80多个工具的迭代以来,从社区的数十个规则变化,以及与数千个有多百万个下载的数千个项目的战斗测试标准的不可规化配置。

随着更多开发人员来依靠标准,我的同事jenniferkonikowski作为一个共同维护者加入,我们并在@bbatsov,@koic刊登了它的贡献者的军团。我们已经学习了留下这些变化的手,是很多工作。因为WeCare地评估了每个曲折的更改,然后将其融入标准的SBASE配置之前,我们的用户额外的价值添加变得显而易见:标准归于每个Rubocop发布的细节,因此您不必!

最后,与其1.0版本相吻合,标准刚刚添加到Bundlertoday作为使用其(优秀)BundleGem脚手架命令创建新的Ruby GEM项目时的可用选项之一。 (如果你使用捆绑宝石,请试一试!它使得创造一个简单的宝石,你将在任何时候都在出版自己的宝石。)

如果您没有使用标准,则很容易开始。只是折腾它intoyour gemfile:

从那里,标准化标准二进制文件将打印出所有的暗示和戏曲。您还可以运行standardrb --fix来自动重新格式化您的码并在COMPER添加标准上获取一个想法在您的CodeBase上的内容。

使用耙子?只需在Rakefile中要求标准以加载标准和标准:修复任务。对于它的价值,我还向我的DefaultTask列表添加标准,如下所示:

如果您还没有使用Linters和Code格式的粉丝,那没关系!在2005年开始使用它时,首先将我吸引我到Ruby的事情是如何自由形式和解放它与Java相比。结果,任何限制Ruby的表现力风险的工具都削弱了首先使用Ruby的最本质的原因!

因此,由于这个原因,我们非常保守关于我们推动标准启用的规则。以下是我们的一些指导原则,Howthey可能会使您的项目受益:

早期捕获自动可检测的错误。 Linter最重要的作用是尽快捕获可避免的错误,通常在保存文件时不会介绍(在CI运行期间在测试中,或内部生产)。 rubocop包含大量的髓内,并标定绝大多数

增加无关紧要的事情的一致性。例如,标准要求所有字符串文字都是双引用的。单引号不包含插值,但不再具有任何表现,因此混合单个&双引号字符串添加了一些认知开销,零可辨别零

减少版本控制流失。标准强制执行一些基本的布局规则:在方法之间asingle空白行,多线程的一个缩进,没有尾随空格等。这些规则的主要好处是削减了有意义的常规的偶然布局变化的偶然布局。一旦您采用标准,您的团队的GIT DiffSwill是激光专注于您的代码的实际行为,而不是其格式

标准基本上是曲折顶部的薄糖壳。我们建立了它,因为rubocop是一个伟大的工具,其右转!标准而不是竞争与讨论,标准旨在利用其宽度的技术能力,以便在尽可能多的红宝石开发人员和CodeBases中建立一系列社区规范。 Ruby的表现形式是其最大优势之一,但相同的灵活性可能导致我们社区中的Balkanization展出,令人垂涎的项目迅速地达成不同的风格规则,标准寻求ToAddress。

消除自行车。当一支团队采用高度可配置的工具likerubop时,努力正常化代码样式,它会创建一个新问题:同意如何配置它。在某些团队中,某些成员可以欺骗:使用像曲曲板这样的工具,以赋予他人的遗嘱,以涉及其他人的配置选择 - 导致他们的队友失去了他们的工作中的代理商。在其他团队中,Linterdoes的融合实际上并没有解决任何代码样式辩论,它只将Bubtate的字段从代码本身转换为配置文件。在您的团队中花费的能量在其他地方可能会更好地花在您的团队中的优点。这就是为什么标准已经有一次辩论和墙壁。 (对于记录,我丢失了论点 - 但我仍然使用标准!)

跨项目的一致性。一些大型组织将维护Asingle Rubocop配置并颁布它在所有存储库中.standard基本上完成了同样的事情,除了它用于使用整个Ruby社区。当从一个标准的Ruby Project切换到另一个标准Ruby Project时,消除了大量的摩擦。您不再需要发出任何心理能源来思考如何调整您的代码风格,以便在该特定项目的约定。作为更多开源项目的标准,如果您在工作中开始使用标准,请有效减少队友的障碍障碍,也是返回开源的障碍!

如果您的团队今天使用曲折,事情进展顺利,一定是为您做什么!但是如果你能够落后于增加一致的Accross Ruby项目的想法将是一个对我们社区的净好处,我希望您将获得标准的第二个外观!

我的一些项目达到1.0。但是,通过标准,我们希望沟通这件事几乎是稳定的,不会从这里开始发出巨大的。也就是说,这项工作难以结束.Rubocop继续成为Ruby生态系统中最多产物的宝石之一,释放了几乎一周的节奏。而且Ruby本身也没有懒散;我们许多人怀疑Matz对Ruby 3.0的承诺2015年,但令人惊讶的是所有的都是真实的!我们的承诺是继续将标准作为Ruby和Rubocop的变化和发展方式的工作,我们将继续与编辑和CI / CDEnCironments等开发人员工具一起投资更好的集成。

如果你一直在努力尝试标准,那么等待尘土定居,现在是开始使用它的美好时机。如果你发现你不喜欢的东西,我们还是想收到你的来信!只需打开anissue或tweet atus。

您的团队是否正在寻找更多高级开发人员?需要得到更多完成,没有切割角落?

让'谈话