Здравствуйте, stump, Вы писали:
S>Опять по существу ничего ответить не нашлось.
Я ответил именно по существу, в отличии, кстати, от тебя.
Я, конечно понимаю, что обидно признавать свою не правоту, но будь мужчиной, умей проигрывать.
S>Ну тогда тебе только и остается констатировать — все, что несоответствует правилу Бодягина есть демагогия.
Мне, конечно, очень лестно, что ты называешь это правило моим именем, но я не претендую на лавры Меерса, Саттера и Александреску.
Здравствуйте, IB, Вы писали:
IB>Здравствуйте, stump, Вы писали:
S>>Опять по существу ничего ответить не нашлось. IB>Я ответил именно по существу, в отличии, кстати, от тебя.
Ты последние два дня в этом топике только и делаешь что огрызаешься как затравленный, по существу от тебя давно уже ничего не слышно.
Но я тебе напомню, что я прочитал статью по ссылке и высказал две мысли по существу: (1) что правило Мейерса на которое ты ссылаешься сформулировано не так как его формулируешь ты, и (2) что выгоды которые описывает Мейерс актуальны для С++ и не актуальны для C#.
На это ты мне ответил по существу буквально следующее:
"Где ты категоричность нашел?"
"А кто говорил, что отменяет? Можно цитату?"
"Само правило вам не нравится, но логичных аргументов......"
В-общем:
Я, конечно понимаю, что обидно признавать свою не правоту, но будь мужчиной, умей проигрывать.
Z>>Судя по ветке, не плюс явно не бесспорный. IB>Судя по ветке, как раз бесспорный, так как ни один из спорщиков это утверждение даже не попытался опровергнуть (как, впрочем и многие другие).
Может и наличие инопланетян, призраков, ... бесспорный факт? Раз это никто не смог опровергнуть?
Здравствуйте, IB, Вы писали:
A>>Не очевидно IB>Очевидно.
Железная логика. Раз тебе показалось, что так оно и есть, значит это истина в последней инстанции. Мания величко страшная женщина.A>> и ты не описываешь почему.
A>>Мне не лень я перечитал весь топик и ты ни разу не привёл конкретного примера. IB>Значит плохо читал, примеров было более чем достаточно.
А ты дай ссылку на конкретный пример, конкретную проблему в рамках этого топика, авось отмоешься от звания теоретика-абстракциониста.
A>>Дело не в цене ошибки, IB>То есть, на ошибки библиотеки тебе наплевать? Очень удобная позиция. .
То есть я говорю о совсем другом, а ты в очередной раз переврал мои слова, так как по существу возразить тебе нечего.
A>>LOC может быть осмысленен только в очень узкой области и с большими оговорками. IB>То есть, Project Management — это узкая область? Нормально ты их приложил, молодец..
Если твой Project Management основывается на LOC, это очень многое о тебе говорит.
Здравствуйте, IB, Вы писали:
S>>Ну тогда тебе только и остается констатировать — все, что несоответствует правилу Бодягина есть демагогия. IB>Мне, конечно, очень лестно, что ты называешь это правило моим именем, но я не претендую на лавры Меерса, Саттера и Александреску.
Не надо так откровенно врать, это уже переходит всякие границы. Мейерс в примере в вомбатом прямо тебе противоречит. Это правило твоя личная инициатива и ни Мейерс, ни Саттер, ни александреску не имеют к нему ровным счётом никакого отношения.
Здравствуйте, Aikin, Вы писали:
A>Может и наличие инопланетян, призраков, ... бесспорный факт? Раз это никто не смог опровергнуть?
Нет, родной, если вести дискуссию в таком ключе, то вы вообще слили еще до ее начала.
Здравствуйте, adontz, Вы писали:
A>Железная логика.
Безусловно. Именно по этому тебе приходится прибегать к демагогии, в логике ты не силен..
A> Раз тебе показалось, что так оно и есть, значит это истина в последней инстанции.
Это тебе удобнее считать, что мне показалось, мне-то вообщем все равно, что показалось тебе..
A> и ты не описываешь почему.
Игнорировать аргументы — это очень удобная позиция, и вы, ребята, ее регулярно и с блеском демонстрируете. Проблема только в том, что она совершенно не конструктивна.
A>А ты дай ссылку на конкретный пример, конкретную проблему в рамках этого топика, авось отмоешься от звания теоретика-абстракциониста.
Мне-то отмываться неотчего, а вот тебе от репутации неадекватного склочника не отмыться уже никогда..
A>То есть я говорю о совсем другом,
Ты говоришь ровно об этом, все ходы записаны..
A>Если твой Project Management основывается на LOC, это очень многое о тебе говорит.
Где я писал, что основывается? Рома, не будь смешным..
Здравствуйте, adontz, Вы писали:
A> Мейерс в примере в вомбатом прямо тебе противоречит.
"Если вы пишете функцию, которая может быть выполнена или как метод класса, или быть внешней по отношению к классу, Вы должны предпочесть ее реализацию без использования метода."
(c)
Здравствуйте, stump, Вы писали:
S>Ты последние два дня в этом топике только и делаешь что огрызаешься как затравленный,
Все попытки вести с тобой дискусии по существу закончились ровно тем, что ты обвинял оппонента в некорректном видении дискусии. И после этого я огрызаюсь?
Весь разговор перешел от собственно обсуждения правила, к обсуждению манеры ведения дискусии, при этом я-то как раз пытался до конца придерживаться темы топика, игнорируя откровенно хамские выпады. Тперь это называется огрызаться?
Забавно, буду знать. А как называется то, чем занимаешься ты?
S>по существу от тебя давно уже ничего не слышно.
По существу только от меня и слышно, вся ваша аргументация свелась к обвинению меня в догматизме.
S> что правило Мейерса на которое ты ссылаешься сформулировано не так как его формулируешь ты
Так тебе формулировка не нравится? На суть она не влияет.
S>, и (2) что выгоды которые описывает Мейерс актуальны для С++ и не актуальны для C#.
Выводы актуальные для C# я приводил не раз. По делу есть что возразить?
S>На это ты мне ответил по существу буквально следующее:
А вот это уже называется "художественная резьба по цитатам", и очередной пример демагогии. Мои ответы были не на замечания к ссылке, а на твои хамские выпады и передергивания, в чем легко убедиться просмотрев сообщение.
S>Я, конечно понимаю, что обидно признавать свою не правоту, но будь мужчиной, умей проигрывать.
Признаю. Состязание в демагогии и прикладном словоблудии я, видимо, проиграл. Я, в целом, не плохо развлекся, но в дальнейшем терять время будет обидно.
Здравствуйте, IB, Вы писали:
A>> Мейерс в примере в вомбатом прямо тебе противоречит. IB>"Если вы пишете функцию, которая может быть выполнена или как метод класса, или быть внешней по отношению к классу, Вы должны предпочесть ее реализацию без использования метода." IB>Отсюда делаем вывод, что Рома не умеет читать.
Иван, для особо одарённых танкистов, ещё раз
в примере c вомбатом
Там явно описанно уже 100 раз мной упомянутое исключение. А выводе делай не раньше, чем научишься читать сообщения оппонента полностью.
Здравствуйте, IB, Вы писали:
A>>Железная логика. IB>Безусловно. Именно по этому тебе приходится прибегать к демагогии, в логике ты не силен..
Ещё одно перевирание моих слов, видимо это всё что тебе осталось. Ведь на то, что я говорю ответить нечего, значит надо отвечать на что-то другое.
A>> Раз тебе показалось, что так оно и есть, значит это истина в последней инстанции. IB>Это тебе удобнее считать, что мне показалось, мне-то вообщем все равно, что показалось тебе..
Ответ конкретный вопрос об исследованиях ты слил. У тебя нет экспериментальных данных, только догадки.
A>> и ты не описываешь почему. IB>Игнорировать аргументы — это очень удобная позиция, и вы, ребята, ее регулярно и с блеском демонстрируете. Проблема только в том, что она совершенно не конструктивна.
Факты, факты, где факты? У тебя только догадки.
A>>А ты дай ссылку на конкретный пример, конкретную проблему в рамках этого топика, авось отмоешься от звания теоретика-абстракциониста. IB>Мне-то отмываться неотчего, а вот тебе от репутации неадекватного склочника не отмыться уже никогда..
То есть ссылки на конкретный пример нет, Ч.Т.Д.
A>>То есть я говорю о совсем другом, IB>Ты говоришь ровно об этом, все ходы записаны.
Ту не умеешь читать. Я говорил о другом.
A>>Если твой Project Management основывается на LOC, это очень многое о тебе говорит. IB>Где я писал, что основывается? Рома, не будь смешным..
Действительно смешно пытаться что-то тебе объяснить. Ты не просто не прав, ты так самодоволлен что никогда в этом не признаешься, хотя тебе об этом говорит множество людей. Даже Мейерс, на которого ты ссылаешься, и то никогда не говорил того, что ты ему приписываешься. Это твоя позиция, придумать себе врага и бороться с ним, вместо того чтобы хоть раззок послушать тех, кто умнее.
Здравствуйте, adontz, Вы писали:
A>Иван, для особо одарённых танкистов, ещё раз
Для особо одаренных танкистов переформулирую: "Рома не умеет читать до конца" (с)
Если Вы самокритичны и честны сами с собой, вы увидите, что имеете эту предполагаемую несогласованность со всеми нетривиальными классами, Вы используете ее потому, что класс не может имеет любую функцию, которую пожелает како-то клиент.
Разжевываю: Меерс говорит о том, что как бы ты не пытался впихнуть все методы в класс сразу, все равно, рано или поздно появится новая функция, когда класс уже будет поздно менять. И она полюбому окажется снаружи, и так тщательно взлелеянная красивость, достигнутая уменьшением качества поддержки, все равно развалится.
Собственно, Андрей специально для тебя это уже цитировал.
A>А выводе делай не раньше, чем научишься читать сообщения оппонента полностью.
Я бы сократил и абстрагировал.. — "А выводе делай не раньше, чем научишься читать ... полностью." =)
Здравствуйте, adontz, Вы писали:
A>Ещё одно перевирание моих слов,
Рома, где я переврал твои слова?! =)
Ты выдвинул тезис, я с ним полностью согласился! Или у тебя уже рефлекс, автоматом возражать на любую мою фразу?
A>Ответ конкретный вопрос об исследованиях ты слил.
О каких исследованиях?
A>Факты, факты, где факты? У тебя только догадки.
Фактов — полная тема, читай, Рома, читай..
A>То есть ссылки на конкретный пример нет, Ч.Т.Д.
Все есть в топике — дерзай..
A>Ту не умеешь читать. Я говорил о другом.
"Все ходы записаны".. (с)
A> Это твоя позиция, придумать себе врага и бороться с ним, вместо того чтобы хоть раззок послушать тех, кто умнее.
Рома, не занимайся публичным самоанализом, выглядит забавно, но твое душевное здоровье несколько тревожит.
Ну или, в конце-концов, прислушайся к своим словам..
Здравствуйте, IB, Вы писали:
IB>Для особо одаренных танкистов переформулирую: "Рома не умеет читать до конца" (с) IB>
IB>Если Вы самокритичны и честны сами с собой, вы увидите, что имеете эту предполагаемую несогласованность со всеми нетривиальными классами, Вы используете ее потому, что класс не может имеет любую функцию, которую пожелает како-то клиент.
IB>Разжевываю: Меерс говорит о том, что как бы ты не пытался впихнуть все методы в класс сразу, все равно, рано или поздно появится новая функция, когда класс уже будет поздно менять. И она полюбому окажется снаружи, и так тщательно взлелеянная красивость, достигнутая уменьшением качества поддержки, все равно развалится.
Опять переврал, специально для тебя пришлось найти и перевести текст полностью.
Здравствуйте, IB, Вы писали:
IB>Ты выдвинул тезис, я с ним полностью согласился!
Вот наш диалог
adontz> А тебе никто не приведёт пример, когда правило не получается применить. Его получается применить всегда, однако, время от времени, это приводит к абсурдному результату, когда логически связанная группа методов оказывается разбросана по разным классам.
IB> Ты нашел один пример, в котором, по твоему мнению, применение правила не оправдано. Однако, очевидно, его не применение приводит к еще худшим последствиям. Значит применение по прежнему считаем оправданым.
adontz> Не очевидно и ты не описываешь почему.
IB> Очевидно.
adontz> Железная логика. Раз тебе показалось, что так оно и есть, значит это истина в последней инстанции.
IB> Безусловно. Именно по этому тебе приходится прибегать к демагогии, в логике ты не силен.
adontz> Ещё одно перевирание моих слов, видимо это всё что тебе осталось. Ведь на то, что я говорю ответить нечего, значит надо отвечать на что-то другое.
IB> Рома, где я переврал твои слова?! =)
IB> Ты выдвинул тезис, я с ним полностью согласился!
Я так понял, ты согласен с тезисом, что LeftSubstring и RightSubstring, а так же все другие логические группы методов не должны раскидываться по классам в угоду инкапсуляции. Очень хорошо, лучше поздно, чем никогда.
A>>Ответ конкретный вопрос об исследованиях ты слил. IB>О каких исследованиях?
Ты неоднократно утверждал, что если не выделять методы в хелперы, то будет больше багов. Тебя неоднократно и не только я просили привести факты подтверждающие эту теорию.
A>>То есть ссылки на конкретный пример нет, Ч.Т.Д. IB>Все есть в топике — дерзай..
Здравствуйте, AndrewVK, Вы писали:
AVK>Не будешь ли ты любезен привести конкретную цитату, где Мейерс говорит, что в примере с вомбатом следует поместить функцию в класс вомбат?
If you're like many people with whom I've discussed this issue, you're likely to have reservations about the syntactic implications of my advice that non-friend non-member functions should be preferred to member functions, even if you buy my argument about encapsulation.
Если вы такие же, как и многие люди с которыми я обсуждал эту проблему, у вас будут возражения по поводу синтаксических последствий моего предложения, что недружественные функции не члены должны предпочитаться методам, даже если вы согласны с аргументацией касательно инкапсуляции.
For example, suppose a class Wombat supports the functionality of both eating and sleeping. Further suppose that the eating functionality must be implemented as a member function, but the sleeping functionality could be implemented as a member or as a non-friend non-member function. If you follow my advice from above, you'd declare things like this:
Например, представим класс Wombat поддерживает функциональность поедания и сна. Так же предположим, что функциональность поедания должна быть реализованна как метод, но функциональность сна может быть реализованна как метод или недружественная функция не член. Если вы последуете моему предложению, вы опишете всё нижеследующим образом:
Итак, специально для Бодягина, здесь Мейерс явно указывает что синтаксическая согласованность это прямой повод для отступления от его же правила. Это ведь всего лишь правило и его нельзя применять всегда. Он не такой фанатик как товарищь Бодягин, что делает честь ему и не делает чести сами понимаете кому
Далее
But this uniformity is misleading, because there are more functions in the world than are dreamt of by your philosophy.
Однако, эта согласованность обманчива, так как функций в мире больше, чем вы можете себе представить.
To put it bluntly, non-member functions happen. Let us continue with the Wombat example. Suppose you write software to model these fetching creatures, and imagine that one of the things you frequently need your Wombats to do is sleep for precisely half an hour.
Скажем прямо, функции не-члены приходится писать. Давайте продолжим с примером о классе Wombat. Предположим вы создаёте программную модель ловли животных и представим, что одно из часто необходимых вам действий это усыпить вомбата ровно на пол-часа.
Тут надо пояснить пример, чего Мейерс к сожалению не делает. Это не пример разработки класса Wombat, это пример его использования. Необходимое действие, получасовой сон, является характерным не для класса Wombat, а для пользователя класса Wombat.
Clearly, you could litter your code with calls to w.sleep(.5), but that would be a lot of .5s to type, and at any rate, what if that magic value were to change? There are a number of ways to deal with this issue, but perhaps the simplest is to define a function that encapsulates the details of what you want to do. Assuming you're not the author of Wombat, the function will necessarily have to be a non-member, and you'll have to call it as such:
Очевидно, вы можете разбросать по своему коду вызовы w.sleep(.5), но вам придётся напечатать очень много 0.5, и как бы быстро вы это ни делали, что если магическая константа изменится? Есть мнодество решений данной проблемы, но, наверное, наипростейшее — это определить функцию скрывающую детали реализации. Предполагая, что вы не автор класса Wombat, функция может обязательно будет не членом и вам придётся вызывать её так:
// might be inline, but it doesn't mattervoid nap(Wombat& w) { w.sleep(.5); }
Wombat w;
...
nap(w);
Из фразы "Assuming you're not the author of Wombat" становиться совершенно очевидной область применения внешних манипуляторов — это упрощение использованияя класса, но никак не его разработка.
And there you have it, your dreaded syntactic inconsistency. When you want to feed your wombats, you make member function calls, but when you want them to nap, you make non-member calls.
И вот вы это получили, ваш кошмар — синтаксическая несогласованность. когда вы хотите покормить вомбатов, вы вызываете метод, но когда хотите заставить их подремать, вы вызываете функцию не член.
If you reflect a bit and are honest with yourself, you'll admit that you have this alleged inconsistency with all the nontrivial classes you use, because no class has every function desired by every client. Every client adds at least a few convenience functions of their own, and these functions are always non-members.
Если Вы самокритичны и честны сами с собой, вы увидите, что имеете эту предполагаемую несогласованность со всеми нетривиальными классами, Вы используете ее потому, что класс не может имеет любую функцию, которую пожелает какой-то пользователь. Каждый пользователь добавляет несколько функций для своего удобства, и эту функции всегда не члены.
Собственно, вот теперь уже абсолютно ясно, что внешние манипуляторы это не манна небесная, а неприятная необходимость, неудобный выход для пользователей класса. И задача extension methods дать пользователям класса возможность расширять классы не вызывая синтаксической несогласованности.
Собственно далее, Мейерс расставляет все точки над i, полностью превознося синстаксическую согласованность над инкапсуляцией: "People just look up which syntax is appropriate for the functions they want to call, then they call them".
Я на 100% уверен, что и этот полный текст, Бодягин расщепит на несколько малоосмысленных предложений и истолкует их как-то по своему, лишь бы не признать, что дядюшки Мейерса у него за спиной нет и "правило Бодягина", названо так не для признания заслуг, а потому что только он им и пользуется.
Понятно, история с синглтоном повторяется: смотрим в книгу видим фигу. Продолжайте без меня.
P.S. "To put it bluntly, non-member functions happen." переводится как "Попросту говоря, функции нечлены встречаются.". И "скажем прямо", ни "приходится" в этой фразе отсуствуют.
... << RSDN@Home 1.2.0 alpha 4 rev. 1095 on Windows Vista 6.0.6001.65536>>
[не относится к теме, поскипано...]
S>> что правило Мейерса на которое ты ссылаешься сформулировано не так как его формулируешь ты IB>Так тебе формулировка не нравится? На суть она не влияет.
Приехали. Формулировка не влияет на суть. Видимо по тому что сути нет никакой.
Заметь, ведь никто не спорит с тобой о том, что функции работающие с публичным контрактом класса можно выносить за пределы класса. Спор идет о том что "правило Бодягина" утверждает, что это нужно делать всегда, независимо не от каких условий. Но почему это надо делать всегда, ты толком объяснить не можешь.
Тот же Мейерс делает исключения, для случая когда необходимо виртуальное поведение, и для целого ряда случаев специфических для C++.
AndrewVK делает исключение, что в случае когда важна производительность, можно поступится правилом и перенести функцию в класс чтобы она смогла работать с приватными данными.
Другие коллеги справедливо замечают, что в большинстве используемых библиотек рассматриваемое правило не соблюдается, и находят этому различные объяснения.
Но ты продолжаешь упроствовать в этом своем "всегда", теперь уже даже не утруждаясь аргументировать свою позицию
S>>, и (2) что выгоды которые описывает Мейерс актуальны для С++ и не актуальны для C#. IB>Выводы актуальные для C# я приводил не раз. По делу есть что возразить?
А у тебя?