Войти
ПрограммированиеФорумОбщее

C++: каждый класс в своём модуле. В чём прикол? (2 стр)

Страницы: 1 2 3 426 Следующая »
#15
12:14, 12 мар. 2012

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

НО
вы все кричите, что современные проекты на С++ собираются мгновенно на современных компьютерах, и что время сборки - вообще не аргумент


#16
12:16, 12 мар. 2012

falconer
> что сокращает время сборки проекта..
но увеличивает время линковки, так что не факт (проверено, видел как оно быстро собирается, а потом минут пять линкуется)

DevilDevil
> множество небольших классов думаю целесообразно организовывать в одном модуле
> если они имеют одно направление деятельности
да, например у меня в модуле map, будет и описание тайла, и описание карты из этих тайлов, и возможно описание менеджера карт... До тех пор пока кода не наберестя до определенного предела (зависит от количества кода в других модулях), после чего будет разбито на несколько отдельных модулей

DevilDevil
> В чём прикол то блин ? )
даже не знаю как ответить, оно как-то само выработалось, сейчас больше эстетика

#17
12:17, 12 мар. 2012

ИПавлов
> меня лично раздражает наличие двух файлов h и cpp вместо одного это
> действительно не удобно. но терплю.

кстати да
тоже не понимаю в чём прикол )

#18
12:20, 12 мар. 2012

DevilDevil
> а то что проект превращается в огромное месиво непонятно как связанных файлов - это совсем не мешает, не ?
Я помещаю связанные по смыслу классы в отдельные папочки, если файлов достаточно много. Грамотные IDE вроде FlashDevelop автоматически повторяют структуру в своём explorer'е.
А как может не мешать то, что в одном файле несколько классов? И в файле несколько тысяч строк кода? Это, конечно, совсем не мешает.
Да, в каждом подходе есть минусы и есть плюсы.
Лично у меня предпочтения меняются со временем.
Например:
-стиль расстановки скобок:
сначала я писал так:

void f()
{
}
потом так:
void f() {
}
теперь орять так:
void f()
{
}

далее. табы. Сидя в VS и блокноте, я признавал только пробелы.
Потом пошёл в Adobe Flash и не смог отключить там табы. Сначала побыковал, потом привык. Сейчас сижу во FlashDevelop, имею возможность отключить табы, но не хочу. С табами удобнее. По крайней мере в данной среде. Да, в другом редакторе отступы поедут. Ну и что?

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

До сих пор усыхаю с формошлёпов, которые оставляют названия вроде button1, button2. Казалось бы - так неудобно - нужно внести исправления - ищи, что за батон такой. До такого, надеюсь, не дойду. А им удобно.
Или отсутствие всякого форматирования текста - неудобно ж читать? А им удобно.
Или команды вида "а", "b" - с последующей расшифровкой где-то в другом месте. Я спрашиваю - почему не назвать "Abort", чтоб понятно было? Смотрят как на дурака.
Да, я не понимаю всех этих людей. Но уже не могу поспорить на свою зарплату, что со мной такого никогда не случится. Такое уже случалось в моей жизни - и со скобками, и с табами.

#19
12:21, 12 мар. 2012

ИПавлов
> меня лично раздражает наличие двух файлов h и cpp вместо одного это
> действительно не удобно. но терплю.
А зря раздражает. В определенный момент понимаешь что они никак не связаны и у одного h может быть несколько своих cpp (как и наоборот). Плюс в cpp можно спрятать тот код который не должен быть в других модулях или не должен быть виден пользователю (я к примеру часто в cpp пишу особые утилиты которые используются в данном модуле, но в h эти утилиты не объявляю)
И кстати, их вообще-то три - .h, .cpp, .inc - хотя последним мало кто пользуется:)

DevilDevil
> тоже не понимаю в чём прикол )
Отделение реализации от объявления. В паскале вон тоже есть - в начале пишем объявления, а потом реализацию

#20
12:22, 12 мар. 2012

war_zes
> даже не знаю как ответить, оно как-то само выработалось, сейчас больше эстетика

буквально сейчас работаю (мучаюсь) который надо перефакторить. По рамкам Delphi - коррективы мизерные. По рамкам текущего проекта - ОГРОМНЫЕ. Почему. Потому что в рамках текущей архитектуры задачу не выполнить, надо рефакторить. А чтобы рефакторить - нужно разобраться (и изменить!) тыщу файлов. Причём я бы понял, если бы файлы были огромными. Но они имею размер не больше 5 кб. И я не могу понять. Если С++ программирование представлено лучшими умами человечества, имеется огромный опыт коммерческой разработки, всё тыщу раз выверено и проверено.. то почему до сих пор умудряются делать настолько глупые ошибки - рассредотачивать код так, чтобы его потом было чуть ли не невозможно изменять

#21
12:25, 12 мар. 2012

Пихать все без разбора в один файл - глупо. На каждый чих (класс) создавать свой файл - тоже глупо.
Нужно выдерживать некий баланс, который каждый сам подбирает по-своему. Для меня, например, критерий объединения классов/функций в одном файле - это их тесная взаимосвязь и использование одного в другом и нигде более. Хотя бывают исключения (например, набор небольших общих классов, требуемых всем, так сказать ядро)

#22
12:26, 12 мар. 2012

war_zes
> До сих пор усыхаю с формошлёпов, которые оставляют названия вроде button1,
> button2. Казалось бы - так неудобно - нужно внести исправления - ищи, что за
> батон такой. До такого, надеюсь, не дойду. А им удобно.
> Или отсутствие всякого форматирования текста - неудобно ж читать? А им удобно.
> Или команды вида "а", "b" - с последующей расшифровкой где-то в другом месте. Я
> спрашиваю - почему не назвать "Abort", чтоб понятно было? Смотрят как на
> дурака.
> Да, я не понимаю всех этих людей.

поддерживаю

war_zes
> Отделение реализации от объявления. В паскале вон тоже есть - в начале пишем
> объявления, а потом реализацию

логически - один модуль
поэтому для него существует один файл, а не 2 и не 3
это логично

#23
12:27, 12 мар. 2012

Засунь всё в один файл и получи время Build Project == времени Rebuild Project, оч. круто да.

#24
12:27, 12 мар. 2012

1. В C++ нет модулей.
2. Так удобнее.

#25
12:27, 12 мар. 2012

alex-r
> Пихать все без разбора в один файл - глупо. На каждый чих (класс) создавать
> свой файл - тоже глупо.
> Нужно выдерживать некий баланс, который каждый сам подбирает по-своему. Для
> меня, например, критерий объединения кода в одном файле - это их тесная
> взаимосвязь и использование одного в другом и нигде более. Хотя бывают
> исключения (например, набор небольших общих классов, требуемых всем, так
> сказать ядро)

полностью поддерживаю
только почем так не принято ?
среди С++ программистов

#26
12:27, 12 мар. 2012

DevilDevil
> рассредотачивать код так, чтобы его потом было чуть ли не невозможно изменять
где здесь ошибка? Ты же рефакторишь... Напомнить тебе какие модули называют "с душком"? Или сам вспомнишь что "разросшиеся"?

#27
12:28, 12 мар. 2012

Alexander K
> Ещё факт - язык Java не позволяет создавать более одного класса в одном файле и
> более того требует чтобы название файла совпадало с названием класса.

Если класс объявлен с public модификатором. Если модификатора нет, то название файла может не совпадать с именем класса и классов там может быть больше одного. Просто в итоге будет сгенерировано несколько файлов <classname>.class

#28
12:29, 12 мар. 2012

Necrys
> Засунь всё в один файл и получи время Build Project == времени Rebuild Project, оч. круто да.
Смотря какой проЭкт. У меня при таком раскладе большой выигрыш по времени получается, да.

#29
12:30, 12 мар. 2012

DevilDevil
> только почем так не принято ?
> среди С++ программистов
Ну почему же не принято? В любом мало-мальски серьезном проекте все строится весьма разумно, и в итоге выходит примерно так

Страницы: 1 2 3 426 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.