Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дублированный код 
:(
    Опции темы
Hohhi
Дата 31.1.2011, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



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

Это сообщение отредактировал(а) Hohhi - 31.1.2011, 21:21
PM MAIL ICQ   Вверх
skyboy
Дата 31.1.2011, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Цитата(Hohhi @  31.1.2011,  20:19 Найти цитируемый пост)
какой алгоритм на Ваш взгляд является самым эффективным в данном случае?

алгоритм чего? разделения кода на семантические единицы? тут все должно начинаться с анализа, очень рекомендуется именно объектно-ориентированный. Затем идет проектирование(тоже объектно-ориентированное). в итоге, к моменту написанию кода(объектно-ориентированному программированию) ты уже знаешь, какие модули(классы и иерархии классов) тебе нужны. все что остается, при помощи собственных велосипедов или общепринятых методик — т.н. шаблонов(patterns) программирования оптимизировать эти самые модули(к примеру, используя паттерн Прокси для откладывания ресурсоемких операций или Стратегия, для вынесения схожей алгоритмической части из несвязанных классов)

Добавлено через 18 секунд
впрочем, пожалуй, использование паттернов уместнее на этапе проектирования.
PM MAIL   Вверх
Hohhi
Дата 31.1.2011, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



skyboy, имелось в виду несколько другой вопрос, а именно на вики перечислены некоторые алгоритмы:
Цитата

A number of different algorithms have been proposed to detect duplicate code. For example:
Baker's algorithm.[2]
Rabin–Karp string search algorithm.
Using Abstract Syntax Trees.[3]
Visual clone detection.[4]


Хотелось бы узнать мнение о них, а также выслушать предложения о чем-то более приемлимом

Добавлено через 7 минут и 58 секунд
Цитата

алгоритм чего? 


Алгоритм поиска дублированного кода
PM MAIL ICQ   Вверх
_Y_
Дата 31.1.2011, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Hohhi @  31.1.2011,  21:19 Найти цитируемый пост)
 ООП класс, разделенный на единицы: методы, параметры, тела методов, свойства 

А чем отличаются параметры от свойств? И что сравнивать в методах, если тела методов это единицы отдельные от самих методов?

Это сообщение отредактировал(а) _Y_ - 31.1.2011, 23:36


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Hohhi
Дата 1.2.2011, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



Цитата

А чем отличаются параметры от свойств? 


Параметры метода, свойства класса
PM MAIL ICQ   Вверх
skyboy
Дата 1.2.2011, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



ты изучаешь вопрос с теоретической точки зрения? или с практической? пишешь собственный анализатор?
PM MAIL   Вверх
Hohhi
Дата 1.2.2011, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



skyboy, я хочу написать анализатор над .NET кодом. Пока что я создаю гибкую систему динамического подключения сборок с так называемыми "плохими запахами" кода. Этот запах представляется мне трудно локализовать
PM MAIL ICQ   Вверх
_Y_
Дата 1.2.2011, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Hohhi @ 1.2.2011,  00:09)
Цитата
чем отличаются параметры от свойств?
Параметры метода, свойства класса

При этом задача стоит:
Цитата(Hohhi @  31.1.2011,  21:19 Найти цитируемый пост)
интересует полнота находимой дублированности


Зачем сравнивать списки параметров?
  • Если одинаковые параметры принадлежат методам с разными именами, никакой дублированности не наблюдается. Ситуация вполне законная т.к. методы должны различаться кодом.
  • Если одинаковые параметры принадлежат методам с одинаковыми именами, пронадлежащим разным классам - тоже никакой дублированности по той же причине.
  • Если одинаковые параметры принадлежат методам с одинаковыми именами, пронадлежащим одному классу, ошибка выдается еще на стадии разработки.
Непонятно зачем сравнивать списки параметров. 

Впрочем, есть один случай. Это если параметр имеет то же имя, что и свойство. Тогда параметр делет это имя локальным для данного метода. Многие языки это позволяют.

Из чисто детского любопытства - зачем еще это может быть надо?


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Hohhi
Дата 1.2.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



_Y_, Функционал перечисленный можно выдернуть "AS IS" из DTE Visual Studio. Меня при создании темы интересовали именно алгоритмы поиска дублированного кода: все равно в чем: псевдокод, другие структуры данных, интересует, как это оптимальнее организовать
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0470 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.