Рубрика «antipatterns»
20 частых антипаттернов в React и как их исправить: кратко, понятно, без мифов
2025-08-15 в 15:45, admin, рубрики: antipatterns, hooks, javascript, JS, jsx, ReactОбъектно-ориентированный антипаттерн
2022-05-29 в 11:14, admin, рубрики: antipattern, antipatterns, c++, use functions luke!, антипаттерны, ВычисляторЗначения, ооп, Программирование, Проектирование и рефакторинг, рефакторинг, Совершенный кодДля тех, кто читает не далее второго абзаца: я не говорю, что любое ООП - это плохо! ООП, особенно классическое полиморфное ООП, заслуженно имеет своё место в реальных проектах. Ниже речь поидёт про частный случай (анти)паттерна, который я периодически встречаю: использование классов там, где могли быть простые свободные функции.
Начало
Довольно часто у студентов, изучающих C++ в определённых учебных кругах, складывается мировоззрение о том, что всё должно быть объектами. Попросите их написать программу, которая считает некоторое значение - и они начнут с создания объекта ValueComputer и метода vc.computeResult()Читать полностью »
Антипаттерн “константа размера массива”
2020-09-11 в 13:06, admin, рубрики: antipatterns, c++, Блог компании OTUS. Онлайн-образование, ПрограммированиеПеревод статьи подготовлен в преддверии старта курса «C++ Developer. Professional».
Хочу обратить ваше внимание на антипаттерн, который я часто встречаю в коде студентов на Code Review StackExchange и даже в довольно большом количестве учебных материалов (!) других людей. У них имеется массив, скажем, из 5 элементов; а затем, поскольку магические числа — это плохо, они вводят именованную константу для обозначения количества элементов «5».
void example()
{
constexpr int myArraySize = 5;
int myArray[myArraySize] = {2, 7, 1, 8, 2};
...
Но решение это так себе! В приведенном выше коде число пять повторяется: сначала в значении myArraySize = 5, а затем еще раз, когда вы фактически присваиваете элементы myArray. Приведенный выше код столь же ужасен с точки зрения обслуживания, как:
constexpr int messageLength = 45;
const char message[messageLength] =
"Invalid input. Please enter a valid number.n";
— который, конечно, никто из нас никогда не напишет.Читать полностью »
Akka антипаттерны: слишком много акторов
2018-08-20 в 13:05, admin, рубрики: akka, antipatterns, scala
По akka мало материалов на Хабре. Решил перевести некоторые антипаттерны, описанные Мануэлем в своем блоге. Они действительно могут быть неочевидны людям впервые столкнувшимся с фреймворком.
Читать полностью »
ViewModel и LiveData: паттерны и антипаттерны
2017-09-24 в 12:48, admin, рубрики: android, antipatterns, livedata, перевод, Разработка под androidПривет! Представляю вашему вниманию перевод статьи ViewModels and LiveData: Patterns + AntiPatterns автора Jose Alcérreca.
View и ViewModel
Распределение ответственностей
Типичное взаимодействие объектов приложения, построенное с помощью Архитектурных Компонентов:

В идеале ViewModel не должна ничего знать про Android. Это улучшает тестируемость и модульность, снижает кол-во утечек памяти. Основное правило — в Вашей ViewModel не должно быть импортов android.* (за исключением вроде android.arch.*). Это относится и к Presenter.
ViewModel (и Presenter) не должны знать о классах фреймворка Android
Enum-switch антипаттерн
2016-10-16 в 20:59, admin, рубрики: antipattern, antipatterns, C#, neverdoitВ последнее время мне часто встречается в коде один интересный шаблон. Он заключается в том, что для описания небольшого множества объектов создается enum, а потом в разных местах кода значения из перечисления обрабатываются при помощи оператора switch.
Как выглядит реализация данного шаблона, и чем он опасен? Давайте разберемся.
Читать полностью »
Антипаттерны проектирования: Functional Decomposition
2015-02-20 в 19:02, admin, рубрики: antipatterns, Анализ и проектирование систем, ооп, Программирование, Проектирование и рефакторинг, Совершенный код, метки: antipatterns, ООП Наименование: Functional Decomposition (функциональная декомпозиция)
Другие наименования: No Object-Oriented AntiPattern «No OO»
Масштаб: приложение
Рефакторинг: объектно-ориентированный реинжиниринг
Функциональная декомпозиция — хорошая практика процедурного программирования, так как она позволяет разделить приложение на отдельные функциональные модули.
К сожалению функциональную декомпозицию невозможно напрямую отразить в иерархии классов и поэтому иногда возникают проблемы, описываемые в статье.
Читать полностью »
