CodeSOD: тип типовой безопасно... Заметка
The Daily WTF на русском

CodeSOD: тип типовой безопасности

Автор критикует распространенную практику объяснения объектно-ориентированных концепций с использованием биологических таксономий из-за ее ограничений, особенно чрезмерного акцента на наследовании. Затем он обсуждает кодовую базу на C++, где разработчики неправильно понимают ключевые объектно-ориентированные принципы, что приводит к проблемному коду. Примером является функция StealTentacle, которая использует проверки типов во время выполнения (IS_INSTANCE_OF) вместо полиморфизма для определения, есть ли у животного щупальца.Макрос IS_INSTANCE_OF некорректно использует dynamic_cast с приведением типа в стиле C, что может привести к непреднамеренному поведению. Макрос пытается привести указатель на объект к базовому типу перед проверкой его фактического типа, демонстрируя непонимание правил приведения типов в C++. Комментарии разработчиков раскрывают их путаницу относительно dynamic_cast, поскольку он может выполнять кросс-кастинг между связанными производными типами, а не только проверять прямое наследование.Автор утверждает, что такие проверки типов во время выполнения являются антипаттерном и что решаемая проблема может быть решена более элегантно с использованием самой системы типов. Код далее иллюстрирует это, используя больше приведений типов в стиле C для попытки понижающего приведения после проверки макросом. В конечном итоге автор разделяет мнение о том, что, хотя объектно-ориентированные возможности могут быть мощными, их неправильное использование, особенно с информацией о типах во время выполнения, может привести к сложному и неэффективному коду, подрывающему элегантность языка.