The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
Это третий год Software Quality Award. Приз остался тем же - $4,096. Правила остаются прежними. Читайте дальше. Предыдущие годы здесь: 2015, 2016.
Один человек может представить только один проект.
Подача заявок принимается до 1 сентября 2017 года.
Я проверю историю коммитов, чтобы убедиться, что вы являетесь основным участником проекта.
Я оставляю за собой право отклонить любое предложение без объяснения причин.
Все представленные материалы будут опубликованы на этой странице (включая отклоненные).
Результаты будут объявлены 15 октября 2017 года на этой странице и по электронной почте.
Лучший проект получит $4,096.
Окончательные решения будут приниматься мной и не подлежат обсуждению (хотя я могу пригласить других людей помочь мне принять правильное решение).
Победители, получившие денежные призы в предыдущие годы, не могут подавать заявки снова.
Каждый проект должен быть:
Как минимум 10 000 строк кода.
Не моложе одного года.
Объектно-ориентированный (это единственное, что я понимаю).
Лучший проект выбирается с использованием следующих критериев.
Что не имеет значения:
Я считаю, что любой язык программирования, используемый правильно, может быть применен для разработки высококачественного продукта.
Шум и тренды. Даже если ваш проект является еще одним парсером аргументов командной строки, он все равно имеет право на награду. Мне не важно ваше маркетинговое положение; все дело в качестве.
Кстати, если вы хотите спонсировать эту награду и увеличить бонус, напишите мне на почту.
Эти 28 проектов, представленных до сих пор (в порядке представления):
JnRouvignac/AutoRefactor
(Java) -JnRouvignac/AutoRefactor
(Java)javaslang/javaslang
(Java) -javaslang/javaslang
(Java)HDouss/jeometry
(Java) –HDouss/jeometry
(Java)ntpsec/ntpsec
(C) -ntpsec/ntpsec
(C)php-ai/php-ml
(PHP) – переведите следующий абзац на русский язык, не переводя технические термины и собственные имена.LobbyOS/lobby
(PHP) -LobbyOS/лобби
(PHP)onqtam/doctest
(C++) -onqtam/doctest
(C++)iboB/dynamix
(C++) -iboB/dynamix
(C++)laravel/framework
(PHP) -laravel/framework
(PHP)zetaops/ulakbus
(Python) -zetaops/ulakbus
(Python)mgramin/sql-boot
(Java) -mgramin/sql-boot
(Java)goreleaser/goreleaser
(Go) -goreleaser/goreleaser
(Go)kogoia/MRTD.NET
(C#) -kogoia/MRTD.NET
(C#)mafagafogigante/dungeon
(Java) -mafagafogigante/dungeon
(Java)javascript-obfuscator/javascript-obfuscator
(TypeScript) -javascript-obfuscator/javascript-obfuscator
(TypeScript)klapuch/Remembrall
(PHP) -klapuch/Remembrall
(PHP)zahasoft/repository
(C#) -zahasoft/repository
(C#)DrBookings/drbookings
(Java) -DrBookings/drbookings
(Java)flyimg/flyimg
(PHP) -flyimg/flyimg
(PHP)miso-belica/sumy
(Python) - miso-belica/sumy (Python)simplcommerce/SimplCommerce
(C#) -simplcommerce/SimplCommerce
(C#)dkhmelenko/Varis-Android
(Java) -dkhmelenko/Varis-Android
(Java)ribtoks/xpiks
(C++) -ribtoks/xpiks
(C++)octaviospain/Musicott
(Java) -octaviospain/Musicott
(Java)ev3dev-lang-java/ev3dev-lang-java
(Java) -ev3dev-lang-java/ev3dev-lang-java
(Java)
[15 сентября 2017] Я пригласил шесть человек, чтобы они помогли мне просмотреть проекты. Их имена:
“Filipe Freire (C/C++, 6 проектов)”
Sergey Kapralov (Java, 3 проекта)
Mihai Andronache (Java, 3 проекта)
Sergey Bukharov (Java, 3 проекта)
Valentin Ignatyev: (Python, 2 проекта)
[15 окт 2017] Это краткое изложение всего, что они мне прислали: award-2017.txt. В ближайшие несколько дней я выберу победителя, оставайтесь на связи!
[21 окт 2017] Мой список включает в себя следующие шесть проектов (в случайном порядке): php-ai/php-ml
, vavr-io/vavr
, zetaops/ulakbus
, mafagafogigante/dungeon
, ribtoks/xpiks
, javascript-obfuscator/javascript-obfuscator
. Завтра (надеюсь) я определюсь, как разделить $4096.
[23 окт 2017] Это мои собственные наблюдения по каждому проекту из короткого списка. Я буду упоминать только негативные моменты, так как все проекты довольно хорошие, нет необходимости говорить, насколько они хороши. Я перечислил проблемы в порядке их важности (самые критические сверху).
php-ai/php-ml
(9.8K строк кода на PHP, 29K строк комментариев):
Getters, setters and mutability in many places Получатели, установщики и изменяемость находятся во многих местах.
NULL находится во многих местах (опять же, я знаю, что в PHP нет перегрузки методов).
-ER: Оценщик, Классификатор, Кластеризатор, Оптимизатор и т.д.
код в конструкторах (да, я понимаю, что это PHP)
пустые строки в телах методов
Score: 5
vavr-io/vavr
(70K LoC Java, 834K HoC):
Есть действительно большие “классы”, они огромные в пакете
io.vavr.collection
.Интерфейс
Seq
имеет более 120 методов! Что происходит?Утилитарные классы, статические методы
Некоторые файлы
.java
содержат несколько классов на языке Java. Почему?Не удалось построить мастер: #2147
Score: 4
zetaops/ulakbus
(25K LoC Python, 707K HoC):
Нет CI, нет покрытия тестами, нет автоматизации статического анализа?
См. комментарии рецензента.
Score: 2
mafagafogigante/dungeon
(14K строк кода Java, 88K строк кода в целом):
Статические методы, геттеры, сеттеры, изменяемость.
Коммиты не связаны с задачами и запросами на слияние.
Во многих местах есть комментарии внутри тела метода, это плохая практика.
Score: 5
ribtoks/xpiks
(180K+ LoC C/C++, 739K HoC):
Типы довольно большие, с множеством методов.
Утилитарные классы, помощники
-ERs: CommandManager, SpellCheckWorker, и т.д.
Я действительно не нашел много документации внутри кода.
Коммиты не связаны с задачами/запросами на слияние (issues/PRs).
Score: 4
javascript-obfuscator/javascript-obfuscator
(72K строк кода JS/TS, 400K строк кода высокого уровня):
Аннотациями управляемые внедряемые зависимости
-ERs: reader, sanitizer, emitter
-ERы: reader (читатель), sanitizer (санитайзер), emitter (излучатель)
Публичные атрибуты в классах
Я считаю, что здесь многие “объекты” являются просто объектами передачи данных (DTO).
Интерфейсы имеют префикс
I
, это является анти-паттерном.Score: 4
В целом, впечатление от этого года состоит в том, что я получаю гораздо меньше мусора. Представлено меньше проектов, но их качество значительно выше, чем в предыдущие два года. Я рад видеть такую тенденцию. Это означает для меня, что я делаю правильные вещи.
На этот раз я уделил больше внимания элегантности ООП и поддерживаемости кодовой базы. Ключевыми факторами для поддерживаемости являются:
Автоматический статический анализ
Автоматизированные сборки (CI)
Automated tests
Дисциплинированные коммиты через задачи и запросы на слияние (PR).
Для элегантности ООП, как обычно, я обратил внимание на отсутствие анти-паттернов, включая NULL, геттеры, сеттеры, статику, изменяемость и т.д.
В этом году есть два победителя: php-ai/php-ml
и mafagafogigante/dungeon
. Но мне не очень нравится код, который я нашел в этих репозиториях. Он, конечно, лучше, чем у всех остальных, но далеко не идеален.
Вот почему я принял такое решение: я дам всего лишь $1,024 каждому победителю, вместо $2,048.
Поздравляю @itcraftsmanpl
с php-ml
($1,024) и @mafagafogigante
с dungeon
($1,024).
Вот ваши значки:
Разместите этот код на GitHub README
(замените ???
своим именем GitHub в URL):
Благодарим всех за участие! Увидимся в следующем году.
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-17 at 15:43