ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 11) онлайн
Ломая стены
Надо отметить, что идея дружественных функций несколько сомнительна. Во вре-
мя разработки C++ на эту тему велись споры и приводились аргументы против
включения в язык такой возможности. С одной стороны, дружественные функции
повышают гибкость языка, но, с другой стороны, они не соответствуют принципу
ограничения доступа к данным, который гласит, что только функции-члены могут
иметь доступ к скрытым данным класса.
Насколько серьезно противоречит единству концепции использование друже-
ственных функций? Дружественная функция объявляется таковой в том классе,
к данным которого она захочет впоследствии получить доступ. Таким образом,
программист, не имеющий доступа к исходному коду класса, не может сде-
лать функцию дружественной. В этом смысле целостность данных сохраняется.
Но все равно такие функции принципиально нечистоплотны и потенциально
могут привести к «spaghetti-code» (код со слишком большим числом передач
управления), когда множество дружественных функций фактически стирают
границы между классами. По этой причине дружественные функции должны
быть по крайней мере разбросаны по программе и встречаться как можно реже.
Если вы обнаружили, что используете слишком много этих функций, стоит по-
думать об изменении программы.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
Схожі підручники
- Цивільна оборона (частина 2)
- Управління проектами (частина 1)
- РЕГІОНАЛЬНА ЕКОНОМІКА (частина 1)
- Скупой рыцарь (Сцены из ченстоновой трагикомедии The Covetous Knight) (онлайн)
- Р. ЛАФОРЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть13) онлайн
- М.М. Теліщук - Історія економіки та економічної думки
