Skip to content

Требования к проекту

nefanov edited this page Feb 2, 2021 · 2 revisions

Требования к проектам, сформированные Дмитрием Артуровичем Подлесных с моим последующим ревью:

  1. Полезность*
  2. Новизна*
  3. Переносимость (не только на компьютере автора, в идеале - в rpm или deb пакете).
  4. Наличие документации (можно понять без автора, что это и как пользоваться).
  5. Выступление с ним на конференциях/хакатонах/семинарах или публикации*
  6. Умение автора внести изменения в проект в процессе сдачи (реализовать feature request)
  7. Код должен быть в репозитории. Отдельные модули и подзадачи проекта должны разрабатываться в отдельных ветках, сливаемых после интеграции.
  8. Должна использоваться система сборки проекта (например, make), пригодная для автоматизации (не кликом мышки в IDE). Если проект логически разбивается на несколько модулей, в скриптах для их автосборки должны быть представлены отдельные цели.
  9. Код должен собираться без предупреждений
  10. Valgrind и address sanitizer не должны находить утечек памяти и т. п.
  11. Не должно быть явных уязвимостей*
  12. Код должен быть красиво отформатирован (хотя бы автоматически - см. утилиту indent)
  13. Должны быть комментарии в коде
  14. Переменные, функции, файлы, классы, структуры и их поля должны иметь осмысленные названия.
  15. Программа должна корректно обрабатывать исключительные ситуации (например, нет права на чтение входного файла).
  16. Всё, что настраивается, должно настраиваться без перекомпиляции проекта (конфигурационный файл, параметры командной строки, переменные окружения, стандартный поток ввода, GUI, web UI, API - по вкусу авторов проекта).
  17. Переиспользуемый многократно код следует собирать как разделяемые библиотеки.

*Данные условия обсуждаемы, но к их выполнению нужно стремиться.

Clone this wiki locally