Clean Code
13.3K subscribers
2.3K photos
5 videos
2.94K links
Советы по написанию кода, обзоры распространенных ошибок и многое другое.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

РКН: clck.ru/3Ht6ch
Download Telegram
LGTM

Платформа для анализа кода, которая фокусируется на поиске критических уязвимостей и предотвращении проблем.

LGTM проводит более чем 1600 тестов, и, находя проблему, автоматически помечает её в pull request.

LGTM очень хорошо справляется со своей работой благодаря исследованиям команды в области безопасности, которая на текущий момент нашла более ста CVE (Common Vulnerabilities and Exposures) в таких больших проектах, как UBoot, Apache Struts, ядро Linux, Memcached, VLC и Apple XNU.

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

📑 Сайт

Clean Code #инструменты #CodeReview
DeepSource

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

Примеры анализируемых проблем:

— используемый модуль не согласуется с требованиями к ПО;
— в репозиторий закоммичена конфиденциальная информация.

DeepSource автоматически добавляет аннотации и комментарии к pull request’ам, облегчая обнаружение проблем и гарантируя безопасность конфиденциальных данных. Это ускоряет процесс code review и обеспечивает более высокое качество проекта.

📑 Сайт

Clean Code #инструменты #CodeReview
Как сделать хорошее ревью кода?

Senior объясняет: ревью кода — это хлеб с маслом для разработчиков программного обеспечения, но многие ли из нас знают, как это делать правильно? За многие годы автор приобрел множество отличных практик — ими он делится в этом видео.

📺 YouTube

Clean Code #видео #cleancode #CodeReview
📑 Code review по-человечески (часть 1)

Обычно статьи о лучших практиках code review фокусируются на поиске багов, практически игнорируя другие компоненты ревью. Конструктивное и профессиональное обсуждение обнаруженных проблем? Неважно! Просто найди все баги, а дальше само сложится. В этой статье обсуждаются техники, которые предполагают, что code review — не только технический, но и социальный процесс.

Clean Code #статьи #CodeReview
📑 Code review по-человечески (часть 2)

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

Clean Code #статьи #CodeReview
🧑‍💻 Всегда начинайте с позитива

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

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

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

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

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

Clean Code #совет #cleancode #CodeReview
🧑‍💻 Не «ты», а «код»

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

То же самое можно отнести и к ревью кода. Когда критикуете что-нибудь, важно избегать слова «ты» («вы»). Человеку и без того трудно принять критику его работы, так что не надо усложнять эту задачу, заставляя его прочувствовать, что это именно он был неправ. Например, можно совершенно изменить тон своего комментария, заменив «У тебя в в 25-й строке непонятная логика» на «Мне непонятна логика в 25-й строке». Я точно знаю, какой вариант я бы предпочла услышать, если бы это мой код просматривали.

Clean Code #совет #cleancode #CodeReview
🧑‍💻 Используйте комментарии строк

Для большинства проектов наша команда использует GitHub. Одна из моих любимых фич этой платформы – возможность запостить комментарий, касающийся конкретной строки кода. Это избавляет нас от многих трудностей, а также помогает не допустить возможной путаницы, которая возникает при написании объемных комментариев с указанием строк и файлов. Если большая часть ваших комментариев – единичные изменения, функционал GitHub может помочь в создании простого чекбокса поправок, которые нужно внести.

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

Clean Code #совет #cleancode #CodeReview
🧑‍💻 Как можно раньше устанавливайте стандарты оформления кода и используйте инструменты, которые могут помочь в проведении ревью

Нужно как можно раньше устанавливать стандарты написания кода для вашего проекта.

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

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

Clean Code #совет #cleancode #CodeReview
🧑‍💻 Начинайте с общего плана, а затем углубляйтесь в детали

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

1) Есть ли здесь проваленные тесты? Если да, то в чем причина?
2) Есть ли в этом пул-реквесте лишние файлы?
3) Можно ли выполнить checkout этой ветки без единой ошибки?
4) Была ли обновлена соответствующая документация, отражены ли в ней представленные в коде изменения?
5) Добавлены ли в проект новые пакеты или зависимости? Если да, то почему? Нужны ли они?
6) Является ли HTML валидным, семантическим и доступным?
7) Соответствует ли CSS стандартам проекта? Как насчет межбраузерной совместимости?
8) Соответствует ли JavaScript стандартам проекта? Является ли он модульным? Легко ли прослеживается логика? Учтены ли edge cases?

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

Clean Code #совет #cleancode #CodeReview
🧑‍💻 Отведите время на ревью кода

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

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

Clean Code #совет #cleancode #CodeReview
🧑‍💻 Оговаривайте свои ожидания

Вы привязываете ваши пул-реквесты к выпускам? Для подтверждения пул-реквеста требуется определенный формат? Есть ли у вас ограничение на количество строк в единичном пул-реквесте?

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

Clean Code #совет #cleancode #CodeReview
🧑‍💻 Почаще пересматривайте свой процесс ревью кода

Очень важно при работе над проектом оставлять время для обдумывания и обсуждения прошедших ревью.

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

Clean Code #совет #cleancode #CodeReview
🧑‍💻 Каждая проблема может иметь больше одного решения

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

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

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

Clean Code #совет #cleancode #CodeReview
📑 Code Review – зачем и как использовать в команде?

Code Review — это процесс проверки и анализа кода задачи разработчиком перед ее релизом. CR (Code Review) выполняется не тем человеком, который делал задачу, а другими членами команды. Результатом CR является обратная связь по выполненной задаче: необходимость внести правки, либо готовность задачи к последующему тестированию и релизу.

Clean Code #статьи #CodeReview
📑 Код-ревью для начинающих: советы и ориентиры из практики

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

Clean Code #статьи #CodeReview
RhodeCode

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

📑 Сайт

Clean Code #инструменты #CodeReview
Smartbear

Это инструмент для ревью кода и документов для команд разработчиков. В дополнение к ревью исходного кода, Collaborator позволяет командам провести ревью проектной документации.

Collaborator поддерживает большое количество систем контроля версий как Subversion, Git, CVS, Mercurial, Perforce, и TFS. Он хорошо справляется с интеграцией в популярные инструменты управления проектами и IDE (интегрированные среды разработки), такие как Jira, Eclipse, и Visual Studio.

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

📑 Сайт

Clean Code #инструменты #CodeReview