Pull to refresh

Comments 9

Привет! Спасибо за материал! Подскажи есть ли идеи как выторговать время на правку 1000+ ошибок во время спринта при внедрении стайл гайда?

Привет!
Торговаться не нужно и не обязательно сразу править всё, в статье описала два способа
1) Настроить прогон линтеров по измененным файлам, это уменьшит время прогона линтеров локально и в ci. Уже по мере написания кода разработчик будет править ошибки в файлах и легче править понемногу, чем сразу всё (а некоторые файлы возможно не нужно править, которые не меняются)
2) Автоматически расставить eslint-disable-next-line и уже если будет код переписываться, то сразу перейдет на новый стиль кода

Важно уметь договариваться в команде, так как качество кода влияет сразу на всех.

Есть подход "Clean as you code", который реализован в SonarQube и которого их команда рекомендует придерживаться в целом - он как раз об этом. Чтобы внедрение статического анализа не было равносильно срыву стоп-крана. Код будет анализироваться весь, но ругаться и блокировать PR он будет только на новом коде (фрагменте кода). Так не возникнет необходимости сразу переписывать все, однако неудовлетворяющий требованиям новый код протащить не удастся.

На коленке примерно такое реализовать тоже возможно: при сборке на стороне CI вычисляете дифф между source и target ветками, так понимаете, где были изменения и линтите только это. OP на этот вариант также сослалась.

Линтеры линтят не только пробелы с запятыми, потому в старье найдется скорее всего много чего интересного, это уже можно без паники спокойно закинуть в бэклог как существенный техдолг и также спокойно потом включить в какой-то спринт.

Позанудствую. У Вас в примерах интерфейсы именуются не с буквы I, а типы не с буквы T :)

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

Согласен, не актуально. Мы вообще так пишем:
public interface ZData
{
public object zDt { get; }
}

  • Сарказм

Я бы отметил что все это хорошо, но тоже "не бесплатно". Вы добавили несколько файлов с кодом, который надо поддерживать и который зависит еще от пары сторонних библиотек. Он может сломать ci в самый неподходящий момент.

А какая у вас мотивация предпочитать интерфейсы вместо типов?

Предположу что композиция с классами 🤔

Sign up to leave a comment.