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

Ссылка: @Portal_v_IT

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

РКН: clck.ru/3Ht6ch
加入频道
Zube

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

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

Github

#tools #project_management
Жажда скорости

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

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

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

#tips #bad_programmers
Обрабатывайте ошибки правильно

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

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

Подробнее

#programming #error_handling
Отладчик

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

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

#tips #debugger
Когда я уже стану полноценным кодером

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

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

Подробнее

#programming #self_improvement
Важность программной архитектуры

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

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

#tips #architecture
Как не терять продуктивность на протяжении рабочего дня

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

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

Подробнее

#programming #efficiency
Codefresh

Codefresh - контейнерная платформа CI/CD, которая позволит вам быстрее собирать и развёртывать ваши проекты. Она работает на Kubernetes со встроенным кэшированием, чтобы обеспечить максимальную производительность и высокую масштабируемость.

Codefresh поддерживает развертывание как в облаке, так и в ваших локальных кластерах Kubernetes. Помимо поддержки Kubernetes, Codefresh можно настроить для работы с ECS, Serverless, Swarm.

Github

#tools #continuous_integration
Шаблон креативного дизайна - Прототип

Знание инструментов программирования значительно упрощает поиск решения и позволяет сэкономить время. Использование шаблонов проектирования является незаменимой практикой среди программистов.

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

Подробнее

#programming #design_patterns
Полная отдача в решении проблем

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

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

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

#tips #good_programmers
Используйте Композицию вместо Наследования

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

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

Подробнее

#tips #programming
Плановик

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

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

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

#tips #programmer_type
CodeScene

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

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

Технологии анализа данных в репозитории основаны на книге "Software Design X-Rays".

GitHub | Tutorial | Book

#programming #tools
Почему лучшие разработчики чаще говорят "Нет"

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

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

Подробнее

#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