analizer
29.09.2011 14:01 mcabber
плюсоэстеты, каково ваше мнение о forward декларациях структур и классов? используете ли вы только в крайнем случае, или пихаете куда только можно, если это позволяет уменьшить количество #include'ов в заголовочных файлах? кто-нибудь сравнивал скорость компиляции толстых проектов для этих двух подходов?
http://www-subatech.in2p3.fr/~photons/su...
использую регулярно. избавляет от потенциальных циклических зависимостей и добавляет ещё одну точку для связывания. не сравнивал
пихаю куда только можно, не сравнивал
я тоже могу написать и опубликовать что-то подобное, в общем, линк — нерепрезентативен
про «ещё одну точку для связывания» не понял
а линки такого типа:
"Large Scale C++ Software Design by J.Lakos Там очень хорошо расписана эта тема, просто идеально. В качестве примера приводит случай, когда полный ребилд проекта спроектированного и реализованного не лучшим образом занимал около недели :)
После этого он делает вывод, что там где возможно, нужно стараться это время уменьшать:) , и по вполне понятным причинам отдает предпочтение forward declarations."
ну и собственно сам их юзаю, потому что не вижу смысла в хидере ставить инклуды, которых можно избежать.
в хидере инклуда избежал, зато во всех файлах, где нужен доступ к полям forward declared класса приходится этот избегнутый include делать
Я не писал очень крупных проектов, но у саттера где-то было, что он на них и pimpl добился ускорения компиляции в 2 раза.
Использую всегда и везде, кроме предеклараций темплейтов (лень).
Сравнивал визуально. Гораздо лучше с fwd, особенно на модульных системах, где модуль ссылается на какой-то компонент «ядра» системы через ссылку или указатель. Пока это ядро дорабатываешь, каждый раз все модули будут переканпеляться, если нет fwd, а тупой include.