Re[3]: Мое проектирование и рефакторинг
От: Павел Кузнецов  
Дата: 15.02.06 05:51
Оценка: +2
Здравствуйте, eao197, Вы писали:

GZ>>Что-то вас господа занесло. Один апологет XP, другой водпадов.


E>Не, я не водопада апологет. А так... серии маленьких водопадиков.


Что характерно, эта метафора намного ближе к описанию итеративного процесса, чем аморфный режим "постоянного рефакторинга". Последняя метафора страдает концентрацией на коде, а не на результате. В случае же полного (хотя и короткого) цикла (проектирование — реализация — документирование — тестирование — выпуск) жизнь проекта "полнее", и всевозможные "глюки" вылавливаются в большей мере, чем в случае хронического "зависания" на стадии реализации в виде "постоянного рефакторинга". То же проектирование нужно в т.ч. и для организации тестирования и "прикормки" documentation writers.
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: Мое проектирование и рефакторинг
От: EXO Россия http://www.az.inural.ru
Дата: 15.02.06 07:41
Оценка: 48 (2)
Здравствуйте, GlebZ, Вы писали:
GZ>Здесь упоминается только то, как я работаю один.

:Жму лапу. Уровень саморефлексии на высоте.

GZ>Этап 1. Думаю.

GZ>Я думаю над тем что я хочу сделать.

Я на этом этапе предпочитаю гулять где-нибуддь по парку... чтобы ногами перебирать. Чтобы окружающий мир разными сторонами поворачивался...

GZ> Во первых, нужно ли это делать. Процентов 90 именно на этом этапе и заканчивается.



!!!!!
Только у меня это два этапа. (или даже 3)
1а) Какие (и чьи) задачи задачи собираемся решать. То есть чеко определить субъект интереса (или надсистеу) и задачи этого субъекта в его собственной системе ценностей.
1б) Можно ли решить эти задачи ничего не разрабатывая (тот самый предельный случай — ни одной строчки кода).
1в) Хочу ли лично я этим заниматься и почему.

GZ> И во вторых, что это должно быть. Это не архитектура. Это действия пользователей(будем говорить сценарии).


1е) ... частично становится ясным на этапе 1б. Но дествительно требует возвращения и более детальной проаботки — отдельного этапа.

GZ> При этом я придумываю эти действия пользователей. Чаще все рождается и остается в голове, если не умещается и вещь непростая в тетрадке. (кои всегда с собой). Но я не в коем случае не думаю как я это сделаю. Не дай бог, хотя бы одним нейроном подумать об архитектуре. Тогда картина вырисовывается, и получается решение которое легко сделать. А оно ошибочное, лучше думать о действиях пользователя или системы, или утилиты. Как только подумал об архитектуре не доработав действия, то можно считать проект пропал. Это самое сложное для меня. И за этим занятием я провожу большую часть проекта.


Посмотри вот это (может не самые удачные ссылки, но что уж нагуглилось):
http://www.journal.gennadij.pavlenko.name/node/2344
http://www.brainstorming.ru/article/diltsstr.htm


GZ>Этап 2. Сажусь за компьютер. С первыми строчками кода, типа void main(){} в голове уже лежит архитектура. Я ее как-то уже давно не придумываю. Она сама рождается.


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

А дальше — для каждой отдельной подсистемы уже берусь за объетное проектирование. Например — через дерево классов. И это да — если возможно, в среде разработки. С удовольствием задействую все красивости и удобства.
Но этот этап (и остальные до резултата) у меня занимает уже около четверти времени.
Re[18]: Философический вопрос про автоматический вывод типов
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 08:16
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Надо или не надо наполнять полную ванную не зависит от советов прохожих. Я хочу мыться в ванне, значит я буду мысться в ванне. Считай это незыблемым входным условием.


Давай уточним постановку задачи. Если вымыться хочешь лично ты, то это одна задача. А если к тебе приходит заказчик и говорит, что он хочет вымыть 150 человек за день и заплатить за это N (естественно, N < K) рублей, то выбор ванны в качестве способа мытья может отпасть сам собой после некоторого проектирования.



VD>Позволь обратить твое внимание, на то что одним из основных посылов наших повествований как раз был посыл говорящий о том, что к сожалению на стадии проектирования (если конечно речь не идет о 225-ой итерации допроектирования в итерациооном процессе) болшая часть трудностей просто щее не известна. Полное проектирование с нуля и целиком в таких условиях скорее самхивает на профанацию.


VD>Так что рассказ о грамотном проектировании предовтвращающем большую часть проблем заранее для меня выглядит сказачно.


Я в очередной раз пытаюсь привлечь внимание к учету предметных областей, в которых идет работа. В каких-то из них стадию дотошного проектирования провести действительно нельзя. Вот сейчас я и мой коллегой пытаемся придумать удобный для операторов способ мониторинга событий в server-side приложении. Мы толком сами не знаем, что нужно сделать, так же, как этого не знают операторы. Они говорят -- хотим, что бы было удобнее, чем есть сейчас. Естественно, на вопрос "как именно?", они ничего сказать не могут. Поэтому вся работа выглядит как последовательность разрабатываемых, демострируемых и перерабатываемых прототипов. Именно прототипов, чтобы поймать и выкрилистовать идею, которой пока нет. Понятно, что в данной задаче ни о каком проектировании (с большой буквы) не идет речи. Максимум -- это попытка представить на бумаге, как будет выглядеть окно мониторинговой панели.

С другой стороны, я сейчас делаю в mxx_ru поддержку VS2005 и манифестов для exe и dll целей. Здесь понятно, что должно быть сделано. Не понятно как именно. Самый важный вопрос -- как пользователь будет описывать, какую помощь от mxx_ru он хочет получить при работе с манифестами. И здесь без проектирования, мне кажется, нет смысла начинать кодировать. Только когда станет точно ясно, что конкретно будет видеть пользователь и какие возможности будет предоставлять mxx_ru -- тогда уже не составит труда это запрограммировать просто в лоб.

И еще один пример. Добавление возможности индексации информации в ObjESSty. Вот такая простенькая формулировка. Можно просто брать и писать заглушки методов...
Очень завидую тем, кто сможет с ходу, без проектирования, путем написания и рефакторинга кода эту задачу решить. Потому что у меня не получается. Даже не нашел пока достаточного количества времени, чтобы обдумать большинство вопросов, связанных с этой темой и лежащих на поверхности.



ИМХО, индивидуальный подход нужен к каждой задаче. Но не слова вроде "сказачно" или "профанация".


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[19]: Философический вопрос про автоматический вывод типов
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 08:39
Оценка: :))) :))) :)
Здравствуйте, EXO, Вы писали:

EXO>Ты не прав, IMHO. Мне было очень интересно и полезно почитать некоторые из здешних сообщений.

EXO>Я даже отфорвардил линк ребяам из команды, с предложением вынести эту тему на очередную "философскую пятницу" (периодическое собрание-обсуждение ситуации в отрасли... в вольном формате).

После таких слов возникает приступ графоманства и хочется написать статью 'Как я программирую на бумаге'
А IT с VladD2 и WolfHound-ом сделают симметричный ответ: 'Как мы программируем в IDE' с подзаголовком 'Бумага должна использоваться по прямому назначению в другом месте'
Не хотел никого обижать, просто пошутил.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Мое проектирование и рефакторинг
От: GlebZ Россия  
Дата: 15.02.06 08:49
Оценка:
Здравствуйте, EXO, Вы писали:

EXO>Посмотри вот это (может не самые удачные ссылки, но что уж нагуглилось):

EXO>http://www.journal.gennadij.pavlenko.name/node/2344
EXO>http://www.brainstorming.ru/article/diltsstr.htm
Удачные. Я когда-то читал об этом, но давно. А штука весьма интересная. И вообще, весьма жизненно.

EXO>Вот здесь начинаются расхождения. Архитектуру я рисую. Черкаюсь.

EXO>На этом этапе я не нашел пока адекватной замены бумаге.
EXO>Но рисую вовсе не классы, а "компаненты", процессы, модули. И потоколы между ними.
EXO>То есть декомпозицию задачи на подсистемы. Стараюсь получить их "слабосвязанность".
EXO>А дальше — для каждой отдельной подсистемы уже берусь за объетное проектирование. Например — через дерево классов. И это да — если возможно, в среде разработки. С удовольствием задействую все красивости и удобства.
EXO>Но этот этап (и остальные до резултата) у меня занимает уже около четверти времени.
Иногда приходится работать по довольно жесткому RUP с прописыванием в UML. Такие процессы мне очень не нравятся. Обычно это писанина компонентов которые уже есть в голове, и элементарно выводящиеся из прецедентов и предметной области.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Мое проектирование и рефакторинг
От: GlebZ Россия  
Дата: 15.02.06 08:49
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Что характерно, эта метафора намного ближе к описанию итеративного процесса, чем аморфный режим "постоянного рефакторинга". Последняя метафора страдает концентрацией на коде, а не на результате.

Хотелось бы намекнуть, что рефакторинг — это улучшение кода не влияя на функциональность. И он мало зависит от процесса разработки. Просто в ХП она обязательная дисциплина.

ПК>В случае же полного (хотя и короткого) цикла (проектирование — реализация — документирование — тестирование — выпуск) жизнь проекта "полнее", и всевозможные "глюки" вылавливаются в большей мере, чем в случае хронического "зависания" на стадии реализации в виде "постоянного рефакторинга".

Нет. По случаям глюков могу сказать что ХП дает менее глючный код. И рефакторинг с TDD положительно влияет. Но основная проблема в несоответсвии требований пользователей и результатом. Если при тебе нет представителя клиента, у которого можно что-то спросить не отходя от кассы, получается полная фигня. Если имеются функциональные требования, то их можно утвердить у заказчика, и даже если в результате получится фигня, всегда можно сослаться на подпись.

ПК>То же проектирование нужно в т.ч. и для организации тестирования и "прикормки" documentation writers.

Для тестирования и documentation writers в основном полезны прецеденты написанные аналитиками а не архитекторами.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Мое проектирование и рефакторинг
От: GlebZ Россия  
Дата: 15.02.06 08:49
Оценка:
Здравствуйте, eao197, Вы писали:

GZ>>Что-то вас господа занесло. Один апологет XP, другой водпадов.

E>Не, я не водопада апологет. А так... серии маленьких водопадиков.
Я как-то побоялся называть разработку итерационной, поскольку все процессы разработки в современном мире итерационные.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[19]: Философический вопрос про автоматический вывод типов
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.02.06 17:36
Оценка:
Здравствуйте, eao197, Вы писали:

E>Давай уточним постановку задачи.


Нет задачи. Есть решение которое применяю лично я дома когда наполняю ванну.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: Философический вопрос про автоматический вывод типов
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.02.06 17:36
Оценка:
Здравствуйте, EXO, Вы писали:

EXO>Ты не прав, IMHO. Мне было очень интересно и полезно почитать некоторые из здешних сообщений.


Ключевое слово некоторые. Но засилие откровенных понтов и бссмысленого перетирания превращают форум в пустой базар.

VD>>Такой смысл создавать письмо на 4 экрана если вся его суть заключается в мысли — "все ламеры, а я тут один на белом коне..."?


EXO>А можешь предположить, что все остальное ты просто не видишь?


А можешь предположить, что видить нечего?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Философический вопрос про автоматический вывод типов
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.02.06 17:36
Оценка:
E>После таких слов возникает приступ графоманства и хочется написать статью 'Как я программирую на бумаге'
E>А IT с VladD2 и WolfHound-ом сделают симметричный ответ: 'Как мы программируем в IDE' с подзаголовком 'Бумага должна использоваться по прямому назначению в другом месте'
E>Не хотел никого обижать, просто пошутил.

А в этом ничего обидного лично я не вжиу. Наоборот дельное предложение разбавленное юмором.
Вот когда общение ведтся в стиле "Хинты: тебе надо подучиться...", вот это раздражает.

Пожалуй действительно имеет смысл описать процесс разработки. Вот только пример нужен.
Хотя это нужно для вас. Как бы с бумажкой мы и сами имеем. Раньше по другому и не удавалось.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: Философический вопрос про автоматический вывод типов
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 15.02.06 17:41
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Нет задачи. Есть решение которое применяю лично я дома когда наполняю ванну.


Значит задача вполне точно определена: вымыться самому.
И решение вполне нормальное.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[12]: Философический вопрос про автоматический вывод типов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 21:03
Оценка: +2
Здравствуйте, eao197, Вы писали:

E>Всегда ли требуется рефакторинг, к примеру, 200 тысяч строк кода?


Строго говоря — требование к базовым интерфейсам меняться как можно реже проистекает из единственного факта — необходимости делать согласование с изменениями в использующем коде. В случае наличия рефакторинга, если конечно базовые интерфейсы не смотрят наружу проекта, проблемы согласования снимаются, следовательно снимается и вышеозначенное требование.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[15]: Философический вопрос про автоматический вывод типов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 21:19
Оценка: +2
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Навскидку несколько нетехнических причин неприятия. Первая: если в "принципы" нужно поверить, то это уже не принципы а догмы. Вторая: объяснения зачастую состоят из передёргиваний и подмены понятий, а зачастую и из бессвязно-восторженных речей. Последнее свойственно, например, твоим постингам (уж извини). Третья: нередки попытки тем или иным образом унизить э... "представителей старого мира", что естественным образом провоцирует неприятие и оратора и того, о чём он орёт.


До сюда был согласен.

ГВ> Четвёртая: подозрительная корреляция рассуждений провозвестников нового с тем, что делает MS. Проследить это можно на примере шаблонов (Кто тут пел, что это нафиг не нужно и приведение от базового Object — рулез форева?).


Влад? Не припоминаю.

ГВ>Интересно, если MS всё-таки вставит в C# x.0 множественное наследование, как изменятся куплеты в этой песне?


Не вставит.

ГВ>Для того, чтобы понять преимущества объектного подхода перед структурным "пробовать" как правило, нужды не было. Достаточно было простого объяснения.


Черта с два. Я сам начинал всерьез программировать как раз когда на просторах необъятной стали популярны объектные TP 5.5 и TC 2. И тогда неприятие ООП было таким мощным, что сегодняшние войны против .NET ни в какое сравнение не идут. Запомнил я это хорошо потому что тогда сам испытал самую мощную ломку сознания за свою жизнь в попытке освоить ООП (а говорят — наоборот, мозги костенеют с возрастом).

ГВ> Почему для объяснения преимуществ "новых принципов" их нужно всенепременно попробовать?


Потому что иначе рискуешь попасть в плен к собственным предрассудкам. Не про тебя, но здесь, проглядывая оценки, можно выделить отчетливую группу товарищей, устойчиво ставящих плюсы при восхвалениях С++, и минусы при восхвалениях дотнета, вне зависимости от того, насколько прав тот, кому оценки ставят. Как впрочем, наверное есть группа и с антогонистичным поведением. Вот это оно — они уже не способны оценивать языки объективно.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[21]: Философический вопрос про автоматический вывод типов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 21:58
Оценка:
Здравствуйте, eao197, Вы писали:

E>Один умный человек когда-то на лекции сказал: "Ты знаешь что-то сам только когда можешь объяснить это другому".


Пробовал когда нибудь переводить текст в большом объеме? Лично у меня на это уходит на порядок больше сил, нежели если нужно просто этот текст понять.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[19]: Философический вопрос про автоматический вывод типов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 21:58
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Помню свой ступор, когда обнаружил, что они используют правила о name conventions событий PropNameChanging и PropNameChanged для обеспечения работы биндинга.


Это не байндинг, это особенности работы ReflectPropertyDescriptor.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[20]: Философический вопрос про автоматический вывод типов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 21:58
Оценка:
Здравствуйте, IT, Вы писали:

IT>Там ещё есть соответствующий интерфейс.


Только для списков.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[15]: Философический вопрос про автоматический вывод типов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 22:19
Оценка: :)
Здравствуйте, vdimas, Вы писали:

V>Вообще-то проектирование — это далеко не только спецификация публичных и защищенных интерфейсов типов... Проектирование начинается с use-cases, и вот в этом вопросе никакой Решарпер и никакая студия тебе не помогут.


use cases это здорово и круто, когда исходные требования заранее известны. А на практике это частенько не так.

V>Признайтесь, вы все часто используете пошаговую отладку на дотнете...


Признаюсь — нет. Более того, частенько у меня хватает наглости закоммитить код в репозиторий, просто убедившись что он компилируется. Обычно прокатывает . Правда есть одна область, где действительно приходится отладчиком часто пользоваться — при разработке расширения студии. Только вот проблема при этом не в дотнете, а в крайней убогости документации. Так и у тебя скорее всего — видимо задачка неприятная попалась.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[21]: Философический вопрос про автоматический вывод типов
От: IT Россия linq2db.com
Дата: 15.02.06 22:29
Оценка:
Здравствуйте, AndrewVK, Вы писали:

IT>>Там ещё есть соответствующий интерфейс.


AVK>Только для списков.


В 2.0 добавили INotifyPropertyChanged.
Если нам не помогут, то мы тоже никого не пощадим.
Re[22]: Философический вопрос про автоматический вывод типов
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.06 22:31
Оценка:
Здравствуйте, IT, Вы писали:

IT>В 2.0 добавили INotifyPropertyChanged.


До 2.0 руки пока не доходили. Недавно попробовал новый дизайн-тайм — понравилось. Наконец то это стало возможно использовать. В потроха не заглядывал.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[5]: Мое проектирование и рефакторинг
От: Павел Кузнецов  
Дата: 16.02.06 00:02
Оценка: 2 (1)
Здравствуйте, GlebZ, Вы писали:

ПК>>Что характерно, эта метафора намного ближе к описанию итеративного процесса, чем аморфный режим "постоянного рефакторинга". Последняя метафора страдает концентрацией на коде, а не на результате.


GZ>Хотелось бы намекнуть, что рефакторинг — это улучшение кода не влияя на функциональность. И он мало зависит от процесса разработки. Просто в ХП она обязательная дисциплина.


XP не отвергает выделенного этапа проектирования и планирования, и даже наоборот, в классике предполагает наличие в начале каждой итерации выделенное планирование, iteration planning meeting, и выделенный этап проектирования, основанный на использовании CRC Cards. Как мы уже разобрались выше и ранее, режим "постоянного рефакторинга" в трактовке Влада (т.е. произвольные модификации кода с помощью инструментальных средств IDE, обычно без unit tests) принципиально отличается от рефакторинга в трактовке XP, который, действительно, принципиально не изменяет функциональность.

ПК>>В случае же полного (хотя и короткого) цикла (проектирование — реализация — документирование — тестирование — выпуск) жизнь проекта "полнее", и всевозможные "глюки" вылавливаются в большей мере, чем в случае хронического "зависания" на стадии реализации в виде "постоянного рефакторинга".


GZ>Нет. По случаям глюков могу сказать что ХП дает менее глючный код. <...>


Ну началось... XP и прочие модные итерационные процессы как раз построены по схеме, упомянутой выше (полные, но короткие циклы, включающие в т.ч. (коллективное) планирование и проектирование ближайшей итерации).

P.S. Интересно, на основании чего ты воспринял метафору "серии маленьких водопадиков" как противоречащую XP и т.п.? Уж не из-за того, что встретил слово "водопадик"?
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.