Software Quality Award, 2016

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

这是软件质量奖的第二年。奖金仍然是相同的——$4,096。规则有些改变。继续阅读。顺便说一下,现在是2015年。

  • 一个人只能提交一个项目。

  • 提交截止日期为2016年9月1日

  • 我将查看提交历史以确保您是该项目的主要贡献者。

  • 我保留拒绝任何提交而不给出解释的权利。

  • 所有提交的内容都将在此页面上发布(包括被拒绝的内容)。

  • 结果将于2016年10月15日在本页面和通过电子邮件公布。

  • 最佳项目将获得$4,096

  • 最终决策将由我作出,并且不可协商(尽管我可能会邀请其他人帮助我做出正确的决策)。

  • 之前获得任何现金奖励的获奖者不能再次提交。

每个项目必须是:

  • 至少10,000行代码。

  • 至少一年以上。

  • 面向对象(这是我唯一理解的东西)。

最佳项目是根据以下标准来选择的。

以下内容并不重要:

  • 编程语言。我相信任何语言,只要正确使用,都可以用来设计高质量的产品。

  • 嗡嗡声和趋势。即使您的项目只是另一个命令行参数解析器,它仍然有资格获奖。我不关心您的营销职位;质量才是关键。

顺便说一下,如果你想赞助这个奖项并增加奖金,请给我发电子邮件。

迄今已提交60个项目(随机排序):

codeborne/selenide@asolntsev 创建

skinny-framework/skinny-framework](https://github.com/skinny-framework/skinny-framework) 由 @seratch 创建。

【coala/coala】由【@sils】创建。

checkstyle/checkstyle](https://github.com/checkstyle/checkstyle) 由 @romani 创建

2016年10月15日:我请我们的一位Java开发者对所有项目进行了初步分析。这是他今天给我回复的报告:award-2016.txt(你可以在那里找到你的项目)。我在他的正面和负面方面加入了我的评论(请在那个文本文件中查看)。根据他的意见和初步分析,我选择了这几个入围者。

  • NullVoxPopuli/aeonvera(Ruby)”

  • SimonKagstrom/kcov(C++)

  • skinny-framework/skinny-framework (Scala)”

“skinny-framework/skinny-framework”(Scala)

  • paypal/squbs(Scala)

  • ben-manes/caffeine(Java)

  • coala/coala(Python)

对不起我迟到了,但是我需要几天时间来仔细分析它们,并决定哪个会获奖。我将在10月21日,也就是六天后宣布获胜者。我会给每个人发送电子邮件并在这里公布我的决定。

2016年10月18日:这是我对那七个入围者的分析。我试图尽可能地关注每个项目(它们都相当不错)。

pholser/junit-quickcheck (19K LoC, 80K HoC)

  • GitHub发布在这里,但我没找到它们是如何制作的,发布程序在哪里?此外,它们没有任何文档,也没有发布说明。

  • 有一些实用类,例如ListsItems,和Sequences

  • 有一些-ER类,例如ShrinkerSampleSizer(具有代码丰富的构造函数)。

  • “generators”的设计并不真正面向对象,我猜。它们都是过程的提供者,从OOP的角度来看并不真正是”对象”。

  • Score: 5

NullVoxPopuli/aeonvera(46K LoC, 835K HoC)

  • 这是Ruby on Rails,它是MVC架构,不是真正的OOP。还有一个带有贫血模型的ORM(位于models/目录下)。除此之外,“序列化器”、“服务”、“验证器”等等——也不是真正的OOP。

  • 我没有找到任何 GitHub 发布。

  • 在存储库中,没有官方的发布流程。我根本无法理解这个产品是如何进入生产环境的,这个过程没有自动化(或者脚本不在存储库中)。对于一个网络应用来说,这是一个严重的问题。

  • 除此之外,这个应用程序绝对比许多其他类似的RoR网络应用程序更干净。干得好。

  • Score: 4

SimonKagstrom/kcov(15K LoC,50K HoC)

  • 有些代码段是过于复杂的方法,例如在ptrace.ccelf-parser.cc,或html-writer.cc中。

  • 有一些-ER类,例如”writers”、”verifiers”和”parsers”,例如:AddressVerifierDwarfParser

  • 接口以 I 为前缀,这在面向对象编程中是一种不好的做法,请参阅 reporter.hh

  • 有一些”utils”,我会用类替换它们(其中大部分): utils.hh

  • Score: 4

skinny-framework/skinny-framework(44K LoC,191K HoC)

  • 我没有找到任何静态分析。

  • 我没有找到代码覆盖率控制,尽管有很多单元测试。

  • 有一些实用类,例如StringUtilDateTimeUtil

  • 这是MVC,它是面向对象编程中的一个反模式。

  • 有一个ORM,也是一种反模式。

  • 代码的复杂性有时非常高,例如这个文件:AssociationsFeature.scala

  • Score: 2

paypal/squbs (28千行代码,163千字符)

  • 异常吞咽在这里似乎是一种常见做法,例如:这里这里这里,等等。

  • 有一些实用类,例如 ConfigUtil

  • 总体印象是复杂度相当高,例如这些文件非常难以理解:ServiceRegistry.scalaUnicomplexBoot.scala

  • 得分:3(主要是由于复杂性)

ben-manes/caffeine (47K LoC, 191K HoC) should be translated as: ben-manes/caffeine(47K 行代码,191K 高代码)。

  • 有一些-ER类,例如Weigher可以很容易地重命名为Weight。同样适用于“loaders”和“writers”。

  • Score: 4

coala/coala (15K LoC, 274K HoC)

coala/coala(15K LoC,274K HoC)

  • 有一些-ER类,比如”parsers”,”collectors”,”importers”。

  • 我仍然没有看到一致的代码格式,看到一些行前有这么多空格,而且没有任何逻辑地放在那里,真的很奇怪(至少我看不到那个逻辑,例如 这个示例)。

  • 一些代码是纯粹的全局代码,没有任何类,比如在Processing.pyCollectors.py中(也许这是不可避免的,但仍然看起来很奇怪)。

  • 一些文件相当长,例如 Lynter.pyConsoleInteraction.py

  • Score: 5

我找不到一个强大的单一领导者… 让我想一想。

2016年10月23日:今年我没有找到一个单一的领导者,奖金分给了两个项目:pholser/junit-quickcheckcoala/coala(每个项目$2,048)。

恭喜@pholser@sils,你们是获奖者!

这是你们的徽章:

将这段代码放到 GitHub 的 README 文件中(在 URL 中用你的 GitHub 用户名替换 ???)。

谢谢大家参与!明年再见。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 05:13

sixnines availability badge   GitHub stars