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

Ссылка: @Portal_v_IT

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

РКН: clck.ru/3Ht6ch
加入频道
Почему лучшие разработчики чаще говорят "Нет"

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

Более того, когда сроки выполнения задач ставятся адекватно возможностям, менеджеру проекта не приходится рассчитывать на то, что не будет сделано, в надежде продемонстрировать готовый продукт клиентам. Однако стоит говорить "Да", когда вы уверены в себе и готовы проверить себя на прочность и заодно узнать, на что вы способны.

Подробнее

#programming #behaviour
Ветеран

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

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

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

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

#tips #programmer_type
Instabug

Instabug - инструмент для генерирования отчетов об ошибках, возникающих во время использования мобильных приложений, поддерживающий iOS, Android, Xamarin, React-native, Unity. Такие компании, как T-Mobile, eBay, Lyft используют Instabug для повышения качества своих программных продуктов.

Instabug интегрируется с Jira, Slack, Github, чтобы сохранить текущий рабочий процесс вашей команды и помочь ей сосредоточиться на исправлении багов.

Github | Jira | Slack

#tools #bug_reporting
Не используйте else в своём коде.

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

Советы из статьи справедливы не только для JavaScript, но и для большинства современных языков.

Подробнее

#programming #clean_code
Semaphore

Semaphore позволяет тестировать и развертывать код одним нажатием кнопки с использованием непрерывной интеграции. После того как вы "запушите" изменения в репозиторий Github, Semaphore запустит тесты и осуществит автоматическое развертывание с помощью Docker.

Можно легко кастомизировать работу Semaphore через переменные среды, конфигурационные файлы и дополнительные пакеты.

Github

#tools #continuous_integration
Не используйте параметры метода в качестве рабочих переменных

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

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

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

#tips #clean_code
Предпочтение полиморфизму

Большое число блоков case может указывать на необходимость в рефакторинге, который заключается в замене блока наследованием. Методы DrawCircle() и DrawSquare() следует заменить единственным методом Draw(), который будет поддерживать рисование и окружностей, и прямоугольников.

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

#tips #polymorhism
Как чистый код влияет на вычислительную мощность.

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

Действительно ли так губительны практики написания чистого кода для вычислительной мощности, как это кажется на первый взгляд? Автор статьи предлагает провести тесты на основе встроенных функций и библиотек Python. Конечно, это может быть справедливо только в рамках данного языка, но результаты тестов вас заставят задуматься.

Читать (3 мин.)

#programming #efficiency
3,14-тон курс от Skillbox

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

Онлайн-университет Skillbox
приглашает новичков и начинающих разработчиков пройти курс по профессии «Python-разработчик».

За время онлайн-обучения вы научитесь:
❶ Создавать модульные программы: от скриптов до чат-ботов
❷ Тестировать код
❹ Работать с базами данных

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

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

Codebeat хорошо интегрируется со Slack, HipChat, Github, BitBucket и GitLab таким образом, что ваш рабочий процесс не будет затронут. Инструмент позволяет управлять метриками проекта, а также производить менеджмент команды разработчиков.

GitHub

#tools #static_analyzer
7 инструментов для команд разработчиков

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

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

Читать (4 мин.)

#programming #tools
Чистота нам только снится.

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

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

Читать статью (5 мин.)

#programming #clean_code
Фанатик

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

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

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

#tips #programmer_type
Как писать SOLIDно

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

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

Читать статью (6 мин.)

#programming #solid
Rollbar

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

Глубокое взаимодействие с исходным кодом;
Отслеживание истории развертываний;
Синхронизация с GitHub Issues;
Рекомендации по исправлению ошибок в коммитах;

Rollbar поддерживает все самые популярные языки: JavaScript, PHP, Ruby, Python, Java, C# и др. Помимо GitHub, он интегрируется с продуктами Atlassian.

GitHub | Atlassian

#tools #error_fixing
5 практик Git, которые помогут работать эффективнее.

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

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

Читать статью (5 мин.)

#programming #git
Множественный возврат

Грамотное использование операторов return для обеспечения множественного возврата из метода может значительно повысить читабельность кода.

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

#tips #clean_code
Как читать техническую литературу

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

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

Читать статью (5 мин.)

#programming #books
Идеальный программист

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

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

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

#tips #programming_type
6 привычек высокоэффективных программистов

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

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

Подробнее (5 мин.)

#programming #principles
Code Inspector

Инструменты помогают в разработке качественного ПО, сегодня вы познакомитесь с платформой для анализа кода — Code Inspector, которая осуществляет автоматический анализ кода, управление техническим долгом и строит графики тенденции качества кода.

Доступ к данным Code Inspector можно получить через GraphQL API; поддерживает, помимо GitHub, интеграцию с Slack, Google Chrome Extension, Mergify.

Github | Mergify | Slack

#tools #code_analysis