Оффтоп Digital Skynet
180

Как сделать код ревью забавным

Смех продлевает жизнь и улучшает код. Серьезно? Если в вашей компании ревью кода стало скучным и однообразным, скорее читайте новую статью.

В закладки

Я всю жизнь проработал программистом и сделал множество ревью кода. И не раз сталкивался с ревью эпик фич, но не могу сказать, что это был успешный опыт. Если вы когда-нибудь делали код-ревью целого подпроекта, то поймете о чём речь. Уже к 100 файлу я так уставал, что был готов просто плюнуть на все и одобрить реквест. Но толку от такого ревью кода нет.

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

Тут я бы мог написать “Надеюсь, вам понравилась статья. На этом всё”.

Но подождите!

Это совет, как сделать код ревью не таким угнетающим. Но его же можно сделать ещё и забавным!

Используйте мемы в код ревью

Не все это поймут. У нас в команде код ревью всегда проходит весело.

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

Эта простая картинка оказалась действенной. Все посмеялись и стали внимательнее проверять код перед пул реквестом.

Проще и быстрее отправить мем, который передаст суть проблемы, чем писать длинный комментарий.

А все ли это поймут?

Возможно, нет. Это зависит от отношений, которые сложились. Средний возраст сотрудников в нашей команде 25 лет, поэтому все понимают мемы. Было бы странно, если бы мы 40летние серьезные банковские работники, отправляли друг другу картинки.

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

Какие преимущества это дает?

Я говорил ранее, работа пойдет быстрее. Вместо того, чтобы читать длинный комментарий, вы видите картинку, в которой всё кратко, но емко объяснено. Изображения говорят громче слов. Вот, например:

Когда я впервые отправляю картинку, то добавляю описание / объяснение того, что исправить. Мем выше актуален, когда надо что-то удалить.

А Мистера Фриза я использую в Ruby, где мы добавляем #frozen_string_literal: true волшебный комментарий в верхней части файла. Мистер Фриз появляется для любой константы, которая нуждается в замораживании.Однако с RuboCop у руля мы все реже и реже видим его.

Запомните: перебор это плохо. Не переходите разумную черту и не шлите слишком много мемов, так как это будет просто бесить. Соблюдайте баланс.Тогда это сэкономит время и поднимет настроение всей команде.

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

И напоследок:

Адаптированный перевод статьи How to make your code reviews fun (and not dreadful) от Digital Skynet :)

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

Написать
{ "author_name": "Digital Skynet", "author_type": "self", "tags": ["frozen_string_literal"], "comments": 2, "likes": -2, "favorites": 1, "is_advertisement": false, "subsite_label": "flood", "id": 44292, "is_wide": false, "is_ugc": true, "date": "Fri, 24 Aug 2018 10:17:59 +0300" }
{ "id": 44292, "author_id": 187179, "diff_limit": 1000, "urls": {"diff":"\/comments\/44292\/get","add":"\/comments\/44292\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/44292"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791 }

2 комментария 2 комм.

Популярные

По порядку

0

Главное не стать в итоге бесчувственным к мемчикам

Ответить
0

А ещё можно выкладывать комменты к ревью во влог, ведь видео намного приятнее смотреть, чем читать. Читать сложно.

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Команда калифорнийского проекта
оказалась нейронной сетью
Подписаться на push-уведомления
{ "page_type": "default" }