Re[9]: Элемент с подэлементами
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 27.11.10 07:27
Оценка: -1
Здравствуйте, Ikemefula, Вы писали:

I>Враньё !


Не надо грубить. В данном случае, неправду говорите Вы.

I>Так выглядит промежуточный код и код в тестах.


Нет. Такого рода код написан и далее.

I>Ты книги не читал, лучше б молчал


Для меня достаточно, что я посмотрел код примеров во всей книжке, а также — просмотрел отдельные главы.

Если ты не понимаешь разницы между надуманными примерами и примерами из реальной жизни (для реальных проектов), то это не моя проблема.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[8]: Элемент с подэлементами
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 27.11.10 07:31
Оценка: -1
Здравствуйте, Ikemefula, Вы писали:

I>Загляни в книгу, там можешь конечный результат увидеть

Конечный результат не впечатляет. Как и разбираемый Кентом Беком пример.

Если бы Кент Бек взял бы реальную задачу (например, какую-нибудт бизнес-аппликуху, GPS-навигационную систему, компьютерную игру или что-то другое) и продемонстрировал бы возможности методологии на реальном примере, то отношение было бы другое.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[9]: Элемент с подэлементами
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.11.10 11:44
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

I>>Загляни в книгу, там можешь конечный результат увидеть

КЛ>Конечный результат не впечатляет. Как и разбираемый Кентом Беком пример.

Конечного результата там нет и Кент Бек на это указывает.

КЛ>Если бы Кент Бек взял бы реальную задачу (например, какую-нибудт бизнес-аппликуху, GPS-навигационную систему, компьютерную игру или что-то другое) и продемонстрировал бы возможности методологии на реальном примере, то отношение было бы другое.


Ага, показать XP+TDD на реальном приложении — на это и десяти книг не выйдет.

TDD это не чудеса, это работа с кодом. Он взял именно такую задачу, котороу можно показать в книге.
Re[10]: Элемент с подэлементами
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.11.10 11:59
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

I>>Враньё !

КЛ>Не надо грубить. В данном случае, неправду говорите Вы.

Я говорю 1 книги ты не прочел 2 конечного результата ты видеть не мог

Кент Бек начинает с классов Dollar+Franс а заканчивает Money+Bank+Expression.

Money — для денег, Банк — для курсов, Expression — это фактически деревья выражений.

Еще раз — ты видел только промежуточные резултаты.

I>>Так выглядит промежуточный код и код в тестах.


КЛ>Нет. Такого рода код написан и далее.


Представь себе — во всех книгах Кент Бек подчеркивает важность ЧИСТОГО кода.

Метафора из его книги — живот пациента во время операции выглядит отвратительно.

I>>Ты книги не читал, лучше б молчал


КЛ>Для меня достаточно, что я посмотрел код примеров во всей книжке, а также — просмотрел отдельные главы.


Ты понимаешь, что ты смотрел в основном промежуточные результаты и тесты ?

Ты не мог видет конечного результата, т.к. в книге его просто нет !

Что бы получить его, надо проделать все его шаги и выполнить рекомендации из главы "Ретроспектива денежного примера" в частности "Что дальше ?".

КЛ>Если ты не понимаешь разницы между надуманными примерами и примерами из реальной жизни (для реальных проектов), то это не моя проблема.


У него реальный пример. Не на 100% реализованый, но реальный.

Я видел несколько приложений, в которых использовались Currency+Rate и это было жуткое зрелище.
Re[7]: Элемент с подэлементами
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 27.11.10 12:38
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

I>>Да, она. Только там не про пользу юнит-тестирования, а про решение задачи с использованием юнит-тестирования.


КЛ>В таком случае, я бы не стал рекомендовать эту книгу по двум основаниям.


Было бы лучше, если бы ты делился рекомендациями после прочтения, а не после пролистывания.
Re[11]: Элемент с подэлементами
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 29.11.10 10:19
Оценка:
Здравствуйте, Ikemefula, Вы писали:

I>Я видел несколько приложений, в которых использовались Currency+Rate и это было жуткое зрелище.


Возьмём пример из главы "Abstraction, Finally" (предшествует упомянутой тобой главе "Money Retrospective"). Смотрим код:

public void testSumTimes() {
    Expression fiveBucks = Money.dollar(5);
    Expression tenFrancs = Money.franc(10);
    Bank bank = new Bank();
    bank.addRate("CHF", "USD", 2);
    Expression sum = new Sum(fiveBucs, tenFrancs).times(2);
    Money result = bank.reduce(sum, "USD");
    assertEquals(Money.dollar(20), result);
}


На мой взгляд, этот код ничуть не лучше того, что был. Валюта по-прежнему фигурирует в названиях функций. Курс обмена по-прежнему задаётся ручками. Сама цель выполняемых операций непонятна. Написать программу для сравнения двух чисел могут и обычные школьники после прохождения обзорного курса информатики.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[12]: Элемент с подэлементами
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 29.11.10 13:41
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:


I>>Я видел несколько приложений, в которых использовались Currency+Rate и это было жуткое зрелище.


КЛ>Возьмём пример из главы "Abstraction, Finally" (предшествует упомянутой тобой главе "Money Retrospective"). Смотрим код:


КЛ>
КЛ>public void testSumTimes() {
КЛ>    Expression fiveBucks = Money.dollar(5);
КЛ>    Expression tenFrancs = Money.franc(10);
КЛ>    Bank bank = new Bank();
КЛ>    bank.addRate("CHF", "USD", 2);
КЛ>    Expression sum = new Sum(fiveBucs, tenFrancs).times(2);
КЛ>    Money result = bank.reduce(sum, "USD");
КЛ>    assertEquals(Money.dollar(20), result);
КЛ>}
КЛ>


КЛ>На мой взгляд, этот код ничуть не лучше того, что был.


Еще раз — это тестовый код, что ясно из названия "testSumTimes".

Конечного результата в книге нет !

>Валюта по-прежнему фигурирует в названиях функций.


Функции dollar это фактически алиас для money("USD")

>Курс обмена по-прежнему задаётся ручками.


Это тестовый код. Никто не мешает тебе написать код для хранения состояния Bank в базе данных.

>Сама цель выполняемых операций непонятна.


Конечно непонятна, надо ведь книгу прочесть, хотя бы ту часть что про Money

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


Кент Бек, что характерно, пишет тоже самое.
Re[13]: Элемент с подэлементами
От: AndrewJD США  
Дата: 29.11.10 17:51
Оценка:
Здравствуйте, Ikemefula, Вы писали:

>>Валюта по-прежнему фигурирует в названиях функций.

I>Функции dollar это фактически алиас для money("USD")
ИМХО, это абсолютно не гибкое решение. Для каждой валюты будем алиас создавать?


>>Сама цель выполняемых операций непонятна.

I>Конечно непонятна, надо ведь книгу прочесть, хотя бы ту часть что про Money
К сожалению, книгу не читал, но можно в двух словах пересказать чем плох подход
Money + CurrencyRate ?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[14]: Элемент с подэлементами
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 29.11.10 18:44
Оценка:
Здравствуйте, AndrewJD, Вы писали:

>>>Валюта по-прежнему фигурирует в названиях функций.

I>>Функции dollar это фактически алиас для money("USD")
AJD>ИМХО, это абсолютно не гибкое решение. Для каждой валюты будем алиас создавать?

Конечно не гибкое. Оно сделано не для гибкости, а для того, что бы человек не знакомый с кодами валют мог работать с наиболее используемыми валютами.

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

И решение, как ты понимаешь, абсолютно необзятальное — с таким же успехом ты можешь все const something = "someValue" ; заменить на конкретные значения.

Неиспользование этого алиаса никоим образом тебя не ограничивает.

I>>Конечно непонятна, надо ведь книгу прочесть, хотя бы ту часть что про Money

AJD>К сожалению, книгу не читал, но можно в двух словах пересказать чем плох подход
AJD>Money + CurrencyRate ?

Он не плох. Но лично я видел почему то только плохие реализации.

Кент Бек пользуясь разными методами выводит Money + Bank + Expression из классов Dollar и Franc.

Т.е. он именно выводит, а не говорит, в духе Кирила Лебедева, "давайте напишем следующие классы и убедимся что ООП не работает".

В твоем случае Expression, что очевидно, отсутствует. Кто возьмет на себя эти обязанности ? Вызывающий код или Money+CurrencyRate ?
Re: Элемент с подэлементами
От: _FRED_ Черногория
Дата: 30.11.10 06:50
Оценка: +1
Здравствуйте, sax0n, Вы писали:

S>привет.

S>есть некий интерфейс IElement. В иерархии есть класс IGroup, который имеет все свойства интерфейса IElement, но отличается лишь тем, что может внутри хранить другие элементы и группы (некое дерево).

S>вопрос в том, какой паттерн используется для работы с такой иерархией?


S>class IElement
S>{
S>public:
S>  virtual std::string GetName() = 0;
S>  virtual void Export() = 0;
S>};

S>class IGroup: public IElement
S>{
S>public:
S>  virtual std::string GetName() = 0;
S>  virtual void Export() = 0;
S>};


Что-то на уровне интерфейсов никакой разницы между группой и элементом не наблюдается Совершенно не понятно, какой цели служит class IGroup.
Help will always be given at Hogwarts to those who ask for it.
Re[9]: Элемент с подэлементами
От: LeonidV Ниоткуда http://vygovskiy.com
Дата: 03.12.10 05:24
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Здравствуйте, Ikemefula, Вы писали:


КЛ>Если бы Кент Бек взял бы реальную задачу (например, какую-нибудт бизнес-аппликуху, GPS-навигационную систему, компьютерную игру или что-то другое) и продемонстрировал бы возможности методологии на реальном примере, то отношение было бы другое.


Чушь. Ни одна книга не показывает решение реальной задачи по нескольким причинам:
1. Ограниченный объем самой книги;
2. Предметная область реальной задачи часто требует серьезно погружения в нее и разбирательство с ней выходит за рамки книги (именно поэтому так интернет-магазины любят в учебниках по web-приложениям — понятная предметная область);
3. Задачи берутся специально простые, чтобы не отвлекатся на суть задач, а сосредоточится на сути изложения.

Что-то вы в своем "курсе" не стали рассматривать GPS-навигатор, а взяли простенькую (в силу значительного упрощения) область в виде редактора векторной графике. Не порядок, срочно решайте реальную задачу.

Я понял, почему вы с такой помпой свое видение проектирования позиционируете — книги-то вы оказывается не читаете, а только просматриваете...
http://jvmmemory.com — простой способ настройки JVM
Re[2]: Элемент с подэлементами
От: sax0n Украина  
Дата: 03.12.10 08:01
Оценка:
> Джошуа Кериевски, "Рефакторинг с использованием шаблонов"
спасибо. как раз читаю. но, думаю, что нужно все же читать "другую банду", вот хочу Буча почитать. Чтобы что-то исправлять в процессе нужно хоть что-то для начала сделать..

_FR>Что-то на уровне интерфейсов никакой разницы между группой и элементом не наблюдается Совершенно не понятно, какой цели служит class IGroup.

Здесь пока его и нет... я как раз и думаю над этими проблемами %)
Группа является таким же элементом. но она может содержать в себе подэлементы (при чем ограничивать контролировать типы, которые в нее кидают)

Дело в том, как спроектировать это: будет огромное количество элементов и групп. как в таком случае работать с ними, чтобы сохранить тип? вот я беру любой элемент в своем дерево, и как мне определить, какого он типа? при чем конкретно такое действие нужно.
Re[7]: Элемент с подэлементами
От: ylem  
Дата: 03.12.10 08:05
Оценка:
КЛ>Во-вторых, дизайн, в котором названия валют зашиты в виде функций, ни к чему хорошему не приведёт:

Может это не методы, а экстеншены, что бы тесты удобней писать?

В целом я тоже не всецело разделил то, что автор исповедует и проповедует,
но если не вырывать из контекста, то примеры вполне нормальные.
Re[10]: Элемент с подэлементами
От: Кирилл Лебедев Россия http://askofen.blogspot.com/
Дата: 03.12.10 08:30
Оценка:
Здравствуйте, LeonidV, Вы писали:

LV>Чушь. Ни одна книга не показывает решение реальной задачи по нескольким причинам:


Почему же. Например, у Буча разбираются вполне реальные задачи. И у Питера Коуда — тоже. Другое дело, что далеко не всегда можно согласиться с предложенными ими решениями. Но это — уже другая проблема.

LV>3. Задачи берутся специально простые, чтобы не отвлекатся на суть задач, а сосредоточится на сути изложения.


Методологию нужно проверять на реальных задачах. Иначе — как можно судить о её эффективности?

LV>Что-то вы в своем "курсе" не стали рассматривать GPS-навигатор, а взяли простенькую (в силу значительного упрощения) область в виде редактора векторной графике. Не порядок, срочно решайте реальную задачу.


У меня не 10 рук, чтобы описать все задачи сразу. Постепенно буду выкладывать и другие задачи. Вот сейчас думаю, о чём лучше написать в первую очередь — о навигационной системе или об играх. С играми попроще, потому что они требуют менее объёмного описания. И можно привести исходный код.

LV>Я понял, почему вы с такой помпой свое видение проектирования позиционируете — книги-то вы оказывается не читаете, а только просматриваете...


Из чего вы сделали такой вывод? У меня в блоге приведён достаточно объёмный список литературы.
С уважением,
Кирилл Лебедев
Software Design blog — http://askofen.blogspot.ru/
Re[11]: Элемент с подэлементами
От: LeonidV Ниоткуда http://vygovskiy.com
Дата: 03.12.10 19:43
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>У меня не 10 рук, чтобы описать все задачи сразу. Постепенно буду выкладывать и другие задачи. Вот сейчас думаю, о чём лучше написать в первую очередь — о навигационной системе или об играх. С играми попроще, потому что они требуют менее объёмного описания. И можно привести исходный код.

Игры, конечно, разные бывают. Но не думаю, что архитектура средней игры будет простой. Только если поверхностно рассмотреть. Любая задача композиционно разбивается на более мелкии, что вы сами и пытаетесь пропогандировать. Соответственно, грамотное решение подзадач является неотъемлемой частью грамотного решения всей задачи.

LV>>Я понял, почему вы с такой помпой свое видение проектирования позиционируете — книги-то вы оказывается не читаете, а только просматриваете...

КЛ>Из чего вы сделали такой вывод? У меня в блоге приведён достаточно объёмный список литературы.
Из его наличия не следует, что вы книги читали А вывод сделан на основание ваших же слов — "пролистал, не читал, осуждаю".
http://jvmmemory.com — простой способ настройки JVM
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.