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个项目(随机排序):
”
artem-zinnatullin/qualitymatters
” would be translated to Chinese as “artem-zinnatullin/qualitymatters
”.pholser/junit-quickcheck
by@albogdano
的翻译是:
codeborne/selenide
由 @asolntsev
创建
”
raphw/byte-buddy
” 的Markdown段落。”
AdamsLair/duality
” translates to “【AdamsLair/duality】(https://github.com/AdamsLair/duality)” in Chinese.”
thothbot/parallax
” 请将此链接翻译为中文,不要翻译技术术语和专有名词。”
vmi/selenese-runner-java
” 的中文翻译为:”vmi/selenese-runner-java
“。”
scd4j/gradle-plugins
” should be translated as “scd4j/gradle-plugins
”.”
bladecoder/bladecoder-adventure-engine
” should be translated as “bladecoder/bladecoder-adventure-engine
”.”
Flipkart/phantom
” should be translated as “Flipkart/phantom
” in Chinese.”
NullVoxPopuli/aeonvera
” can be translated to Chinese as “NullVoxPopuli/aeonvera
”.”
mangstadt/ez-vcard
” 的 Markdown 段落请翻译成中文。请不要翻译技术术语和专有名词。axet/desktop
”
DakaraOnline/dakara-server
” 的中文翻译为:”DakaraOnline/dakara-server
””
ppareit/swiftp
” translates to “ppareit/swiftp
” in Chinese.”
DSteve595/Put.io
” 的中文翻译为:”DSteve595/Put.io
””
jaredsburrows/android-gradle-java-app-template
” translated to Chinese is “jaredsburrows/android-gradle-java-app-template
“(https://github.com/jaredsburrows/android-gradle-java-app-template)。”
Belphemur/SoundSwitch
” translates to “Belphemur/SoundSwitch
” in Chinese.”
inklabs/kommerce-core
“请将此Markdown段落从英文翻译成中文,不要翻译技术术语和专有名词。”
sniffy/sniffy
” should be translated as “sniffy/sniffy
” (https://github.com/sniffy/sniffy
)”
RobinJ1995/DistroHopper
” translated into Chinese is “RobinJ1995/DistroHopper
(https://github.com/RobinJ1995/DistroHopper)”.”
DSH105/EchoPet/tree/3.x
” should be translated as “DSH105/EchoPet/tree/3.x
” in Chinese.”
SimonKagstrom/kcov
” translates to “SimonKagstrom/kcov
” in Chinese.”
pedja1/SMC-Android
” translated to Chinese is “pedja1/SMC-Android
“(pedja1/SMC-Android
).”
HeinrichReimer/material-intro
” translated to Chinese: “HeinrichReimer/material-intro
”
【skinny-framework/skinny-framework
](https://github.com/skinny-framework/skinny-framework) 由 @seratch 创建。
”
hsz/idea-gitignore
” 的 Markdown 段落的中文翻译为:”hsz/idea-gitignore
””
doanduyhai/Achilles
” translates to “【doanduyhai/Achilles】(https://github.com/doanduyhai/Achilles)” in Chinese.”
gerc99/SawimNE
” should not be translated as it is a technical term and a proper noun.”
orfjackal/jumi
“请将此Markdown段落从英文翻译为中文,不要翻译技术术语和专有名词。”
wbotelhos/raty
“的中文翻译为:”wbotelhos/raty
””
GautamGupta/Simple-Android-OCR
“的中文翻译为:”GautamGupta/Simple-Android-OCR
”tananaev/traccar
请不要翻译技术术语和专有名词。paypal/squbs
由@akara
创建。”
datavis-tech/reactive-model
” 的意思是datavis-tech/reactive-model
。“
javaslang/javaslang
” translates to “【javaslang/javaslang
](https://github.com/javaslang/javaslang)】” in Chinese.”
lukeFalsina/Grab-n-Run
” translated to Chinese would be “lukeFalsina/Grab-n-Run
“(https://github.com/lukeFalsina/Grab-n-Run
).”
bxbxbai/ZhuanLan
” translates to “bxbxbai/ZhuanLan
” in Chinese.”
apache/wicket
” translates to “apache/wicket
” in Chinese.”
nikolamilosevic86/owasp-seraphimdroid
” would be translated to Chinese as “nikolamilosevic86/owasp-seraphimdroid
”.uniVocity/univocity-parsers
请将以下Markdown段落从英文翻译成中文,不要翻译技术术语和专有名词。”
ben-manes/caffeine
” translates to “ben-manes/caffeine
” (https://github.com/ben-manes/caffeine/
).”
chrisvest/stormpot
” translates to “chrisvest/stormpot
” in Chinese.”
js-cookie/js-cookie
” translates to “js-cookie/js-cookie
(https://github.com/js-cookie/js-cookie)” in Chinese.coala/coala
by@sils
【coala/coala】由【@sils】创建。
”
arzzen/altcoin-bitcoin-explorer
” 的中文翻译如下:”
allure-framework/allure-core
” should be translated as “allure-framework/allure-core
“(https://github.com/allure-framework/allure-core)。”
Cyan4973/zstd
” translates to “Cyan4973/zstd
” in Chinese.”
pmwmedia/tinylog
” 请将此Markdown段落从英文翻译成中文,不要翻译技术术语和专有名词。yi-editor/yi
由@ethercrow
创建。”
reinterpretcat/utymap
” translates to “reinterpretcat/utymap
” in Chinese.”
srdja/Collections-C
” translates to Chinese as “srdja/Collections-C
”
【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发布在这里,但我没找到它们是如何制作的,发布程序在哪里?此外,它们没有任何文档,也没有发布说明。
有一些-ER类,例如
Shrinker
和SampleSizer
(具有代码丰富的构造函数)。“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.cc
,elf-parser.cc
,或html-writer.cc
中。有一些-ER类,例如”writers”、”verifiers”和”parsers”,例如:
AddressVerifier
或DwarfParser
。接口以
I
为前缀,这在面向对象编程中是一种不好的做法,请参阅reporter.hh
。有一些”utils”,我会用类替换它们(其中大部分):
utils.hh
。Score: 4
skinny-framework/skinny-framework
(44K LoC,191K HoC)
我没有找到任何静态分析。
我没有找到代码覆盖率控制,尽管有很多单元测试。
有一些实用类,例如
StringUtil
,DateTimeUtil
。这是MVC,它是面向对象编程中的一个反模式。
有一个ORM,也是一种反模式。
代码的复杂性有时非常高,例如这个文件:
AssociationsFeature.scala
Score: 2
paypal/squbs
(28千行代码,163千字符)
有一些实用类,例如
ConfigUtil
。总体印象是复杂度相当高,例如这些文件非常难以理解:
ServiceRegistry.scala
或UnicomplexBoot.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.py
和Collectors.py
中(也许这是不可避免的,但仍然看起来很奇怪)。一些文件相当长,例如
Lynter.py
或ConsoleInteraction.py
。Score: 5
我找不到一个强大的单一领导者… 让我想一想。
2016年10月23日:今年我没有找到一个单一的领导者,奖金分给了两个项目:pholser/junit-quickcheck
和 coala/coala
(每个项目$2,048)。
这是你们的徽章:
将这段代码放到 GitHub 的 README
文件中(在 URL 中用你的 GitHub 用户名替换 ???
)。
谢谢大家参与!明年再见。
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 05:13