Пять советов по эффективному объектно-ориентированному программированию на C++ Многие программисты заявляют, что владеют объектно-ориентированным программированием, но овладение этим искусством требует времени и практики.
В мире разработки программного обеспечения, где закон Сперджена гласит, что 90% всего — чушь, объектно-ориентированная ориентация на C++ не является исключением.
Сложность и широкое распространение C++ способствуют распространению неэффективного кода.
Кроме того, непонимание философии объектно-ориентированного программирования еще больше усугубляет проблему.
Хотя всесторонние обсуждения разработки правильных объектно-ориентированных проектов программного обеспечения на C++ могут занять целые тома, цель этой статьи — предоставить несколько быстрых, простых и эффективных советов по разработке надежного программного обеспечения на C++.
-
Сначала поработайте над дизайном классов:
Распространенной ошибкой является подход к объектно-ориентированному программированию как к структурированному программированию с некоторыми объектно-ориентированными элементами.
Чтобы практиковать настоящее объектно-ориентированное программирование, начните с выбора набора программных объектов, которые предлагают логические абстракции программного обеспечения.
Прежде чем определять точную последовательность операций, сосредоточьтесь на определении структуры классов.
Хотя это и не является абсолютным правилом, такой подход часто открывает возможности для доработки конструкции объекта в процессе разработки последовательности операций.
-
Думайте с точки зрения шаблонов проектирования:
Шаблоны проектирования — это проверенные решения повторяющихся проблем при проектировании программного обеспечения.
Использование шаблонов проектирования позволяет использовать коллективный опыт решения проблем сообщества информатиков.
Вместо того, чтобы изобретать велосипед, используйте устоявшиеся шаблоны проектирования для решения общих проблем.
Ознакомьтесь с популярными шаблонами проектирования, такими как Singleton, Observer, Factory и Strategy и другими, и при необходимости применяйте их в своем коде C++.
-
Используйте константные объекты и функции:
Квалификатор const в C++ помогает обеспечить неизменность и предотвращает случайное изменение объектов.
По возможности объявляйте объекты как константные, если их данные не подлежат изменению.
Эта практика защищает от непреднамеренных изменений вами или другими разработчиками.
Кроме того, объявляйте функции-члены как константные, если они не изменяют состояние объекта.
Поступая так, вы гарантируете, что эти функции соответствуют принципу неизменности, и обеспечиваете ясность в отношении того, какие функции изменяют состояние объекта.
-
Минимизируйте общедоступные функции Get и Set:
Хотя функции-члены get и set (широко известные как геттеры и сеттеры) имеют свое применение, широкое использование их может указывать на плохую абстракцию программного обеспечения.
Геттеры и сеттеры заставляют пользователя взаимодействовать с внутренними данными объекта, что противоречит принципу инкапсуляции.
В идеале пользователь объекта не должен иметь прямого доступа к его внутреннему состоянию.
Вместо этого создавайте свои классы так, чтобы предоставлять только необходимые и значимые интерфейсы, скрывая детали реализации.
Ограничьте использование геттеров и сеттеров теми ситуациями, когда они действительно приносят пользу.
-
Избегайте двойной косвенности:
Программисты на C часто работают с указателями, что приводит к заполнению кода указателями на указатели, что может сбивать с толку и вызывать ошибки.
Однако в C++ у вас есть преимущество ссылок на переменные.
Вместо того чтобы полагаться на двойную косвенность, используйте ссылки на указатели.
Используя ссылки, вы улучшаете читаемость кода и снижаете риск появления NULL-ссылок и проблем с арифметикой указателей.
Использование ссылок на указатели означает мышление более опытным и идиоматическим языком C++, а не цепляние за привычки программирования на C.
Помните, что объектно-ориентированное программирование – это не только использование классов и объектов; для достижения мастерства требуется продуманный дизайн, соблюдение принципов и постоянное обучение.
-
Симфония 1.2
19 Oct, 24 -
Пример Хорошего Промо-Сайта
19 Oct, 24