Clean Code
20.4K members
62 photos
140 links
Clean Code - канал на котором публикуются советы по написанию кода, обзоры распространенных ошибок и многое другое.

По всем вопросам: @Nikita_Goncharuk
Download Telegram
to view and join the conversation
С рекурсией нужно быть осторожным

Прежде чем использовать её в проекте:
● Убедитесь, что рекурсия остановится
● Предотвращайте бесконечную рекурсию с помощью счетчиков
● Ограничьте рекурсию одним методом
● Следите за стеком

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

#tips #recursion
Хорошие разработчики никогда не перестают учиться!

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

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

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

#selfimprovement #learning
Использование переменных цикла

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

Сообщают ли переменные i, j и k что-либо о содержимом transaction? Имена переменных payCodeIdx, month и divisionIdx гораздо красноречивее, чем i, j и k.

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

#tips #naming
ESLint

Один из лучших линтеров для JavaScript - ESLint берет на себя всю рутину по исправлению простых ошибок, таких как стилевые недочеты, забытый debugger; имеет легкую расширяемость, например, есть готовые плагины для React и Node.js, также существует множество общедоступных конфигураций в виде node.js-пакетов; ESLint активно развивается, потому что в автоматизации рефакторинга и отладки спрос только растёт.

Visual Studio Code | Sublime Text | WebStorm

#tools #linters
Упрощайте сложные булевые проверки

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

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

#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
Python с нуля

Python сочетает в себе натуральность, вариативность и читабельность. Один из самых востребованных языков и ведь неслучайно. Python - мощный инструмент, позволяющий реализовывать сложные концепции в нескольких строках кода. В рамках статьи мы рассмотрим основы языка:
❶ Переменные
❷ Условные выражения
❸ Циклы и Итераторы
❹ Коллекции и Массивы
❺ Словари
❻ Классы и объекты

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

Круто же! Удачи в освоении новых горизонтов.

#programming #python
Стань веб-разработчиком с нуля за 6 месяцев и начни зарабатывать от 60 тысяч из любой точки мира!

В SkillFactory уже скоро начинается обучение на курсе «Веб-разработчик на PHP»

Почему стоит выбрать профессию разработчика на PHP ?
❶ Востребованность: более 1500 вакансий для веб-разработчиков на hh
❷ Высокая зарплата: от 55 до 280 тысяч рублей
❸ Минимальный порог входа: дружелюбный язык, который можно изучить с нуля
❹ Удаленная работа: работа из любой точки мира в компании или на фрилансе

Изучите HTML, CSS, Javascript и PHP с основ и до реальных рабочих задач. Каждый новый инструмент закрепите проектом на практике. Реализуете и добавите в свое портфолио 3 проекта.

Платите по частям или после обучения: учитесь, не отвлекаясь на решение финансовых вопросов.