Как договориться о кодовой базе с коллегой, если у вас разные мнения

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

Итак, мы проводим проверку кода друг друга, и я знаю, что он очень любит стилизовать код и быть последовательным во всем приложении.

Теперь я просмотрел его код и сделал несколько предложений по стилю кода и соглашениям, и я всегда объяснял, почему я думаю, что это лучше.

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

Затем я снова ответил на его утверждение, используя эти примеры и снова пытаясь объяснить, почему я предпочитаю именно то, что предложил.

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

Мой вопрос в том, как я могу заставить его согласиться со мной, не заставляя его? И что мне делать, если он никогда не согласится с моими пунктами? Также мне не нравится, что он решил отложить это обсуждение. Должен ли я спросить его, когда мы обсудим это тогда?

Многие IDE позволяют форматировать правила. Там, где я работаю, мы полностью избегаем вашей проблемы, имея предопределенный набор стилей кодирования, а автоматическое форматирование отформатирует файлы в соответствии с этими правилами. Затем появляется единственный стиль времени «пожалуйста, автоматически отформатируйте свой код» и все. Правила были согласованы в компании и открыты для обсуждения, но все должны соблюдать то, что согласовано.
Мы используем линтеры и IDE, но это больше касается выяснения правил, которым мы хотим следовать. и это вызывает много дискуссий.
Подождите, кто из вас ратует за «улучшения», которые отличаются от текущего домашнего стиля / того, как вы делаете вещи. Ты или он?

Ответы (2)

Это происходит почти везде (так что вы не одиноки) Я дам вам совет, который даю всем:

Прекратите комментировать стилистические/косметические идеалы в ваших код-ревью.

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

  1. Логические ошибки
  2. Пропущенные требования
  3. Пограничные случаи
  4. Стиль (только если код не имеет смысла и потребует рефакторинга)

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

Но даже в этом случае это делается просто для того, чтобы показать, что вы действительно читали код и способны сделать предложение. Если коллега не хочет применять рекомендованный вами стилистический подход, оставьте его в покое (если только это не вызовет проблем с читаемостью/не сбивает с толку до точки рефакторинга).

На мой взгляд, если ваш обзор кода в основном состоит из стилей, возможно, вы недостаточно его проверяете. Я могу сосчитать по пальцам одной руки, сколько раз я мог прокомментировать только стиль.

Я уже был бы счастлив, если бы над проектом работал только один человек и во всей кодовой базе был единый стиль. Но если нет автоматических инструментов для отступов и тому подобного, вам обычно не везет.
Мне нравится ваша оценка обзоров кода и того, что в них нужно сказать, но я хотел бы добавить один момент. Также разрешено оставлять положительные отзывы. Если что-то действительно круто, нет ничего плохого в том, чтобы указать на это!
@simbabque Я полностью согласен, я тоже так делаю. Особенно для новых людей. Сказав что-то вроде «Мне очень нравится, как ты справился с Х» или «Я бы и не подумал о Y», можно повысить их уверенность и самооценку.
Что, если вы прокомментируете пограничный случай, но не сможете с этим согласиться (например, «этот пограничный случай невозможен» и т. д.). Вам по-прежнему нужен способ разрешить разногласия во мнениях.
В этот момент вам нужно будет провести дискуссию. После того, как вы сделали свои предложения (в письменном виде), проведите обсуждение. Если автор просто упрямится и не хочет, это их прерогатива. Вы упомянули об этом во время проверки кода, и именно этот человек должен убедиться, что комментарии из проверки кода реализованы. Если они решат не делать этого, им лучше надеяться, что крайний случай не возникнет, потому что это будет выглядеть довольно плохо, если он будет идентифицирован, а они решили не делать этого.
«Прекратите комментировать стилистические/косметические идеалы в обзорах кода». Можете работать в небольшой компании, но попробуйте написать код для многонациональной инженерной компании, и вам это сойдет с рук. Лошади для курсов и т.д...

Важным аспектом является удаление из уравнения обсуждения «он сказал, я сказал».

Вам нужно несколько вещей на месте;

  1. Определенный стандарт кодирования. Игнорируйте все, что уже было опубликовано в ваших репозиториях; определить, как будет выглядеть хорошо написанный фрагмент кода в будущем.
  2. Определенный рабочий процесс для перемещения кода через разработку, рецензирование, контроль качества и публикацию. Это определение рабочего процесса будет включать следующий пункт...
  3. Инструмент статического анализа кода, такой как Lint (доступны и другие, в зависимости от ваших языков разработки). Если код не проходит проверку Lint, его не следует отправлять на экспертную оценку.

Стандарты кодирования важны. В способе написания кода все еще есть место для индивидуальности, но наличие базового набора стандартов кодирования означает, что будущие разработчики могут быстро освоить кодовую базу.

У вас будет большой технический долг в существующей кодовой базе, но это сделано и работает — двигайтесь дальше, а не назад. Этот технический долг будет существовать как проект «намочить ноги» для любых будущих разработчиков, которые присоединятся к команде.