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

Ссылка: @Portal_v_IT

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

РКН: clck.ru/3Ht6ch
加入频道
Упрощайте сложные булевые проверки

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

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

#tips #refactoring
Как быть хорошим Senior Developer?

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

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

Читать статью

#selfimprovement #careers
Visual Assist

Многие задаются вопросом, как снизить сложность кода, повысить его читабельность, сделать его расширяемым. Для C/C++, C# разработчиков есть мощный инструмент - Visual Assist. Помимо перечисленных функций, он позволяет автоматически генерировать код и исправлять ошибки во время его написания.

#tools #productivity
Генерируйте исключения на правильном уровне абстракции

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

Функция GetTaxId() передает низкоуровневое исключение EOFException вызывающей стороне. Она не обрабатывает исключение сама, а раскрывает некоторые детали своей реализации, генерируя низкоуровневое исключение.

Вместо этого код GetTaxId() должен передавать исключение, соответствующее интерфейсу класса, частью которого он является. Код обработки исключений внутри GetTaxId(), возможно, просто устанавливает соответствие между исключениями io_disk_not_ready и EmployeeDataNotAvailable,
что гораздо лучше, так как сохраняется абстракция интерфейса.

#tips #exception
Что такое Компонентно-ориентированное программирование(COP)

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

Читать статью

#programming #cop
Защитное программирование

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

Читать статью

#programming #defensive
Псевдокод для профи

Написание псевдокода метода — целое искусство. У каждого понятие прекрасного своё, но вот основные принципы построения грамотного псевдокода:
❶ Формулировки должны точно описывать действия;
❷ Использования синтаксических элементов следует избегать;
❸ Описывайте назначение подхода, а не то, как этот подход нужно реализовать на конкретном ЯП.

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

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

#tips #pseudocode
Чистый код и рефакторинг

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

Читать статью

#cleancode #refactoring
Agile - гибкая методология разработки

Agile как методология не о том, как идти быстро, а о том, чтобы знать, куда идти.

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

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

#software #agile
Шаблоны проектирования - Наблюдатель

Вероятно, наиболее популярный поведенческий паттерн проектирования, который создаёт механизм подписки, позволяющий одним объектам следить и реагировать на события, происходящие в других объектах. Поможем разобраться в сути паттерна и рассмотрим практическое применение. Чтобы оптимально использовать данный паттерн, необходимо “копнуть поглубже” и понять его особенности.

Читать статью

#designpatterns #observer
Основные советы по использованию указателей

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

❶ Изолируйте операции с указателями в методах или классах;
❷ Выполняйте объявление и определение указателей одновременно;
❸ Удаляйте указатели в той же области действия, где они были созданы;
❹ Проверяйте переменную, на которую ссылается указатель, перед ее использованием;
❺ Упрощайте сложные выражения с указателями;
❻ Нарисуйте картинку;
❼ Уничтожайте мусор.

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

#tips #pointers
C# 8.0. Новые возможности.

Релиз .NET Core 3.0 привнес много интересных особенностей и, как часть нового релиза, вышла новая версия C# - 8.0.

Разработчиков ждут:
❶ Обнуляемые ссылочные типы, устраняющие проблемы с постоянными NullReferenceException.
❷ Асинхронные перечислители, помогающие в реализации шаблонов Производитель/Потребитель
❸ Новый синтаксис оператора Switch
❹ Использование деклараций для лаконичности кода
❺ Улучшения индексации массивов и коллекций

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

Читать статью

#programming #csharp
Аргументы-селекторы

Ничто так не раздражает, как висящий в конце вызова функции аргумент false. Зачем он здесь? Что изменится, если этот аргумент будет равен true? Смысл селектора трудно запомнить, но дело не только в этом — селектор указывает на объединение нескольких функций в одну.

Каждый раз, когда вы встречаете вызов calculateWeeklyPay(false), вам приходится вспоминать, что он означает.

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

#tips #argument_selectors
Тренды 2020 в программировании

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

Что же нас ждет в будущем 2020:
Rust станет мейнстримным
❷ Прольется свет на Web Assembly
React продолжит свой рост популярности
JavaScript будет на коне
❺ Новый подход к разработке - прогрессивные веб-приложения.

Читать статью

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

#programming #trends
Непонятные намерения

Код должен быть как можно более выразительным. Слишком длинные выражения, венгерская запись, «волшебные числа» — все это скрывает намерения автора.

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

#tips #intentions
5 программ, написание которых улучшит ваш навык программирования

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

Читать статью

#programming #improvement
Единственность цели каждой переменной

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

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

#tips #variables
Хорошие разработчики крайне находчивы, но необязательно умны.

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

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

Если то, чем вы занимаетесь, не заставляет вас преодолевать трудности, то вы не развиваетесь в этом.

Читать статью

#programming #improvement