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

Ссылка: @Portal_v_IT

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

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

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

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

#designpatterns
JSHint

Один из основных статических анализаторов для JavaScript, наряду с JSLint и Closure Compiler. JSHint написан в дополнение к Node.js, а потому он более гибкий.

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

Visual Studio Code | Sublime Text | Online

#tools
Имена должны описывать побочные эффекты

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

Функция в примере не ограничивается простым получением «m_oos»; она создает объект «m_oos», если он не был создан ранее. Таким образом, эту функцию было бы правильнее назвать «createOrReturnOos».

#tips #naming
Многозадачность убивает ваш мозг

"Как успевать больше, делать лучше и быть счастливее?" Ответ прост - фокусируйтесь на одной задаче.

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

#selfimprovement #programming
Forwarded from Clean Code
Functions instead of comments

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

И запомните: хороший код не требует комментариев.

#comments #functions
Не скупитесь на скобки

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

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

#tips #formatting
.NET сексуален и вам следует знать об этом!

В статье мы развеем миф о том, что .NET — старая и закрытая экосистема, которая полностью противоречит другим, более гибким и открытым платформам, таким как NodeJS или RubyRails.

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

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

#programming #dotnet
С рекурсией нужно быть осторожным

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

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

#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