Требования к коду
DoD (Definition of Done)
Критерии готовности - проверяются по каждой задаче командой до релиза
Статья о DoD
- Код хорошо написан. То есть команда не чувствует необходимости немедленно проводить рефакторинг или переписывать его.
- Код отформатирован по eslint
- К коду написаны комментарии (ответственность модуля, основные моменты логики)
- В логах нет вывода перс данных (и вообще нет лишних console.log)
- Код поставляется с автоматическими тестами на всех соответствующих уровнях.
- Код работает в seamonkey 2.35 - только для проектов БыстроБанка
- Код проверен, прошел автотесты.
- Код-ревью выполнен
- Необходимые переменные окружения добавлены в web.xml, .env.example
- На внешние сервисы есть заглушки или api-тестовая среда
- Обновления метаданных базы данных оформлены в миграции
- Ручное тестирование прошло успешно
- Проверка на уязвимости прошла успешно
- Реализованная функция была описана в документации для конечного пользователя.
- При релизе в package.json обновлена версия приложения
Именования переменных
Называть в соответствии с содержимым
Для полей модели используется camelCase
Обратить внимание
Вместо +params.value лучше явное преобразование parseInt(params.value)
Не использовать var, let
Особенности вычислений с плавающей точкой
2.51 + .01; // => 2.5199999999999996
currency(2.51).add(.01); // => 2.52используйте
import currency from 'currency.js';
currency(7.89).add(c1).add(c2); // => "13.68"иначе вылазят такие казусы
Назначение платежа: Пополнение лицевого счета 116 НДС не облагается. Остаток на счете: 3386 руб.
Рекомендуемая сумма пополнения: 139042.83000000002 руб
Отладка и логирование
В логах не допускается вывод персональных данных клиентов (даже в режиме debug)
Для отладки использовать debug вместо console.log();
import createDebug from 'debug';
const debug = createDebug('icompany-XXX');в коде
debug(....);Пример: https://github.com/iconicompany/icompany/blob/master/src/Application.mjs
тогда можно на сервере включать и выключать
DEBUG=icompany-*
DEBUG=icompany-messagesОтправка сообщений об ошибках на почту
Повесить errormailer на обработчик ошибок
в /libs/middlewares/index.mjs
import { notify } from '@ilb/mailer/src/errormailer';
export const onError = (err, req, res) => {
...
notify(err).catch(console.log);
...
}И админам прописать SERVER_ADMIN с почтами в .pm2/processes.json:
- закомментировать в .env:
#apps.strizhinvest.server_admin- добавить или изменить запись в processes.json:
"env":
"SERVER_ADMIN": ""