analizer 29.09.2011 14:01 mcabber

плюсоэстеты, каково ваше мнение о forward декларациях структур и классов? используете ли вы только в крайнем случае, или пихаете куда только можно, если это позволяет уменьшить количество #include'ов в заголовочных файлах? кто-нибудь сравнивал скорость компиляции толстых проектов для этих двух подходов?

Recommended by:

@dorfe: пихаю куда только можно

and @magog
2. jtootf 29.09.2011 14:04 mcabber.579dda47

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

3. beardog 29.09.2011 14:05 Instantbird

пихаю куда только можно, не сравнивал

4. analizermagog /1 29.09.2011 14:06 mcabber

я тоже могу написать и опубликовать что-то подобное, в общем, линк — нерепрезентативен

5. analizerjtootf /2 29.09.2011 14:09 mcabber

про «ещё одну точку для связывания» не понял

6. magoganalizer /4 29.09.2011 14:11 Azoth

а линки такого типа:
"Large Scale C++ Software Design by J.Lakos Там очень хорошо расписана эта тема, просто идеально. В качестве примера приводит случай, когда полный ребилд проекта спроектированного и реализованного не лучшим образом занимал около недели :)
После этого он делает вывод, что там где возможно, нужно стараться это время уменьшать:) , и по вполне понятным причинам отдает предпочтение forward declarations."

7. magogmagog /6 29.09.2011 14:14 Azoth

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

8. analizermagog /7 29.09.2011 14:17 mcabber

в хидере инклуда избежал, зато во всех файлах, где нужен доступ к полям forward declared класса приходится этот избегнутый include делать

9. magoganalizer /8 29.09.2011 14:18 Azoth

Я не писал очень крупных проектов, но у саттера где-то было, что он на них и pimpl добился ускорения компиляции в 2 раза.

10. DZhon 29.09.2011 15:32

Использую всегда и везде, кроме предеклараций темплейтов (лень).

11. DZhonDZhon /10 29.09.2011 15:37

Сравнивал визуально. Гораздо лучше с fwd, особенно на модульных системах, где модуль ссылается на какой-то компонент «ядра» системы через ссылку или указатель. Пока это ядро дорабатываешь, каждый раз все модули будут переканпеляться, если нет fwd, а тупой include.

Do you really want to delete ?