Исходное сообщение: http://jetrockets.pro/blog/how-to-automate-your-workflow-with-vs-code

Как единый код помогает нам повысить эффективность нашей команды и что мы используем для его написания.

«Программы должны быть написаны для того, чтобы люди могли их читать, и только случайно - чтобы машины могли их выполнять». - Гарольд Абельсон.

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

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

Не по теме

Раньше мы считали, что словесных договоренностей о стиле кода внутри компании достаточно. Однако с ростом нашей команды мы пришли к выводу, что ошибались. Например, фронтенд-разработчики в разных проектах написали свойства CSS в разном порядке, или кто-то использовал синтаксис Hash Rocket (: foo = ›« bar ») в ruby.

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

Пришлось уделять слишком много внимания очевидным вещам и просто культуре написания кода, хотя линтеры с этими задачами отлично справляются. Стало понятно, что нам нужен единый редактор с одинаковыми настройками рабочего пространства и, попробовав самые популярные редакторы, такие как Atom, Sublime и VS Code, остановились на последнем.

Что мы сделали

Привязки клавиш.
Первая проблема, которую нам нужно было решить при переходе к единому редактору, заключается в том, что все привыкли к разным горячим клавишам. Когда вы переключаетесь на новый редактор, вы всегда сталкиваетесь с одной и той же проблемой - вам нужно выучить новые горячие клавиши. Вы привыкли только к одной комбинации, типа бац - и вдруг все по-другому. Вы начинаете уделять повседневным делам больше времени, чем обычно, и еще раз задумываетесь, целесообразно ли вообще переключаться на что-то новое. Я уверен, что многие разработчики неоднократно сталкивались с этим, поэтому они обязательно оценят мощь плагинов с привязками клавиш популярных редакторов. Суть проста. Вы помните все горячие клавиши в Atom - загрузите соответствующий плагин, и новый редактор начнет реагировать на обычные команды. Раньше работали в Sublime? Нет проблем - вам просто нужно установить расширение Sublime Text Keymap. Также есть расширения для Vim, Visual Studio и многих других. Полный список расширений раскладки клавиатуры можно найти здесь.

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

Красивее.
Для работы с JavaScript мы в JetRockets используем ESLint с нашей конфигурацией, основанной на Руководстве по стилю JavaScript Airbnb. С появлением Prettier в нашем наборе инструментов большое количество стилистических правил в конфигурации стало ненужным. В конце концов, зачем вам беспокоиться о стиле, если Prettier все форматирует за вас? Мы рекомендуем этот инструмент всем.

Синхронизация настроек.
Как упоминалось выше, самое сложное при переходе к следующему редактору - это выучить новые сочетания клавиш и начать использовать их, как те, которые давно внедрялись в мозг. Вторая по важности проблема - синхронизация настроек. Было бы здорово иметь возможность синхронизировать настройки и устанавливать расширения, как в браузерах. И сейчас есть такая возможность.

Расширение Синхронизация настроек позволяет синхронизировать установленные расширения, настройки, темы, горячие клавиши клавиатуры и многое другое. И для синхронизации не требуется сторонний облачный сервис - все работает через GitHub. В нашей компании мы пришли к ситуации, когда у нас есть отдельная суть, в которой хранятся данные о конфигах и необходимых расширениях. Теперь все, что вам нужно для настройки самой последней рабочей среды, - это установить плагин Settings Sync и загрузить последнюю версию конфигурации из gist с помощью горячих клавиш Shift + Alt + D.

Что у нас есть

  1. Выявление ошибок. Разработчики начали мгновенно замечать свои простые ошибки, такие как опечатки, неточности, дублирование.
  2. Обеспечьте соблюдение соглашений о стилях кода. Мы создали правила для линтера на основе самых популярных в сообществах. Теперь вся команда пишет в одном стиле, до такой степени, что если вы посмотрите на код, кажется, что его написал один и тот же человек.
  3. Проверка кода. Намного лучше увидеть проблему сразу, чем когда на нее укажет более опытный товарищ по команде, особенно если эти проблемы связаны с формулировкой. Мгновенная реакция рабочего пространства помогает вам быстро изучить механизмы написания кода и тратить меньше времени на проверку кода.
  4. То же рабочее пространство. Теперь помощь коллеге проходит гладко и эффективно. Потому что вы работаете на чужом компьютере как на своем собственном. Текстовый редактор, линтеры, сниппеты и даже горячие клавиши одинаковы - все в порядке.

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

В погоне за единообразием необходимо не забывать, что самое ценное - это люди, а все приемы вторичны. Если в вашей компании есть «правильные» люди, все остальное не имеет значения. Поэтому, уделяя должное внимание единообразию, следует проявлять понимание индивидуальных вкусов и привычек.