Владимир Бычко об управлении проектами

пиэм разъясняет, предостерегает, рекомендует

Тег: код

Базовый чеклист для ревью кода

Ревью кода

 
Я не люблю рецензии и ревью. Они создают ложное чувство безопасности — даже если накосячу, рецензент это обнаружит. Однако любые правила имеют границы применения. Если считаете, что именно для вашего подразделения процесс ревью кода жизненно необходим, почему бы и нет.

Качество ревью можно повысить при помощи карты контрольных проверок. Данный чеклист взят с хабра и является отправной точкой. Какие пункты вам нужны, а какие нет — решайте сами.

Общее
Работает ли код? Выполняет ли он свои прямые обязанности, корректна ли логика, и т. д.
Легок ли код для понимания?
Соответствует ли код вашему стилю написания кода? Обычно это относится к расположению скобок, названиям переменных и функций, длинам строк, отступам, форматированию и комментариям.
Есть ли в ревью избыточный или повторяющийся код?
Является ли код независимым, насколько это возможно?
Можно ли избавиться от глобальных переменных или переместить их?
Есть ли закомментированный код?
У циклов есть установленная длина и корректные условия завершения?
Может ли что-то в коде быть заменено библиотечными функциями?
Может ли быть удалена часть кода, предназначенного для логгирования или отладки?

Безопасность
Все ли входные данные проверяются (на корректный тип, длину, формат, диапазон) и кодируются?
Обрабатываются ли ошибки при использовании сторонних утилит?
Выходные данные проверяются и кодируются (прим. пер.: например, от XSS)?
Обрабатываются ли неверные значения параметров?

Документация
Есть ли комментарии? Раскрывают ли они смысл кода?
Все ли функции прокомментированы?
Есть ли какое-то необычное поведение или описание пограничных случаев?
Использование и функционирование сторонних библиотек документировано?
Все ли структуры данных и единицы измерения описаны?
Есть ли незавершенный код? Если есть, должен ли он быть удален или помечен маркером типа «TODO»?

Тестирование
Является ли код тестируемым? Например, он не должен содержать слишком много зависимостей или скрывать их, тестовые фреймворки должны иметь возможность использовать методы кода, и т. д.
Есть ли тесты и если есть, то достаточны ли они? Например, они покрывают код в нужной мере.
Юнит-тесты на самом деле проверяют, что код предоставляет требуемую функциональность?
Все ли массивы проверяются на «выход за границы»?
Может ли любой тестирующий код заменен с использованием существующего API?

Источник

Эвернот для программиста — Quiver

Многие разработчики сталкиваются с ситуацией — нужно написать функцию, очень похожую на ту, что когда-то уже приходилось писать. Или вообще, повторно использовать ранее написанную функцию. Часто после этого начинаются танцы с саблями — где именно сохранился её код? Иногда — в файлах проекта (он не всегда доступен), иногда — в каком-нибудь файлике.

В принципе, неплохое решение — отдельный блокнот в Evernote. При правильной организации блокнотов и меток полностю решает проблему.

Однако для MacOS есть более изящное решение под названием Quiver. Этакий «Эвернот для программиста». Выглядит так:
01
 
 
Организация заметок — блокноты и неограниченное количество тегов, есть полноценный поиск.

В заметке можно создавать области четырёх видов — просто текст, markdown, программный код и LaTeX. Выглядит так.

Текстовый фрагмент (при желании, можно добавить картинку):
01
 
 
Фрагмент кода (в моём случае это SQL, но поддерживается целое море языков):
01
 
 
Markdown в режиме конструктора (синтаксис стандартный):
01
 
 
Markdown в режиме просмотра:
01
 
 
LaTeX в режиме конструктора:
01
 
 
LaTeX в режиме просмотра:
01
 
 
Отображение областей каждого типа можно настроить при помощи CSS (есть встроенный редактор), в комплекте есть пачка тем для подсветки синтаксиса (я использую GitHub):
01
 
 
Приложение умеет показывать код в режиме презентации:
01
 
 
Библиотеку приложения можно положить в папку Dropbox для синхронизации, используются стандартный JSON формат.
 
 
Недостатки инструмента:

Если положить библиотеку в папку Dropbox, для создания нового блокнота придётся отключать синхронизацию, иначе просто не успеете задать ему имя. Надеюсь, этот баг разработчики в скором времени поправят.

Неудаляемый блокнот с туториалом. Хотя, может быть его и можно как-то удалить, чтобы не маячил.
 
 
Это удовольствие можно купить в апсторе за 9,99 $, либо воспользоваться триалом, скачав с сайта разработчика.

Также, если хотите, можете забрать пакет Quiver 2.0 напрямую.