Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Итог_Пособие C++.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.03 Mб
Скачать

7.13 Изобретение велосипеда (Reinventing the wheel)

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

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

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

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

7.14 Программирование перебором (Programming by permutation)

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

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

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

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

Выводы

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

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

8. СТАНДАРТ C++11

Стандарт языка программирования ISO/IEC 14882:2011, неформально именуемый C++11, пришел на смену более раннему стандарту 2003 года ISO/IEC 14882:2003. В настоящее время уже утвержден стандарт С++14 − ISO/IEC 14882:2014, стандарт С++17 находится в разработке.

В тексте данной книги мы уже не раз использовали возможности, появившиеся в C++11. В данной главе мы рассмотрим их более глубоко, а также затронем некоторые темы, которые ранее не встречались.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]