Sni4ok wrote:
> вы вбили себе что-то в голову(типа goto плохо, инклуды посреди файла > плохо и т.п),
Я ничего не вбивал. Это -- опыт. Сын ошибок трудных.
Выгоды от непомещения #include наверх файла никакой.
Польза есть -- хорошо оформлен код. Понятие
"код хорошо оформлен" к сожалению сложное и многогранное.
Я не смогу сейчас объяснить его преимущества.
MZ>Я ничего не вбивал. Это -- опыт. Сын ошибок трудных. MZ>Выгоды от непомещения #include наверх файла никакой.
возможно, что выгоды нет никакой, если инклуд ставят просто рядом с местом использования. Я никогда так не делал, и не страдал.
Но выше привели ряд приемов, которые полезны, и при которых используется включение инклудов не в начало.
(1) .inl хедеры, в которых пишут определения инлайновых функций, либо шаблонных функций, методов шаблонных классов. Их обычно включают в конец соответствующего хедера. Это регулярный прием. Их выделяют в отдельные файлы, потому что физически они должны быть вместе с .h файлом, но логичски они больше похожи на .cc файлы. Инклудят их в конец чтобы было после определений нужных классов/структур.
(2) Автогенерированные данные. Скрипт генерирует файл с колонкой чисел, далее этот файл включается непосредственно в том месте где определяется соответствующий массив. Если здесь придерживаться помещения #include только в начало, то тогда скрипту придется генерировать не только колонку цифр, но и весь этот boilerplate необходимый для хедеров -- то есть скрипт начинает заниматься не свои делом, а во вторых знание этого boilerplate приходится помещать в этот скрипт, которому нет никакой нужды про него знать.
(3) X-Macros. Мне неоднократно встречались ситуации, когда есть некий набор связанных сущностей, который можно оформить в виде таблицы. Из этих сущностей нужно слепить код, но при этом зависимости между сущностями размазываются по коду. Универсальное решение -- это использовать кодогенерацию, но это слишком мощное решение, и во многих случаях достаточно препроцессора и X-Macros приема.
Самый простой пример использования -- у тебя есть enum и соответсвенно набор констант, и есть набор каких-то других вещей, скажем, строк, которые взаимно однозначно соответствуют каждой константе из энума. С техникой X-Macros все красиво -- ты оформляешь один файл с таблицей соответствия константа<->строка, и дальше манипулируешь им. Если это не делать, то константы и их соответсвия размазываются и дублируются по коду.
Здравствуйте, MasterZiv, Вы писали:
MZ>Поучи бабушку щи варить лучше. MZ>Мягкий знак пишется на конце глаголов в неопределённой форме. MZ>Тут — второе лицо, единственное число.
Здравствуйте, frogkiller, Вы писали:
MZ>>Аааа, вот они, повылазили. MZ>>Лентяи и раздолбаи. MZ>>Моё мнение по этому поводу -- лень мотать -- иди работай грузчиком.
F>Лень — двигатель прогресса и враг копипасты
копипаст обычно от лени и добавляют, т.к. не охото тратить время на нормальное решение.
Здравствуйте, Олег К., Вы писали:
ОК>Отношусь отрицательно но советую смириться. Это избытки нашей профессии.
ОК>Со мной сейчас работает товарищ. Так ему если нужна константа в середине функции, то он вместо того чтобы написать ОК>