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

Ссылка: @Portal_v_IT

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

РКН: clck.ru/3Ht6ch
加入频道
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
Жив ли PHP?

Как часто мы негодуем насчет PHP, подшучиваем над теми, кто разрабатывает на нем, однако у PHP все круто и он не собирается уходить в небытие. PHP активно разрабатывается, в нем есть мощные фреймворки, такие как Laravel и Symfony.

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

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

#programming #php
Основные вопросы применения табличных методов

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

❶ ЧТО хранить в таблице? Иногда результатом поиска в таблице являются данные — тогда можно хранить в таблице сами данные. Если же результатом поиска является действие, можно хранить ссылку на метод.

❷ КАК будет выполняться поиск записей в таблице? Так, если вам нужно систематизировать данные по месяцам, то выбор ключа для таблицы месяцев очевиден. Вы можете использовать массив с индексом от 1 до 12.

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

#programming #table_methods
Четыре ошибки, которые совершал каждый программист.

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

Стив Джобс как-то сказал: «Я убежден, что большинство успешных предпринимателей отличаются от неуспешных настойчивостью». И да, это как никогда применимо к программистам, ведь от сложности поставленных задач порой кружится голова. Проявите твердость характера и выполните поставленную задачу. Поверьте, результат не заставит себя ждать, а чувство удовлетворения наполнит вашу жизнь позитивом.

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

#programming #improvement
Снижение стоимости операций

Под снижением стоимости (strength reduction) понимают замену дорогой операции на более дешевую, например, умножения на сложение.

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

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

#programming #tips
7 книг для программистов

Профессионализм в программировании достигается тяжёлыми усилиями. Если вы выучили пару языков программирования и думаете, что это конец, то вы ошибаетесь. Это только начало. Теперь у вас есть инструмент, но нужно еще научиться его правильно использовать.

В данной статье мы расскажем о книгах, благодаря которым вы сможете стать программистом-экспертом.

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

#programming #books
Подготовительный код

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

Так, если у вас обычно есть объект WithdrawalTransaction, но в метод ProcessWithdrawal передаются только несколько значений объекта, вам следует подумать о рефакторинге интерфейса метода, чтобы он принимал объект WithdrawalTransaction, а не его отдельные поля

#tips #preparation_code