Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Organize includes and forward declarations, что-то вроде organize imports в java/c# 
V
    Опции темы
kamre
Дата 26.10.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: 1
Всего: 13



Есть ли какие-то удобные средства для того, чтобы вычистить из большого проекта (порядка 1000 файлов) лишние include и forward declaration?
PM MAIL   Вверх
kamre
Дата 28.10.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: 1
Всего: 13



В C++ все так плохо, что эта задача не решаемая вообще?
PM MAIL   Вверх
Anikmar
Дата 28.10.2009, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(kamre @  28.10.2009,  19:54 Найти цитируемый пост)
В C++ все так плохо, что эта задача не решаемая вообще? 

А при чем здесь С++?  smile 

Может вопрос к разработчикам IDE?

Кстати, а зачем так сильно это надо? Если проект рабочий - главное правило "Работает - не трогай"
PM MAIL ICQ   Вверх
kamre
Дата 28.10.2009, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: 1
Всего: 13



Цитата(Anikmar @ 28.10.2009,  20:37)
А при чем здесь С++?  smile 

Наверное при том, что "модульность" в нем реализована через #include директивы препроцессора.

Цитата(Anikmar @ 28.10.2009,  20:37)
Может вопрос к разработчикам IDE?

Ну да, вопрос про IDE/tools/... , которые позволяют это делать наиболее удобным образом. Есть ли такие для c++?

Цитата(Anikmar @ 28.10.2009,  20:37)
Кстати, а зачем так сильно это надо? Если проект рабочий - главное правило "Работает - не трогай"

Лишние #include замедляют сборку, множество лишних forward declarations замусоривают код. А так да, работает и даже трогать не хочется некоторый код )


PM MAIL   Вверх
andrew_121
Дата 28.10.2009, 23:08 (ссылка)  | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(kamre @  28.10.2009,  22:49 Найти цитируемый пост)
Лишние #include замедляют сборку

Аргумент однако... smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Earnest
Дата 29.10.2009, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(andrew_121 @  29.10.2009,  00:08 Найти цитируемый пост)
Аргумент однако... 

Это действительно аргумент, особенно для больших проектов. Я не знаю такого тула, сама бы не отказалась. Однако корень не в "лишних" инклудах, а в разбиении на модули конкретного проекта, а это за тебя никакой тул не сделает. 
Разумеется, есть тупые варианты, типа включения хедера с символами ресурсов в другие хедеры (и упоминания таких символов в заголовочных файлах). 
Согласна с тем, что лишние форварды и инклуды засоряют. Кроме того, лишние зависимости очень мешают при серьезной переработке кода.
Если код не предполагается поддерживать (развивать), можно оставить как есть. Но если предполагается - нужо руками зачистить хотя бы интерфейсные хедеры, а остальное - по мере поддержки.
Я просто требую от программистов финальной зачистки кода на предмет лишних инклудов и прочего мусора - это, в конце концов, можно сделать перед его сдачей, наряду с прочими облизываниями.


--------------------
...
PM   Вверх
Anikmar
Дата 29.10.2009, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(Earnest @  29.10.2009,  08:24 Найти цитируемый пост)
Это действительно аргумент, особенно для больших проектов. 


На время сборки это не влияет. А вот компиляция - другое дело. Особенно, если все и вся включено везде и всюду - любое изменение любого хидера влечет за собой перекомпиляцию всех модулей проекта.

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

А по поводу C++ там или другой язык
ИМХО Ни один самый гениальный язык не спасет вас от чьих-то кривых рук.
PM MAIL ICQ   Вверх
Earnest
Дата 29.10.2009, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(Anikmar @  29.10.2009,  09:53 Найти цитируемый пост)
На время сборки это не влияет.

На время полной сборки тоже влияет, в запущенных случаях. У меня был опыт сокращения времени примерно на треть после ручной зачистки проекта.
Но существеннее, конечно, время частичной компиляции во время разработки. 
Цитата(Anikmar @  29.10.2009,  09:53 Найти цитируемый пост)
 Ни один самый гениальный язык не спасет вас от чьих-то кривых рук.

Именно, и не только кривых рук. Долго живущий проект обрастает всякой дрянью, которую можно исключительно руками выковырять (типа неиспользуемых функций и целых модулей, а уже ресурсы и их идентификаторы плодятся просто как тараканы в коммуналке). Это как в жизни - либо делать генеральную уборку раз в год, либо все время следить за мусором, кому что ближе.



--------------------
...
PM   Вверх
andrew_121
Дата 29.10.2009, 09:48 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(Anikmar @  29.10.2009,  08:53 Найти цитируемый пост)
На время сборки это не влияет.

Цитата(Earnest @  29.10.2009,  09:25 Найти цитируемый пост)
На время полной сборки тоже влияет

Вот если бы кто-то подсказал как можно процесс сборки распаралелить(msvc2008, ну и просто gnu-make), не было бы таких споров.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.