falconer
> Напомню, что отдельные файлы не будут перекомпилироваться если их не изменяли,
> что сокращает время сборки проекта..
> И да, удобство навигации по файлам на лицо.
НО
вы все кричите, что современные проекты на С++ собираются мгновенно на современных компьютерах, и что время сборки - вообще не аргумент
falconer
> что сокращает время сборки проекта..
но увеличивает время линковки, так что не факт (проверено, видел как оно быстро собирается, а потом минут пять линкуется)
DevilDevil
> множество небольших классов думаю целесообразно организовывать в одном модуле
> если они имеют одно направление деятельности
да, например у меня в модуле map, будет и описание тайла, и описание карты из этих тайлов, и возможно описание менеджера карт... До тех пор пока кода не наберестя до определенного предела (зависит от количества кода в других модулях), после чего будет разбито на несколько отдельных модулей
DevilDevil
> В чём прикол то блин ? )
даже не знаю как ответить, оно как-то само выработалось, сейчас больше эстетика
ИПавлов
> меня лично раздражает наличие двух файлов h и cpp вместо одного это
> действительно не удобно. но терплю.
кстати да
тоже не понимаю в чём прикол )
DevilDevil
> а то что проект превращается в огромное месиво непонятно как связанных файлов - это совсем не мешает, не ?
Я помещаю связанные по смыслу классы в отдельные папочки, если файлов достаточно много. Грамотные IDE вроде FlashDevelop автоматически повторяют структуру в своём explorer'е.
А как может не мешать то, что в одном файле несколько классов? И в файле несколько тысяч строк кода? Это, конечно, совсем не мешает.
Да, в каждом подходе есть минусы и есть плюсы.
Лично у меня предпочтения меняются со временем.
Например:
-стиль расстановки скобок:
сначала я писал так:
void f() { }
потом так:
void f() { }
теперь орять так:
void f() { }
далее. табы. Сидя в VS и блокноте, я признавал только пробелы.
Потом пошёл в Adobe Flash и не смог отключить там табы. Сначала побыковал, потом привык. Сейчас сижу во FlashDevelop, имею возможность отключить табы, но не хочу. С табами удобнее. По крайней мере в данной среде. Да, в другом редакторе отступы поедут. Ну и что?
Привычки меняются. Нужно быть гибче, следовать за своими привычками, а не делать так, как в книгах написано.
До сих пор усыхаю с формошлёпов, которые оставляют названия вроде button1, button2. Казалось бы - так неудобно - нужно внести исправления - ищи, что за батон такой. До такого, надеюсь, не дойду. А им удобно.
Или отсутствие всякого форматирования текста - неудобно ж читать? А им удобно.
Или команды вида "а", "b" - с последующей расшифровкой где-то в другом месте. Я спрашиваю - почему не назвать "Abort", чтоб понятно было? Смотрят как на дурака.
Да, я не понимаю всех этих людей. Но уже не могу поспорить на свою зарплату, что со мной такого никогда не случится. Такое уже случалось в моей жизни - и со скобками, и с табами.
ИПавлов
> меня лично раздражает наличие двух файлов h и cpp вместо одного это
> действительно не удобно. но терплю.
А зря раздражает. В определенный момент понимаешь что они никак не связаны и у одного h может быть несколько своих cpp (как и наоборот). Плюс в cpp можно спрятать тот код который не должен быть в других модулях или не должен быть виден пользователю (я к примеру часто в cpp пишу особые утилиты которые используются в данном модуле, но в h эти утилиты не объявляю)
И кстати, их вообще-то три - .h, .cpp, .inc - хотя последним мало кто пользуется:)
DevilDevil
> тоже не понимаю в чём прикол )
Отделение реализации от объявления. В паскале вон тоже есть - в начале пишем объявления, а потом реализацию
war_zes
> даже не знаю как ответить, оно как-то само выработалось, сейчас больше эстетика
буквально сейчас работаю (мучаюсь) который надо перефакторить. По рамкам Delphi - коррективы мизерные. По рамкам текущего проекта - ОГРОМНЫЕ. Почему. Потому что в рамках текущей архитектуры задачу не выполнить, надо рефакторить. А чтобы рефакторить - нужно разобраться (и изменить!) тыщу файлов. Причём я бы понял, если бы файлы были огромными. Но они имею размер не больше 5 кб. И я не могу понять. Если С++ программирование представлено лучшими умами человечества, имеется огромный опыт коммерческой разработки, всё тыщу раз выверено и проверено.. то почему до сих пор умудряются делать настолько глупые ошибки - рассредотачивать код так, чтобы его потом было чуть ли не невозможно изменять
Пихать все без разбора в один файл - глупо. На каждый чих (класс) создавать свой файл - тоже глупо.
Нужно выдерживать некий баланс, который каждый сам подбирает по-своему. Для меня, например, критерий объединения классов/функций в одном файле - это их тесная взаимосвязь и использование одного в другом и нигде более. Хотя бывают исключения (например, набор небольших общих классов, требуемых всем, так сказать ядро)
war_zes
> До сих пор усыхаю с формошлёпов, которые оставляют названия вроде button1,
> button2. Казалось бы - так неудобно - нужно внести исправления - ищи, что за
> батон такой. До такого, надеюсь, не дойду. А им удобно.
> Или отсутствие всякого форматирования текста - неудобно ж читать? А им удобно.
> Или команды вида "а", "b" - с последующей расшифровкой где-то в другом месте. Я
> спрашиваю - почему не назвать "Abort", чтоб понятно было? Смотрят как на
> дурака.
> Да, я не понимаю всех этих людей.
поддерживаю
war_zes
> Отделение реализации от объявления. В паскале вон тоже есть - в начале пишем
> объявления, а потом реализацию
логически - один модуль
поэтому для него существует один файл, а не 2 и не 3
это логично
Засунь всё в один файл и получи время Build Project == времени Rebuild Project, оч. круто да.
1. В C++ нет модулей.
2. Так удобнее.
alex-r
> Пихать все без разбора в один файл - глупо. На каждый чих (класс) создавать
> свой файл - тоже глупо.
> Нужно выдерживать некий баланс, который каждый сам подбирает по-своему. Для
> меня, например, критерий объединения кода в одном файле - это их тесная
> взаимосвязь и использование одного в другом и нигде более. Хотя бывают
> исключения (например, набор небольших общих классов, требуемых всем, так
> сказать ядро)
полностью поддерживаю
только почем так не принято ?
среди С++ программистов
DevilDevil
> рассредотачивать код так, чтобы его потом было чуть ли не невозможно изменять
где здесь ошибка? Ты же рефакторишь... Напомнить тебе какие модули называют "с душком"? Или сам вспомнишь что "разросшиеся"?
Alexander K
> Ещё факт - язык Java не позволяет создавать более одного класса в одном файле и
> более того требует чтобы название файла совпадало с названием класса.
Если класс объявлен с public модификатором. Если модификатора нет, то название файла может не совпадать с именем класса и классов там может быть больше одного. Просто в итоге будет сгенерировано несколько файлов <classname>.class
Necrys
> Засунь всё в один файл и получи время Build Project == времени Rebuild Project, оч. круто да.
Смотря какой проЭкт. У меня при таком раскладе большой выигрыш по времени получается, да.
DevilDevil
> только почем так не принято ?
> среди С++ программистов
Ну почему же не принято? В любом мало-мальски серьезном проекте все строится весьма разумно, и в итоге выходит примерно так
Тема в архиве.