-
Notifications
You must be signed in to change notification settings - Fork 2
Требования к проекту
nefanov edited this page Feb 2, 2021
·
2 revisions
Требования к проектам, сформированные Дмитрием Артуровичем Подлесных с моим последующим ревью:
- Полезность*
- Новизна*
- Переносимость (не только на компьютере автора, в идеале - в rpm или deb пакете).
- Наличие документации (можно понять без автора, что это и как пользоваться).
- Выступление с ним на конференциях/хакатонах/семинарах или публикации*
- Умение автора внести изменения в проект в процессе сдачи (реализовать feature request)
- Код должен быть в репозитории. Отдельные модули и подзадачи проекта должны разрабатываться в отдельных ветках, сливаемых после интеграции.
- Должна использоваться система сборки проекта (например, make), пригодная для автоматизации (не кликом мышки в IDE). Если проект логически разбивается на несколько модулей, в скриптах для их автосборки должны быть представлены отдельные цели.
- Код должен собираться без предупреждений
- Valgrind и address sanitizer не должны находить утечек памяти и т. п.
- Не должно быть явных уязвимостей*
- Код должен быть красиво отформатирован (хотя бы автоматически - см. утилиту indent)
- Должны быть комментарии в коде
- Переменные, функции, файлы, классы, структуры и их поля должны иметь осмысленные названия.
- Программа должна корректно обрабатывать исключительные ситуации (например, нет права на чтение входного файла).
- Всё, что настраивается, должно настраиваться без перекомпиляции проекта (конфигурационный файл, параметры командной строки, переменные окружения, стандартный поток ввода, GUI, web UI, API - по вкусу авторов проекта).
- Переиспользуемый многократно код следует собирать как разделяемые библиотеки.
*Данные условия обсуждаемы, но к их выполнению нужно стремиться.