Re[4]: Повторное использовае кода == зло
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.06.13 12:15
Оценка: +3
Здравствуйте, igor-booch, Вы писали:

IB>Рефакторинг требует дополнительных трудозатрат.


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

IB>Зная варианты развития системы


Варианты развития системы в 99.99% случаев знать невозможно.
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
AVK Blog
Re[8]: Повторное использовае кода == зло
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.06.13 07:59
Оценка:
Здравствуйте, igor-booch, Вы писали:

I>>Надо полагать, тебе известен способ как добиться этого без переписывания и без рефакторинга ? Поделись пулькой что ли ?


IB>Добро и зло относительно, как все остальное в мире.


Видишь, как всё просто. А рефакторинг это не добро и не зло, это просто инструмент для безопасного изменения структуры кода.
Re[9]: Повторное использовае кода == зло
От: igor-booch Россия  
Дата: 03.06.13 13:02
Оценка:
I>Видишь, как всё просто. А рефакторинг это не добро и не зло, это просто инструмент для безопасного изменения структуры кода.

Так инструментальность тоже относительна. Относительно абстрактного человека топор несомненно инструмент. Он может топором и дом построить и разрушить что-нибудь.
Но сам топор не будет в виноват в разрушениях. И построенный дом не будет заслугой топора (разве что может быть заслугой мастера, который сделал хороший топор)
А вот относительно дерева, которое человек срубит топором, топор будет злом (вместе с человеком, который им орудует)
Если топор в руках у злого человека, то относительно других людей топор, тоже можно считать злом (как и злой человек), а не просто инструментом.
Если топор в руках у мастера, который строит дом, то топор и мастер будут добром, относительно людей, которые будут жить в доме.
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Re[10]: Повторное использовае кода == зло
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 03.06.13 15:02
Оценка:
Здравствуйте, igor-booch, Вы писали:

I>>Видишь, как всё просто. А рефакторинг это не добро и не зло, это просто инструмент для безопасного изменения структуры кода.


IB>Так инструментальность тоже относительна.


Проще инструмент рассматривать как инструмент. Тогда можно говорить о том, правильно ли он выбран или нет. А если рассматривать относительно чего чем же он является, то к результату можно и не подобраться.
Re[11]: Повторное использовае кода == зло
От: igor-booch Россия  
Дата: 05.06.13 08:49
Оценка: -1
I>Проще инструмент рассматривать как инструмент. Тогда можно говорить о том, правильно ли он выбран или нет. А если рассматривать относительно чего чем же он является, то к результату можно и не подобраться.

То что рефакторинг может быть добром, я показал в этом сообщении
Автор: igor-booch
Дата: 02.06.13
. Рефракторинг позволяет скомпенсировать частичную ложность сведений о требованиях к системе. Но рефакториг может быть и злом. Для говнокодера он может служить оправданием убежденности "сделаю сейчас как получится, а потом порефачу (если манагер даст время)". Для говноаналитика рефакторинг может служить оправданием "а зачем мне сейчас тут анализировать, все равно прогеры порефачат потом если что".
То есть относительно абстрактного программиста и аналитика рефакторинг несомненно инструмент. Но чем больше мы конкретизируемся до конкретных аналитиков и программистов, до конкретных проектов, до конкретных ситуаций на проекте, тем больше рефакторинг превращается в добро или зло.
Если сказать тоже самое культурным языком: рефакторинг не стимулирует к улучшению качества кодирования и аналитики. А без стимулов прогрер может расслабиться и стать говнокодером, (аналитик говноаналитиком). Если в команде рефакторинг будет доминирующей техникой, то система дестабилизируется,выйдет из динамического равновесия (декомпенсация). Рефакторинг может стать доминирующей техникой, если в команде доминируют говнокодеры и говноаналитики. Получается замкнутый круг. Поэтому для стабилизации системы необходимы другие стимулы для улучшения качества кодирования и аналитики. Полностью разорвать замкнутый круг могут только абсолютно истинные (неизменные) знания о требованиях системе. Что невозможно. Поэтому только стабилизация (взимокомпенсация), которой должен заниматься манагер.
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Re[12]: Повторное использовае кода == зло
От: C.A.B LinkedIn
Дата: 05.06.13 09:11
Оценка:
Здравствуйте, igor-booch, Вы писали:
I>>Проще инструмент рассматривать как инструмент. Тогда можно говорить о том, правильно ли он выбран или нет. А если рассматривать относительно чего чем же он является, то к результату можно и не подобраться.
IB>То что рефакторинг может быть добром, я показал в этом сообщении
Автор: igor-booch
Дата: 02.06.13
. Рефракторинг позволяет скомпенсировать частичную ложность сведений о требованиях к системе.

ИМХО, рефакторинг имеет весьма косвенное отношение к требованиям.
В целом, относительно требований, есть две крайности: 1)Собираем всю-всю информацию и только затем начинаем писать код, 2)Сразу начинаем писать код, и по ходу разбираемся что к чему. А истина как всегда где-то посредине
Ну а рефакторинг это не зло и не добро и не средство борьбы с некорректными требованиями, это инструмент, при правильном применении позволяющий экономить время программистов. И в целом его имеет смысл применять только если: затраты_на_разработку + затраты_на_рефакторин + затраты_на_поддержку < затраты_на_разработку + затраты_на_поддержку. Эти три переменные сильно-сильно зависят от проекта и от программиста(например я считаю что лучше разделять код на небольшие кусочки, каждый из которых писать по принципу "написал — забыл", а в случае необходимости заменять кусочек целиком, т.е. я стараюсь писать "одноразовый" код).
IB>Но рефакториг может быть и злом. Для говнокодера он может служить оправданием убежденности "сделаю сейчас кое-как, а потом порефачу (если манагер даст время)". Для говноаналитика рефакторинг может служить оправданием "а зачем мне сейчас тут анализировать, все равно прогеры порефачат потом если что".
Это определённо кадровые проблемы
IB>То есть относительно абстрактного программиста и аналитика рефакторинг несомненно инструмент. Но чем больше мы конкретизируемся до конкретных аналитиков и программистов, до конкретных проектов, до конкретных ситуаций на проекте, тем больше рефакторинг превращается в добро или зло.
ИМХО, вы путаете сам инструмент и последствия его использования...
IB>Если сказать тоже самое культурным языком: рефакторинг не стимулирует к улучшению качества кодирования и аналитики.
...а так же причину и следствие.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[2]: Повторное использовае кода == зло
От: TimurSPB Интернет  
Дата: 05.06.13 10:13
Оценка: +1
IB>Потом появляются мелкие различия в логике работа с физическими и юридическими лицами.
Так ними работают по разному. Фокус должен быть направлен на реюзабельность функционала общего для всех, а не на сами понятия физиков и юриков.
Не стоит обвинять практику повторного использования, когда ошибка заложена ещё на этапе проектирования.
Make flame.politics Great Again!
Re[13]: Повторное использовае кода == зло
От: igor-booch Россия  
Дата: 05.06.13 10:55
Оценка:
CAB>ИМХО, рефакторинг имеет весьма косвенное отношение к требованиям.
CAB>В целом, относительно требований, есть две крайности: 1)Собираем всю-всю информацию и только затем начинаем писать код, 2)Сразу начинаем писать код, и по ходу разбираемся что к чему.
Интересное замечание, спасибо.
Недостатком итеративного процесса является, то что система построенная по требованиям итерации n, может архитектурно быть не приспособлена к удовлетворению требований итерации n + 1, n + 2 ... n + k.
Для компенсации этого недостатка используется рефакторинг.


Итеративный подход (англ. iteration, «повторение») в разработке программного обеспечения — это выполнение работ параллельно с непрерывным анализом полученных результатов и корректировкой предыдущих этапов работы.


То что выделено, IMHO, рефакторинг.

CAB>Это определённо кадровые проблемы

Я пытаюсь рассмотреть всю систему в целом, то есть рефакторинг не просто сам по себе, а в контексте менеджмента.

CAB>А истина как всегда где-то посредине

Согласен, каскадная модель это длинные по времени итерации, итеративная короткие. Разница в количестве времени, которая переходит в качество. На практике итерации могут быть средними по времени и соответственно может использоваться смесь из каскадных и итеративных техник.

CAB>...а так же причину и следствие.

При рассмотрении системы в целом с точки зрения равновесия, разделение на причину и следствие затруднительно. Представите весы на двух чашах, которых гири с одинаковым весом. И поразмышляйте здесь над причинами и следствиями. Уйдете в бесконечную рекурсию. Почему правая чаша не поднимается вверх? Потому что гиря на левой чаше давит вниз. А если она давит вниз почему правая чаша вверх не поднимается? ... Постройте физическую модель уравновешивания таких весов. Они у Вас будут бесконечно колебаться около положения равновесия, колебания буду бесконечно затухать. В реальности эти колебания не важны. Важно равновесие.
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Re[14]: Повторное использовае кода == зло
От: C.A.B LinkedIn
Дата: 05.06.13 11:49
Оценка:
IB>Итеративный подход (англ. iteration, «повторение») в разработке программного обеспечения — это выполнение работ параллельно с непрерывным анализом полученных результатов и корректировкой предыдущих этапов работы.
IB>То что выделено, IMHO, рефакторинг.
Не, это не рефакторинг, я не нашёл подходящего термина, но ближе всего это к реинженерингу.
CAB>>...а так же причину и следствие.
IB>При рассмотрении системы в целом с точки зрения равновесия, разделение на причину и следствие затруднительно.
Очевидно равновесие это стояние, которое может быть следствие или причиной.

PS: Когда вы сделали какой-то вывод(навроде "Рефракторинг позволяет скомпенсировать частичную ложность сведений о требованиях к системе."), _не_спешите_ делать следующий(навроде "Рефакторинг может стать доминирующей техникой, если в команде доминируют говнокодеры и говноаналитики."), проверьте свой вывод. Алсо на Cousera есть релевантный курс(первая часть), очень рекомендую.
Между тем,что я думаю,тем,что я хочу сказать,тем,что я,как мне кажется,говорю,и тем,что вы хотите услышать,тем,что как вам кажется,вы слышите,тем,что вы понимаете,стоит десять вариантов возникновения непонимания.Но всё-таки давайте попробуем...(Э.Уэллс)
Re[15]: Повторное использовае кода == зло
От: igor-booch Россия  
Дата: 07.06.13 13:09
Оценка:
IB>>Итеративный подход (англ. iteration, «повторение») в разработке программного обеспечения — это выполнение работ параллельно с непрерывным анализом полученных результатов и корректировкой предыдущих этапов работы.
IB>>То что выделено, IMHO, рефакторинг.
CAB>Не, это не рефакторинг, я не нашёл подходящего термина, но ближе всего это к реинженерингу.


Реинжиниринг программного обеспечения — процесс создания новой функциональности или устранения ошибок, путём революционного изменения, но используя уже имеющееся в эксплуатации программное обеспечение.



Чем длиннее итерации по времени, тем более революционные изменения надо вносить. При коротких итерациях изменения IMHO эволюционные. Рефакторинг ближе к эволюционным изменениям. А короткие итерации ближе к итерационному подходу.

CAB>PS: Когда вы сделали какой-то вывод(навроде "Рефракторинг позволяет скомпенсировать частичную ложность сведений о требованиях к системе."), _не_спешите_ делать следующий(навроде "Рефакторинг может стать доминирующей техникой, если в команде доминируют говнокодеры и говноаналитики."), проверьте свой вывод.

Говноаналитики увеличивают % ложных сведений о требованиях к системе, тем самым увеличивают потребности в рефакторинге. Говнокодеры пишут плохой код, который нужно рефачить.

CAB>>>...а так же причину и следствие.

IB>>При рассмотрении системы в целом с точки зрения равновесия, разделение на причину и следствие затруднительно.
CAB>Очевидно равновесие это стояние, которое может быть следствие или причиной.
Правильно. Равновесие это следствие всех процессов происходящих в системе в совокупности.

CAB>Алсо на Cousera есть релевантный курс(первая часть), очень рекомендую.

спасибо
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Re[13]: Повторное использовае кода == зло
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.06.13 12:38
Оценка: +1
Здравствуйте, C.A.B, Вы писали:

CAB>ИМХО, рефакторинг


Русская вики, по своему обыкновению, гавно. Определение там неполное и не очень корректное.
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
AVK Blog
Re[12]: Повторное использовае кода == зло
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.06.13 12:38
Оценка:
Здравствуйте, igor-booch, Вы писали:

IB>Рефракторинг позволяет скомпенсировать частичную ложность сведений о требованиях к системе.


Ты неправильно понимаешь значение термина рефакторинг. Рефакторинг не изменяет функциональные свойства кода, поэтому не в состоянии компенсировать никакие изменения требований. Изменение требований компенсирует нормальная эволюция кода, а рефакторинг лишь позволяет сделать эти изменения как можно более дешевыми и безболезненными.

IB>Для говнокодера он может служить оправданием убежденности "сделаю сейчас как получится, а потом порефачу (если манагер даст время)".


Э нет. Говнокодер это когда "сделаю как нибудь, а потом может само рассосется". А если человек о рефакторинге думает, то это далеко не говнокодер.

IB> Для говноаналитика рефакторинг может служить оправданием "а зачем мне сейчас тут анализировать, все равно прогеры порефачат потом если что".


Аналитику вообще наличие/отсутствие рефакторинга абсолютно параллельно.

IB>Если сказать тоже самое культурным языком: рефакторинг не стимулирует к улучшению качества кодирования


Он не то чтобы стимулирует, он напрямую направлен на улучшение качества кодирования.

IB>А без стимулов прогрер может расслабиться и стать говнокодером


Странное у тебя понимание работы программиста, очень странное.
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
AVK Blog
Re[13]: Повторное использовае кода == зло
От: igor-booch Россия  
Дата: 10.06.13 13:37
Оценка:
AVK>Ты неправильно понимаешь значение термина рефакторинг. Рефакторинг не изменяет функциональные свойства кода,

Согласен, рефакторинг не изменяет функциональные свойства кода.
Расскажу поподробнее как я понимаю рефакторинг,
Аналитик описал требования A к системе,
Программисты по этим требованиям построили архитектуру приложения, написали код
Далее аналитик изменил требования к системе и добавил новые, получились требования A'B
Он в принципе мог сразу дать программистам требования A'B, но в силу разных причин не смог, поэтому требования A рассматриваю как ложные
Архитектура программы не рассчитана на те изменения, которые произошли в требованиях A, а также на добавление требований B
Не рассчитана, значит, что реализации требований A'B, для архитектуры построенной по требованиям A, выливается в клепание заплаток.
Заплатки — это код который имеет признаки плохого кода
Автор(ы): Джошуа Кериевски
Дата: 31.10.2006
Глава из книги "Рефакторинг с использованием шаблонов".
Наиболее распространенные проблемы проектов возникают в следующих случаях:
— если код содержит повторы;
— если он непонятен;
— если он сложен.
Эти критерии определенно могут помочь обнаружить в коде места, нуждающиеся в улучшении. С другой стороны, многие программисты считают этот список слишком неопределенным: не понятно, как опознать в коде повторения, если они не совсем одинаковы; невозможно с полной уверенностью судить, ясно ли говорит код о своем назначении, не понятно, как отличить простой код от сложного.

Чтобы избежать заплаток, нужно поменять архитектуру приложения. Это изменение архитектуры и есть рефракторинг.
Тогда требования A'B можно будет реализовать без заплаток.
То есть после рефакторинга мы получаем систему, архитектура которой построена с учетом требований A'B.
После этого требования A'B можно реализовать без заплаток.
Если бы рефакторинг не скомпенсировал ложность требований к системе, в коде были бы заплатки.

Но по мере расширения системы, изменять её архитектуру становится все сложнее и сложнее, компенсаторных возможностей рефакторинга может не хватить, возникает декомпенсация (см. http://rsdn.ru/forum/philosophy/5196717.1
Автор: AndrewVK
Дата: 10.06.13
) и тогда становится проще переписать все с 0 или клепать заплатки
Автор(ы): Джошуа Кериевски
Дата: 31.10.2006
Глава из книги "Рефакторинг с использованием шаблонов".
Наиболее распространенные проблемы проектов возникают в следующих случаях:
— если код содержит повторы;
— если он непонятен;
— если он сложен.
Эти критерии определенно могут помочь обнаружить в коде места, нуждающиеся в улучшении. С другой стороны, многие программисты считают этот список слишком неопределенным: не понятно, как опознать в коде повторения, если они не совсем одинаковы; невозможно с полной уверенностью судить, ясно ли говорит код о своем назначении, не понятно, как отличить простой код от сложного.
.


IB>>Для говнокодера он может служить оправданием убежденности "сделаю сейчас как получится, а потом порефачу (если манагер даст время)".

AVK>Э нет. Говнокодер это когда "сделаю как нибудь, а потом может само рассосется". А если человек о рефакторинге думает, то это далеко не говнокодер.
Для абсолютно честного программиста это верно. Но люди ленивые и подвержены соблазнам...
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Re[14]: Повторное использовае кода == зло
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.06.13 14:16
Оценка:
Здравствуйте, igor-booch, Вы писали:

IB>Согласен, рефакторинг не изменяет функциональные свойства кода.

IB>Расскажу поподробнее как я понимаю рефакторинг,

Зачем? Если оно отличается от общепринятого, предлагаю его сразу исключить из разговора.

IB>Если бы рефакторинг не скомпенсировал ложность требований к системе, в коде были бы заплатки.


Вывод неверный. Если бы рефакторинга не было, изменение было бы дороже. А уж к чему там в конечном итоге пришли бы — к изменению архитектуры или к заплаткам, это вопрос отдельный.

AVK>>Э нет. Говнокодер это когда "сделаю как нибудь, а потом может само рассосется". А если человек о рефакторинге думает, то это далеко не говнокодер.

IB>Для абсолютно честного программиста это верно. Но люди ленивые и подвержены соблазнам...

Я на практике подобного ни разу не наблюдал. А ты?
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
AVK Blog
Re[15]: Повторное использовае кода == зло
От: igor-booch Россия  
Дата: 10.06.13 14:27
Оценка:
IB>>Если бы рефакторинг не скомпенсировал ложность требований к системе, в коде были бы заплатки.
AVK>Вывод неверный. Если бы рефакторинга не было, изменение было бы дороже.

А вот это не факт, дешевле может оказаться заплатка (например, дублирование кода — тема топика).
Цель разработки создание системы отвечающей требованиям наименьшими трудозатратами.
Дешевле может оказаться немного продублировать код, чем перелопачивать всю систему.
Дешевле даже в долгосрочной перспективе.
Хотя бывает дешевле в краткосрочной перспективе, но дороже в долгосрочной.
Это уже руководитель должен решать что дороже или дешевле и в какой перспективе.
В любом случае — главное минимизация трудозатрат и максимизация результата.
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Re[16]: Повторное использовае кода == зло
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.06.13 14:35
Оценка: +2
Здравствуйте, igor-booch, Вы писали:

IB>А вот это не факт


Факт. Иначе это неправильный рефакторинг, негодный.

IB>, дешевле может оказаться заплатка (например, дублирование кода — тема топика).


При чем тут вообще заплатка? Рефакторинг удешевляет внесение изменений в функционал. Окупится ли сумма рефакторинг+изменение, тут да, возможны варианты, а вот изменение кода после рефакторинга обязано быть гарантированно дешевле, чем без него.

IB>Цель разработки создание системы отвечающей требованиям наименьшими трудозатратами.

IB>Дешевле может оказаться немного продублировать код, чем перелопачивать всю систему.

Не все системы делаются в режиме "сделал и забыл" по никогда не изменяющейся спецификации. Большинство все таки довольно долго развивается, и тут уже надо учитывать долговременные последствия заплаток. Опять же, наличие заплаток никак не отменяет рефакторинга.

IB>Это уже руководитель должен решать что дороже или дешевле и в какой перспективе.


Эт смотря какой руководитель. У руководителя проекта в целом может просто не хватать нужной компетенции, к примеру.

IB>В любом случае — главное минимизация трудозатрат и максимизация результата.


Верно. И с этой точки зрения подход с постоянным рефакторингом себя оправдывает. И тем больше оправдывает, чем дольше живет код и чем выше требования к качеству продуктов.
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
AVK Blog
Re[17]: Повторное использовае кода == зло
От: igor-booch Россия  
Дата: 11.06.13 06:58
Оценка:
AVK>Рефакторинг удешевляет внесение изменений в функционал. Окупится ли сумма рефакторинг+изменение, тут да, возможны варианты, а вот изменение кода после рефакторинга обязано быть гарантированно дешевле, чем без него.
Согласен со всем,
сделаю не большой уточнение.
Вопрос еще в том сколько будет этих изменений кода предполагается в будущем. Если мало, то рефакторинг может не окупиться, если много, то конечно окупиться. Предположим сначала в программе был реализован только один вариант какого-либо алгоритма (поведения). Далее появилось требование, по которому требуется еще один вариант алгоритма (поведения). Тут можно сделать рефакторинг — использовать паттерн "Стратегия". Тогда если появятся еще 10 вариантов алгоритма их их добавление будет достигаться меньшими трудозатратами, чем если бы мы не применили паттерн "Стратегия". А если по здравому смыслу предполагается только 2 варианта алгоритма (поведения) и никак не больше? Тогда может быть дешевле не тратить силы на паттерн Стратегия, а поставить "заплатку" (if какой-нибудь в одной релизации алгоритма).
Рефакторинг — это капитальные затраты, которые уменьшают эксплуатационные затраты. Эксплуатационные затраты в данном примере это возможность добавления новых вариантов алгоритма (поведений).
Баланс между капитальными и эксплуатационными затратами это экономический и даже может политический вопрос. И с этой точки зрения рефакторинг не является абсолютным благом и абсолютной выгодой. Он может выгоден или не выгоден в зависимость от ситуации на проекте.
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Re[18]: Повторное использовае кода == зло
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.06.13 08:16
Оценка:
Здравствуйте, igor-booch, Вы писали:

IB>Вопрос еще в том сколько будет этих изменений кода предполагается в будущем.


Это практически всегда предсказать невозможно.
... << RSDN@Home 1.2.0 alpha 5 rev. 99 on Windows 8 6.2.9200.0>>
AVK Blog
Re[19]: Повторное использовае кода == зло
От: igor-booch Россия  
Дата: 11.06.13 08:43
Оценка:
IB>>Вопрос еще в том сколько будет этих изменений кода предполагается в будущем.
AVK>Это практически всегда предсказать невозможно.

В начале проекта согласен очень трудно предсказывать.
С приближением к концу проекта,
когда реализована большая часть требований заказчика,
предсказывать становится легче.
Но если в начале проекта закладываться на все возможные изменения требований и новые требования, можно не успеть выполнить сами требования.
Вот такой парадокс. Руководство проектом это искусство.
Отвечайте на это сообщение, только если у Вас хорошее настроение и в Вашем ответе планируются только конструктивные вопросы и замечания
http://rsdn.ru/Info/rules.xml
Re[18]: Повторное использовае кода == зло
От: Aikin Беларусь kavaleu.ru
Дата: 11.06.13 09:00
Оценка:
Здравствуйте, igor-booch, Вы писали:

AVK>>Рефакторинг удешевляет внесение изменений в функционал. Окупится ли сумма рефакторинг+изменение, тут да, возможны варианты, а вот изменение кода после рефакторинга обязано быть гарантированно дешевле, чем без него.

IB>Вопрос еще в том сколько будет этих изменений кода предполагается в будущем. Если мало, то рефакторинг может не окупиться, если много, то конечно окупиться.
Рефакторинг готовит код к уже известным изменениям. Т.е. вот они новые требования, и чтобы их реализовать нужно подготовить систему, т.е. провести рефакторинг.
Будущие изменения требований учитывает процесс проектирования и дизайна. Если вы собираетесь менять (рефакторить) систему под будущие неизвестные требования, то я не знаю чем у вас там менеджер и тимлид занят.

IB> Предположим сначала в программе был реализован только один вариант какого-либо алгоритма (поведения). Далее появилось требование, по которому требуется еще один вариант алгоритма (поведения). Тут можно сделать рефакторинг — использовать паттерн "Стратегия". Тогда если появятся еще 10 вариантов алгоритма их их добавление будет достигаться меньшими трудозатратами, чем если бы мы не применили паттерн "Стратегия". А если по здравому смыслу предполагается только 2 варианта алгоритма (поведения) и никак не больше? Тогда может быть дешевле не тратить силы на паттерн Стратегия, а поставить "заплатку" (if какой-нибудь в одной релизации алгоритма).

If-рещение, это как раз прагматичное рещение, за которое я агитировал здесь
Автор: Aikin
Дата: 15.05.13
. Когда окажется что if-решения недостаточно, тогда и нужно будет рефакторить в Cтратегию. Но не раньше.

СУВ, Aikin
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.