Рефакторинг
От: rm822 Россия  
Дата: 05.12.06 15:36
Оценка:
Есть проект которому несколько лет (С++), как обычно требования и понимание предметной области менялись
Постепенно проект заполнился порядочным количеством дубликатов кода, вот мне нужен тул чтобы их найти, и отрефакторить(VAssist).
Кто что посоветует?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Рефакторинг
От: Аноним  
Дата: 05.12.06 18:53
Оценка:
Здравствуйте, rm822, Вы писали:

R>...и отрефакторить.

R>Кто что посоветует?

Ref++
Re[2]: Рефакторинг
От: rm822 Россия  
Дата: 05.12.06 19:05
Оценка:
Читай внимательно! Мне нужно найти дублирующийся код, а рефакторить я буду ассистом.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Рефакторинг
От: squiz  
Дата: 07.12.06 13:44
Оценка: 6 (2)
Здравствуйте, rm822,

Simian: Similarity Analyser, окромя него вроде больше ничего нет.
Never underestimate those behind you...
Re: Рефакторинг
От: romashka Удмуртия  
Дата: 08.12.06 07:44
Оценка: 13 (3)
R>Постепенно проект заполнился порядочным количеством дубликатов кода,

CloneFinder — quickly finds duplicated code within C, C++, Java and C# programs
Duplo (C/C++/Java Duplicate Source Code Block Finder)
Re: Рефакторинг
От: rea Россия www.viva64.com
Дата: 11.12.06 07:38
Оценка:
Здравствуйте, rm822, Вы писали:

R>Есть проект которому несколько лет (С++), как обычно требования и понимание предметной области менялись

R>Постепенно проект заполнился порядочным количеством дубликатов кода, вот мне нужен тул чтобы их найти, и отрефакторить(VAssist).
R>Кто что посоветует?

Вообще странное желание. Как может помочь поиск дубликатов кода? Ведь если Вы анализируете существующий проект, то исправлять в нем большое количество копий бессмысленно, так как можно что-то сломать по недосмотру. Представьте, есть большая РАБОТАЮЩАЯ система и Вы хотите в каждом втором файле удалять дубликаты? Этого никто не допустит. Кроме того, "плохой" проект только лишь удалением дублей не спасти. Это ведь не вылечит архитектуру и т.д.

А если Вы хотите использовать поиск дубликатов при разработке, так просто не надо программировать в Copy-Paste стиле.

Я вижу вариант использования такой утилиты лишь для проверки качества кода. Когда начинающий программист хочет внести в систему 100K кода, то более опытный коллега может с помощью поиска дублей понять, что это раскопированный код и заставить переделать его.
Евгений Рыжков
ООО "СиПроВер"
Re[2]: Рефакторинг
От: rm822 Россия  
Дата: 11.12.06 12:35
Оценка:
Здравствуйте, rea, Вы писали:

Во первых ваш вопрос — offtopic.
Во вторых вы явно не имеете данных о том насколько часто дублируется ни в проектах вообще ни в моем в частности. Ваши рассуждения построены на сомнительных предположениях которые не имеют к моей реальности никакого отношения.

Реальность же такова.
Задача — внести изменения и расширить функциональность.
Изменения затронут X:Foo
Поиск дубликатов дал 5 похожих на X::Foo кусков написанных разными 3 людьми в разное время и для различных целей.
Рефакторинг сократил объем существующего кода на 15кб, улучшил его структуру.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Рефакторинг
От: rea Россия www.viva64.com
Дата: 11.12.06 13:03
Оценка: -1
Здравствуйте, rm822, Вы писали:

R>Здравствуйте, rea, Вы писали:


R>Во вторых вы явно не имеете данных о том насколько часто дублируется ни в проектах вообще ни в моем в частности.


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

R>Реальность же такова.

R>Задача — внести изменения и расширить функциональность.
R>Изменения затронут X:Foo
R>Поиск дубликатов дал 5 похожих на X::Foo кусков написанных разными 3 людьми в разное время и для различных целей.
R>Рефакторинг сократил объем существующего кода на 15кб, улучшил его структуру.

Давайте рассмотрим эту ситуацию в историческом интервале.

Если три разных человека написали разный код, который делает одно и тоже, то ни один анализатор такое не выявит. Однако если же два человека скопировали код у третьего, то выявить это можно при попытке добавить код этими двумя людьми в общее дерево кода. Здесь поиск дубликатов может "завернуть" их с тем, чтобы они переделали код.

Если же, как Вы говорите, цель просто уменьшить код на 15 кб, то для среднего проекта (объем исходников десятки мегабайт) делать такие изменения бессмысленно. Ведь ошибки такие изменения внести могут, а польза от этих изменений в масштабе проекта сомнительна.
Евгений Рыжков
ООО "СиПроВер"
Re[4]: Рефакторинг
От: rm822 Россия  
Дата: 11.12.06 13:15
Оценка: 1 (1)
Здравствуйте, rea, Вы писали:

Не надо пытаться ТЕОРЕТИЧЕСКИ доказывать что пользы нет.
Она есть и это проверено ПРАКТИКОЙ, вместо внесения изменений в 18 кб кода измения внесены в 3 кб а 15кб удалено. Сейчас вы начнете мне доказывать что внести в 18кб кода 5 однотипных copy-paste лучше чем отладить 3 кб? Не говоря уж о том что еще неизвестно были бы найдены все эти 5 точекс 1го раза.

PS:Кстати сказать один из этих анализаторов достаточно умен чтобы находить одинаковые куски которые отличаются только именем переменных и\или именем классов.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Рефакторинг
От: Yellow Raven Украина  
Дата: 12.12.06 14:20
Оценка:
Здравствуйте, rm822, Вы писали:

R>PS:Кстати сказать один из этих анализаторов достаточно умен чтобы находить одинаковые куски которые отличаются только именем переменных и\или именем классов.


Какой же, если не секрет?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.