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)” would be translated to Russian as “php-ai/php-ml
(PHP)”.LobbyOS/lobby
(PHP)LobbyOS/lobby
(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) - перевод не требуется.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 LoC PHP, 29K HoC):
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. Почему?Не удалось создать ветку master: #2147
Score: 4
zetaops/ulakbus
(25K строк кода на Python, 707K строк кода вместе с комментариями):
Нет CI, нет тестового покрытия, нет автоматизации статического анализа?
Посмотрите комментарии от рецензента.
Score: 2
mafagafogigante/dungeon
(14K строки кода на Java, 88K суммарное количество символов):
Статические методы, геттеры, сеттеры, изменяемость
Коммиты не связаны с задачами и запросами на слияние (PR).
В комментариях внутри тела метода есть во многих местах, это плохая практика.
Score: 5
ribtoks/xpiks
(180K+ LoC C/C++, 739K HoC):
Типы довольно большие, с множеством методов.
Утилитарные классы, помощники
-ERы: CommandManager, SpellCheckWorker и т. д.
Я не нашел много документации внутри кода.
Коммиты не связаны с задачами/запросами на внесение изменений (issues/PRs).
Score: 4
javascript-obfuscator/javascript-obfuscator
(72K строк JS/TS, 400K строк HoC):
Аннотации для внедрения зависимостей
-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).
Вот ваши значки:
Разместите этот код в файле README
на GitHub (замените ???
на свое имя пользователя на GitHub в URL).
Благодарим всех за участие! Увидимся в следующем году.
Translated by ChatGPT gpt-3.5-turbo/36 on 2023-11-17 at 12:45