Здравствуйте, Ziaw, Вы писали:
Z>Т.е. был поставлен эксперимент? Можно узнать подробности?
Просто пишется продакшн код.
Z>Точные данные по трудозатратам на редизайн.
Зачем редизайн? Так пишется с самого начала.
Z>Точные данные сэкономленого времени на порог вхождения.
Репорты из QA отдела.
Вообще в нашей кампании проблема порога вхождения решается очень просто. Любой новый человек на проекте должен сдать экзамен, в том числе и на знание библиотк. Это правило введено очень давно, еще матерыми C++-ками, которые писали как раз в любимом вами стиле, с кучей методов в классе засунутых туда с "использованием здравого смысла".
Проблему нахождения нужного метода и знания того, что в принципе библиотека умеет, а что нет — решается на корню, при любом раскладе.
Z>Давай так, каждый выберет пример библиотеки реализованой по удобной ему идеологии и попытаемся их сравнить.
Да практически каждая вторая Явовская библиотека так пишется. Из .Net-овских, например, WCF — там порог вхожждения высокий, но это с предметной областью связано, которая сама по себе не простая.
Здравствуйте, stump, Вы писали:
S>Так вот откуда ноги растут у "железного правила"
Ноги у него растут так же из Саттера, Александресу и Мак-конела, практики, и, прости господи, "здравого смысла".
S>Дело в том, что во-первых правило Мейерса сформулировано не столь категорично как "железное правило Бодягина".
Где ты категоричность нашел?
S>В общем, как тут уже говорили "использование правил не отменяет использование головы".
А кто говорил, что отменяет? Можно цитату?
Итого:
Само правило вам не нравится, но логичных аргументов, почему оно может не работать, так придумать и не получилось. Осталось только обвинить меня в догматизме и слепом следовании правилу. =)
Можно констатировать ярчайший пример демагогии со стороны противников "правила" и закрыть тему.
Здравствуйте, Ziaw, Вы писали:
Z>Про лучше/хуже говорят остальные пункты.
Причем тут остальные пункты? Это очевидный плюс, никак не зависящий от остальных пунктов.
Z>Насчет предпочел не понял, вроде не было ограничения либо/либо.
Если бы они были, то специальная конструкция была бы лишней.
Z>Вместе с моком? Какая разница как передавать мок? Как this или параметром?
Речь не пр this, а про то, куда девать функцию содержащую сам алгоритм реализации.
Здравствуйте, adontz, Вы писали:
A>Как можно аргументированно опровергать чьи-то галлюцинации?
Ром, каждый раз, когда общаюсь с тобой — сталкиваюсь с этой проблемой..
Обычно удается, но озлобляет страшно — приходится опускаться до твоего уровня. =)
Здравствуйте, adontz, Вы писали:
A>Видимо ты совсем не понимаешь, что возможности применения правила и оправданность применения правила суть разные вещи.
Ты нашел один пример, в которм, по твоему мнению, применение правила не оправдано. Однако, очевидно, его не применение приводит к еще худшим последствиям. Значит применение по прежнему считаем оправданым.
Еще примеры неоправданности будут?
A>Это уже ты придумал, что что-то приноситься в жертву.
Я не придумал, я подробно, и не раз, расписал почему так происходт, тебе лень прочитать?
A> А тезис не спортный, библиотека одна, приложений много.
И какова при таком раскладе цена ошибки в библиотеке?
A>Об этом уже говорили, но ты, видимо, пропустил.
Нет, Ром, это ты пропустил, что я целиком согласен с этим тезисом, так как он подтверждает мою позицию..
A>Я хотел сказать что твой или ещё какой-то рейтинг принципиально ничуть не осмысленнее чем LOC/day и его область применения узка.
Ты уж определись, LOC — бессмысленен или узок? =)
A>Глупости, связность никак не увеличилась,
Учи домашнее задание, тема — наследование..
Здравствуйте, adontz, Вы писали:
A> Это проблема и я её решаю за счёт partial классов. Нет, конечно я не отказался от хелперов совсем, просто есть и другие пути.
Еще более кривые..
Здравствуйте, IB, Вы писали:
IB>Итого: IB>Само правило вам не нравится, но логичных аргументов, почему оно может не работать, так придумать и не получилось. Осталось только обвинить меня в догматизме и слепом следовании правилу. =) IB>Можно констатировать ярчайший пример демагогии со стороны противников "правила" и закрыть тему.
Опять по существу ничего ответить не нашлось.
Ну тогда тебе только и остается констатировать — все, что несоответствует правилу Бодягина есть демагогия.
Здравствуйте, IB, Вы писали:
IB>Здравствуйте, Ziaw, Вы писали:
Z>>Т.е. был поставлен эксперимент? Можно узнать подробности? IB>Просто пишется продакшн код. IB>Репорты из QA отдела.
Раз все идет хорошо, значит наш путь единственно верный? Таким образом доказывается только то, что этот путь не убивает проект. Как и многие другие.
Z>>Точные данные по трудозатратам на редизайн. IB>Зачем редизайн? Так пишется с самого начала.
хорошо, примем за 0.
IB>Вообще в нашей кампании проблема порога вхождения решается очень просто. Любой новый человек на проекте должен сдать экзамен, в том числе и на знание библиотк. Это правило введено очень давно, еще матерыми C++-ками, которые писали как раз в любимом вами стиле, с кучей методов в классе засунутых туда с "использованием здравого смысла". IB>Проблему нахождения нужного метода и знания того, что в принципе библиотека умеет, а что нет — решается на корню, при любом раскладе.
Т.е. проблема порога решается просто обрубанием той части людей которые о него споткнулись. Применимо только в случае когда людям хорошо платят за использование вашего фреймворка.
Z>>Давай так, каждый выберет пример библиотеки реализованой по удобной ему идеологии и попытаемся их сравнить. IB>Да практически каждая вторая Явовская библиотека так пишется. Из .Net-овских, например, WCF — там порог вхожждения высокий, но это с предметной областью связано, которая сама по себе не простая.
Походу мне попадались каждые первые, впрочем я не знаток явовских библиотек, можно ткнуть пальцем?
WCF тут непонятно каким боком.
Где там преобладание статик хелперов?
Все что я помню из статиков в WCF является либо синглтоном либо фабрикой.
Uri baseAddress = new Uri("http://localhost:8000/HelloService");
string address = "http://localhost:8000/HelloService/MyService";
using (ServiceHost serviceHost = new ServiceHost(typeof(HelloService), baseAddress))
{
serviceHost.AddServiceEndpoint(typeof(IHello), new BasicHttpBinding(), address);
serviceHost.Open();
Console.WriteLine("Press <enter> to terminate service");
Console.ReadLine();
serviceHost.Close();
}
Как результат — порог вхождения у него ниже некуда. Можно не сдавая экзаменов по WCF (да и вообще первый раз увидев эту библиотеку) через 15 минут получить работающее сетевое приложение.
Здравствуйте, IB, Вы писали:
IB>Здравствуйте, Ziaw, Вы писали:
Z>>Про лучше/хуже говорят остальные пункты. IB>Причем тут остальные пункты? Это очевидный плюс, никак не зависящий от остальных пунктов.
Толковый словарь русского языка Ушакова
ОЧЕВИ'ДНЫЙ, ая, ое; -ден, дна, дно.
1. Несомненный, бесспорный, такой явный, что можно убедиться собственными глазами. Очевидная истина. Это — очевидное недоразумение. О. промах. В ней произошла перемена — это было очевидно. Тргнв. Очевидна цель его объяснений — успокоить меня. Чрншвскй. [Первонач. заметный, видимый взору. Сундуки его полнели очевидно. Крлв.] 2. Видевший своими глазами, являющийся очевидцем (старин.). Очевидные свидетели.
Судя по ветке, не плюс явно не бесспорный.
Z>>Насчет предпочел не понял, вроде не было ограничения либо/либо. IB>Если бы они были, то специальная конструкция была бы лишней.
Если бы они были, они бы имели доступ к приватным членам и ничем не отличались бы от обычного метода.
Z>>Вместе с моком? Какая разница как передавать мок? Как this или параметром? IB>Речь не пр this, а про то, куда девать функцию содержащую сам алгоритм реализации.
Нить куда-то пропала, я пожалуй восстановлю:
IB>4. Проще тестировать методы, вместо прямоугольника можно спокойно подпихнуть mock. Z>Что мешает мокать при вызове собственных методов? IB>Методы придется тестировать вместе с классом, а так можно по отдельности. Z>Вместе с моком? Какая разница как передавать мок? Как this или параметром? IB>Речь не пр this, а про то, куда девать функцию содержащую сам алгоритм реализации.
Если имеется ввиду расположение тестов — их можно располагать где угодно, если имеется нечто другое — не пойму что.
Здравствуйте, IB, Вы писали:
A>> Это проблема и я её решаю за счёт partial классов. Нет, конечно я не отказался от хелперов совсем, просто есть и другие пути. IB>Еще более кривые..
Сомнительно, я ведь использую все возможности языка, а ты помешался на конкретных.
Здравствуйте, Ziaw, Вы писали:
Z>Где там преобладание статик хелперов?
Там не статик хелперы, там DI.
Z>Как результат — порог вхождения у него ниже некуда.
Это не тот порог. Чтобы написать простенький код — да, скопировал пример и вперед. А вот если нужно понимать, что происходит (а это обязательное условие, если ты это применяешь в серьезном проекте) — вот тут все становится сразу печально.
... << RSDN@Home 1.2.0 alpha 4 rev. 1095 on Windows Vista 6.0.6001.65536>>
Здравствуйте, IB, Вы писали:
IB>Однако, очевидно, его не применение приводит к еще худшим последствиям.
Не очевидно и ты не описываешь почему. Значит догматик.
IB>Еще примеры неоправданности будут?
Я не могу показывать разницу между красным и синим слепому. Для тебя лично примеров новых не будет, ты не разобрался со старыми.
IB>Я не придумал, я подробно, и не раз, расписал почему так происходт, тебе лень прочитать?
Мне не лень я перечитал весь топик и ты ни разу не привёл конкретного примера.
A>> А тезис не спортный, библиотека одна, приложений много. IB>И какова при таком раскладе цена ошибки в библиотеке?
Дело не в цене ошибки, это ещё одна твоя абстрактная характеристика. Дело в том, что усложнение библиотеки дешевле усложнения приложений, посколько количество сложных мест уменьшается с N до 1, а значит усложнение библиотек оправданно по определению.
A>>Я хотел сказать что твой или ещё какой-то рейтинг принципиально ничуть не осмысленнее чем LOC/day и его область применения узка. IB>Ты уж определись, LOC — бессмысленен или узок? =)
Не перевирай чужие слова. "не осмысленнее чем LOC/day" и "бессмысленнее" это разные вещи. Учи русский язык. LOC может быть осмысленен только в очень узкой области и с большими оговорками.
A>>Глупости, связность никак не увеличилась, IB>Учи домашнее задание, тема — наследование..
Здравствуйте, AndrewVK, Вы писали:
A>>Сомнительно, я ведь использую все возможности языка, а ты помешался на конкретных. AVK>Рома, очень тебя прошу, заканчивай с психоанализом. Еще одной ветки про синглтон я не выдержу
Это та, где Бодягин утверждал, что количество результатов работы функции всегда равно количеству разных комбинаций значений её параметров? Да, да, я согласен, этот бред лучше не повторять.
Здравствуйте, adontz, Вы писали:
AVK>>Рома, очень тебя прошу, заканчивай с психоанализом. Еще одной ветки про синглтон я не выдержу
A>Это та, где Бодягин утверждал, что количество результатов работы функции всегда равно количеству разных комбинаций значений её параметров? Да, да, я согласен, этот бред лучше не повторять.
Главное предложение было первым.
... << RSDN@Home 1.2.0 alpha 4 rev. 1095 on Windows Vista 6.0.6001.65536>>
Здравствуйте, Ziaw, Вы писали:
Z>Раз все идет хорошо, значит наш путь единственно верный?
Я где-то утверждал, что он единственно верный? Ты меня ни с кем не путаешь?
Z>Т.е. проблема порога решается просто обрубанием той части людей которые о него споткнулись.
Стадия изучения библиотеки должна быть в любом случае, вне зависимости от принципов на которых она построена.
Z>Походу мне попадались каждые первые, впрочем я не знаток явовских библиотек, можно ткнуть пальцем?
Любой IoC контейнер, коих в яве до попы.
Z>WCF тут непонятно каким боком. Где там преобладание статик хелперов?
Блинский фиг. Я не тебе что ли объяснял, и, как мне казалось, вроде бы сумел объяснить, что в 99% случаев статик хелперы превращаются в DI сервисы?
Z>Все что я помню из статиков в WCF является либо синглтоном либо фабрикой.
Да не причем тут статики. Статик хелпер — лишь один из вариантов выноса метода за пределы класса, опять-таки в принципе ни разу не оговорено куда ты все это будешь выносить.
Z>Можно не сдавая экзаменов по WCF (да и вообще первый раз увидев эту библиотеку) через 15 минут получить работающее сетевое приложение.
Правильно, благодаря грамотно составленной документации и куче ресурсов в инете. Так самый кривой на свете API можно заставить с демопримером работать.
Здравствуйте, Ziaw, Вы писали:
Z>Судя по ветке, не плюс явно не бесспорный.
Судя по ветке, как раз бесспорный, так как ни один из спорщиков это утверждение даже не попытался опровергнуть (как, впрочем и многие другие).
Z>Если бы они были, они бы имели доступ к приватным членам и ничем не отличались бы от обычного метода.
С какого перепугу?!они бы имели доступ к приватным переменным своего класса, но ни как не того класса, который расширяют.
Z>Если имеется ввиду расположение тестов — их можно располагать где угодно, если имеется нечто другое — не пойму что.
Если у тебя метод находится в классе и в своей реализации обращается к членам этого класса, то тестировать его можно только вмест с этим классом, и mock ты туде не подсунешь.
Здравствуйте, adontz, Вы писали:
A>Не очевидно
Очевидно.
A> и ты не описываешь почему.
Ты не потрудился прочитать?
A> Значит догматик.
"Рома — ты не адекватен" (с) IT =)
A>Я не могу показывать разницу между красным и синим слепому.
Я каждый раз сталкиваюсь с этой проблемой, когда по честному пытаюсь тебе что-то объяснить, уже зарекся..
A>Мне не лень я перечитал весь топик и ты ни разу не привёл конкретного примера.
Значит плохо читал, примеров было более чем достаточно.
A>Дело не в цене ошибки,
То есть, на ошибки библиотеки тебе наплевать? Очень удобная позиция. .
A>это ещё одна твоя абстрактная характеристика.
У меня все характеристики, как легко заметить, очень конкретные..
A>Не перевирай чужие слова.
Рома!! От тебя ли я это слышу??!
A>LOC может быть осмысленен только в очень узкой области и с большими оговорками.
То есть, Project Management — это узкая область? Нормально ты их приложил, молодец..
A>Я к тебе в класс не пойду, там скучно.
Так и останешься двоечником?..
Здравствуйте, adontz, Вы писали:
A>Сомнительно, я ведь использую все возможности языка,
Ты бессмыслено и беспощадно используешь все возможности языка.
А ведь некоторые говорят, что Nemerle безопасен, вот Роме бы я его не доверил, глядя что он с шарпом творит..
A>а ты помешался на конкретных.
Я просто использую их к месту.