Давно во мне шебуршит вопрос, есть ли некий напряг между этими людьми? Я, разумеется, имею в виду не личный напряг, а, как бы помягче сказать, противостояние идеологий.
Почему возник вопрос. Во-первых, полностью противоположные рекомендации.
С: Избегайте глобальных функций, по возможности оформляйте всё в функции-члены.
М: Глобальные функции всегда предпочтительны, только в очень редких случаях (необходимость виртуальности) есть смысл использовать фунции-члены.
С: Избегайте слова "friend", желание его использовать часто говорит о недостатках проектирования.
M: Друзья усиливают инкапсуляцию. Дружественная внешняя фунция всегда лучше функции-члена.
...думаю, можно продолжиь, но уже видно — говорят с точностью до наоборот.
И второе. Почему Страуструп нигде не ссылается на Мейерса? У него сотни ссылок, в том числе на вполне свежие книжки, Гамма есть, Буч есть, ещё множество известных имён, а Мейерса нет. Почему?
Я здесь вполне тёмный — прочитал полторы книжки одного и две статьи другого. Так что простите заранее, если херню порю, было бы очень интересно услышать мнение просвещённой общественности.
Здравствуйте, Pushkin, Вы писали:
P>Почему возник вопрос. Во-первых, полностью противоположные рекомендации. P>С: Избегайте глобальных функций, по возможности оформляйте всё в функции-члены. P>М: Глобальные функции всегда предпочтительны, только в очень редких случаях (необходимость виртуальности) есть смысл использовать фунции-члены.
Товарищ С полностью прав. ИМХО товарищ М фигню говорит.
P>С: Избегайте слова "friend", желание его использовать часто говорит о недостатках проектирования.
Здравствуйте, Pushkin, Вы писали:
P>Давно во мне шебуршит вопрос, есть ли некий напряг между этими людьми? Я, разумеется, имею в виду не личный напряг, а, как бы помягче сказать, противостояние идеологий.
После прочтения "Effective C++" & "More Effective C++", напротив, полное ощущение их солидарности.
P>Почему возник вопрос. Во-первых, полностью противоположные рекомендации. P>С: Избегайте глобальных функций, по возможности оформляйте всё в функции-члены. P>М: Глобальные функции всегда предпочтительны, только в очень редких случаях (необходимость виртуальности) есть смысл использовать фунции-члены.
Ты выдергиваешь цитаты из контекста. Причем, как я понимаю, вторая цитата из "культовой" статьи про инкапсуляцию. Мейерс сам говорит о ее парадоксальности. Речь не идет о глобальных функциях вообще, а о реализации обобщенных "алгоритмов", которые могут применяться одинаково, к примеру, для разных объектов (хороший пример — std::copy).
P>С: Избегайте слова "friend", желание его использовать часто говорит о недостатках проектирования. P>M: Друзья усиливают инкапсуляцию. Дружественная внешняя фунция всегда лучше функции-члена. P>...думаю, можно продолжиь, но уже видно — говорят с точностью до наоборот.
Опять передергивание. Тебе бы лишь поспорить. По Мейерсу, лучше всего "недружественная внешняя функция", если это возможно без нарушения инкапсуляции.
P>И второе. Почему Страуструп нигде не ссылается на Мейерса? У него сотни ссылок, в том числе на вполне свежие книжки, Гамма есть, Буч есть, ещё множество известных имён, а Мейерса нет. Почему?
Но последнее издание Страуструпа довольно старое.
P>Я здесь вполне тёмный — прочитал полторы книжки одного и две статьи другого. Так что простите заранее, если херню порю, было бы очень интересно услышать мнение просвещённой общественности.
В упомянутых выше книгах Мейерс выполняет вполне себе просветительскую работу: объясняет, почему в язык введены те или иные конструкции, и как не нужно писать программы на C++. Фактически, он расшифровывает рекомендации Страуструпа, которые тот дает кратко, для более опытной аудитории.
Здравствуйте, Pushkin, Вы писали:
P>Давно во мне шебуршит вопрос, есть ли некий напряг между этими людьми? Я, разумеется, имею в виду не личный напряг, а, как бы помягче сказать, противостояние идеологий.
P>Почему возник вопрос. Во-первых, полностью противоположные рекомендации. P>С: Избегайте глобальных функций, по возможности оформляйте всё в функции-члены. P>М: Глобальные функции всегда предпочтительны, только в очень редких случаях (необходимость виртуальности) есть смысл использовать фунции-члены.
Все предельно просто.
Это означает "пишите на C++ а не на С".
C++ без функций-членов — это просто нонсенс.
Здравствуйте, retalik, Вы писали:
R>Здравствуйте, Pushkin, Вы писали:
P>>Давно во мне шебуршит вопрос, есть ли некий напряг между этими людьми? Я, разумеется, имею в виду не личный напряг, а, как бы помягче сказать, противостояние идеологий.
R>После прочтения "Effective C++" & "More Effective C++", напротив, полное ощущение их солидарности.
Такие-то люди мне и нужны, которые прочитали, а не как я, лентяй, пролистали
P>>С: Избегайте глобальных функций, по возможности оформляйте всё в функции-члены. P>>М: Глобальные функции всегда предпочтительны, только в очень редких случаях (необходимость виртуальности) есть смысл использовать фунции-члены.
R>Ты выдергиваешь цитаты из контекста.
Ты хочешь, чтобы я весь текст нескольких книг и статей привёл?
R>Причем, как я понимаю, вторая цитата из "культовой" статьи про инкапсуляцию. Мейерс сам говорит о ее парадоксальности.
Парадокс — это верное утверждение, в которое трудно поверить. Вот если бы о говорил о спорности...
R>Речь не идет о глобальных функциях вообще, а о реализации обобщенных "алгоритмов
Мне показалось (уж эту-то статью я правда читал ), что там претензия на всеобщность
P>>С: Избегайте слова "friend", желание его использовать часто говорит о недостатках проектирования. P>>M: Друзья усиливают инкапсуляцию. Дружественная внешняя фунция всегда лучше функции-члена.
R>Опять передергивание. Тебе бы лишь поспорить.
Дык!
R>По Мейерсу, лучше всего "недружественная внешняя функция", если это возможно без нарушения инкапсуляции.
Лучше всего да. Но в его "псевдокоде" ясно стоит фраза "если не получается недружественная, делай дружественную". А ведь не сказал "делай встроенную" !
P>>И второе. Почему Страуструп нигде не ссылается на Мейерса? У него сотни ссылок, в том числе на вполне свежие книжки, Гамма есть, Буч есть, ещё множество известных имён, а Мейерса нет. Почему? R> Но последнее издание Страуструпа довольно старое.
Но и Мейерс, вероятно, не вчера родился...
R>В упомянутых выше книгах Мейерс выполняет вполне себе просветительскую работу: объясняет, почему в язык введены те или иные конструкции, и как не нужно писать программы на C++. Фактически, он расшифровывает рекомендации Страуструпа, которые тот дает кратко, для более опытной аудитории.
Здравствуйте, Pushkin, Вы писали:
P>Почему возник вопрос. Во-первых, полностью противоположные рекомендации. P>С: Избегайте глобальных функций, по возможности оформляйте всё в функции-члены. P>М: Глобальные функции всегда предпочтительны, только в очень редких случаях (необходимость виртуальности) есть смысл использовать фунции-члены.
"Избегайте глобальных функций" и "по возможности оформляйте всё в функции-члены" выдернуты из разных контекстов. С как раз рекоммендует не злоупотреблять методами.
P>С: Избегайте слова "friend", желание его использовать часто говорит о недостатках проектирования. P>M: Друзья усиливают инкапсуляцию. Дружественная внешняя фунция всегда лучше функции-члена.
Здравствуйте, Pushkin, Вы писали:
R>>Ты выдергиваешь цитаты из контекста. P>Ты хочешь, чтобы я весь текст нескольких книг и статей привёл?
Нет, но здесь классический случай (как с Лениным и ППС). Раздувать из этого антагонизм — все равно, что надергать строчек их твоих постов в разные форумы и состряпять тему "Пушкин + Пушкин != любовь"
Кстати, причем здесь любовь вообще? То есть люди, по-твоему, обязаны разделять взгляды только с теми, кто им симпатичен?
P>Лучше всего да. Но в его "псевдокоде" ясно стоит фраза "если не получается недружественная, делай дружественную". А
ведь не сказал "делай встроенную" !
Чем-то и мне его псевдокод не понравился. Сейчас уже не скажу, чем именно.
R>>В упомянутых выше книгах Мейерс выполняет вполне себе просветительскую работу: объясняет, почему в язык введены те или иные конструкции, и как не нужно писать программы на C++. Фактически, он расшифровывает рекомендации Страуструпа, которые тот дает кратко, для более опытной аудитории.
P>Я про статьи, в основном говорил...
Ты про нелюбовь говорил. Где факты, типа "Страуструп называет в бане Мейерса нехорошими словами на глазах трудящихся"?
Здравствуйте, MaximE, Вы писали:
P>>С: Избегайте слова "friend", желание его использовать часто говорит о недостатках проектирования. P>>M: Друзья усиливают инкапсуляцию. Дружественная внешняя фунция всегда лучше функции-члена.
ME>В своем факе С объясняет почему friend не нарушает инкапсуляцию.
Разницу между "не нарушают" и "усиливают" чувствуешь?
Здравствуйте, vasketsov, Вы писали: P>>Ровно в этом ключе я пытался однажды высказываться в споре с Павлом Кузнецовым. Еле ноги унёс ]
V>Private или ссылка есть?