В который раз сталкиваюсь с привычкой С++ программистов писать каждый класс в отдельном модуле. В итоге проект превращается в тонну разрозненных непонятно как связанных файлов. Объясните, чем это обусловлено? Мне не понятно, из каких соображений психологически здоровый индивид намеренно усложняет свою жизнь
DevilDevil
Присоеденяюсь к вопросу. Тоже не однократно такое видел.
Vorotnyak_Nazar
DevilDevil
> привычкой С++ программистов писать каждый класс в отдельном модуле
что такое модуль в с++??
DevilDevil
>>Объясните, чем это обусловлено?
Книгами умных людей:)
А если серьезно, то меня наоборот приводит в ступор желание людей запихнуть все в один модуль.
DevilDevil
> индивид намеренно усложняет свою жизнь
Вообще-то облегает. Если я вижу classA.h и classA.cpp, я знаю что в них описан класс classA, и ничего больше. Если мне надо внести изменение в этот класс, я визуально сразу найду нужные места. А если в одном заголовке десяток классов, то попробуй в этих тысячах строк кода ориентироваться.
war_zes
в догонку другой вопрос
у вас нет быстрой навигации по классам в модуле ?
нет быстрого перехода от объявления к реализации конкретного метода ?
war_zes
> А если серьезно, то меня наоборот приводит в ступор желание людей запихнуть все
> в один модуль.
+1
Писать классы в отдельных файлах это хороший тон какбе - вон в жаве вообще нельзя писать классы в одном файле(на скока я знаю)
ЗЫ
Почему все говорят "модуль" у меня асоциации с паскалями и пр начинаются
DevilDevil
> у вас нет быстрой навигации по классам в модуле ?
> нет быстрого перехода от объявления к реализации конкретного метода ?
для навигации есть иде
fsmoke
> Писать классы в отдельных файлах это хороший тон какбе - вон в жаве вообще
> нельзя писать классы в одном файле(на скока я знаю)
а то что проект превращается в огромное месиво непонятно как связанных файлов - это совсем не мешает, не ?
fsmoke
> Почему все говорят "модуль" у меня асоциации с паскалями и пр начинаются
ну для меня h + cpp - это модуль. Для меня h + cpp - это единая субстанция, в которой находится что-то
ты по другому воспринимаешь эти файлы ? Как то иначе ?
DevilDevil
> у вас нет быстрой навигации по классам в модуле ?
Есть конечно и именно по этой причине я к примеру придерживаюсь такого способа организации кода (так как большое количество файлов никак не мешает). Смысл в том чтобы уменьшить количество кода на экране (ИМХО), в одном файле. Это тоже самое - почему дробят один класс на несколько подклассов, или один метод на десяток вложенных методов - уменьшить количество кода который нужно понять в определенный промежуток времени, убрать все не нужное для работы в другое место.
DevilDevil
> намеренно усложняет свою жизнь
В основном это облегчает. Например я наоборот когда смотрю исходники на Delphi - офигеваю над тем зачем же надо было всё засовывать в один файл.
Ещё факт - язык Java не позволяет создавать более одного класса в одном файле и более того требует чтобы название файла совпадало с названием класса.
Если бы это усложняло жизнь - никто бы на Java не программировал.
DevilDevil
> а то что проект превращается в огромное месиво непонятно как связанных файлов
Ну, если архитектура хорошая, то этого как раз не будет - ведь понятно же как классы связаны друг с другом, значит и модули которые их содержат, точно также связаны.
Единственный минус - это Forward declaration, по своему сильно может вынести мозг
Напомню, что отдельные файлы не будут перекомпилироваться если их не изменяли, что сокращает время сборки проекта..
И да, удобство навигации по файлам на лицо.
war_zes
иначе говоря группирование
чтобы логически легче воспринимать информацию
НО
множество небольших классов думаю целесообразно организовывать в одном модуле если они имеют одно направление деятельности
в итоге меньше подключаешь инклюдов и в проекте ориентироваться значительно проще!
кроме того ты модули называешь не по имени класса, а по назначению.
А что касается навигации в рамках одного модуля
Так тут есть навигация по классам в одном модуле и навигация по функциям в рамках класса. Я думаю ваши IDE такую функциональность предоставляют. Или нет? Или ими неудобно пользоваться? В чём прикол то блин ? )
DevilDevil
> а то что проект превращается в огромное месиво непонятно как связанных файлов -
> это совсем не мешает, не ?
это зависит от того, как ты организуешь структуру проекта
меня лично раздражает наличие двух файлов h и cpp вместо одного это действительно не удобно. но терплю.
Тема в архиве.