Форум: "Потрепаться";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизОпрос - рефакторинг Найти похожие ветки
← →
Danilka © (2005-02-04 07:52) [40][22] Юрий Зотов © (03.02.05 18:52)
> А давайте рассмотрим три программы, построенные по таким
> схемам:
> 1. код - данные
> 2. код - описание_данных - данные
> 3. код - описание_алгоритма - описание_данных - данные
Ну, вообще-то во всех трех схемах придется затрачивать время на доработку. :)
Хотя, конечно, доработка серверной части, намного легче и проще для установки клиентам, чем каждый раз в паскале ковыряться и рассылать бпл-ки.
Правда, все это как-бы и не рефакторинг, а развитие..
← →
КаПиБаРа © (2005-02-04 08:32) [41]iZEN © (03.02.05 23:01) [35]
что Вы лично понимаете под "рефакторингом"?
Ну эта как бы объяснить... :)
Нужно хранить список выбраных записей.
Был у меня массив. Заменил я его на TList. Сейчас думаю заменить его на TMyList основанный на динамическом массиве или связном списке.
Вот.
← →
Юрий Зотов © (2005-02-04 08:56) [42]> КаПиБаРа © (04.02.05 08:32) [41]
> Сейчас думаю заменить его на TMyList основанный на
> динамическом массиве или связном списке.
А завтра возникнет необходимость использовать этот класс в многопоточном приложении. И либо нарвемся на чудеса, либо придется его переделывать, либо его СРАЗУ надо писать с учетом многопоточности.
Я бы предпочел третий вариант. И подумал о наследовании от TThreadList. А в результате получил бы что-то близкое к 100/0.
← →
jack128 © (2005-02-04 09:04) [43]iZEN © (03.02.05 23:01) [35]
А что Вы лично понимаете под "рефакторингом"?
Рефакторинг представляет собой такого измнения программной системы, при которорм не меняется внешнее поведение кода, но улудшается его внутренняя структура. (с) М. Фаулер
В связи с таким определением вопрос к Юре Зотову
Юрий Зотов © (03.02.05 18:06) [18]
Тут как-то ветка была про парсинг. Угу, помним
Потребовалось лишь внести описание этих новых данных в заранее предусмотренные таблицы и заранее предусмотренным способом. В самом же обрабатывающем коде не изменилось ни одного символа - вот это и есть пример того, что рефакторинг был предусмотрен изначально.
Смотрю на определение Фаулера. Смотрю на тот код. Чесно говоря, не вижу где там предусмотрено зарание возможность улудшения структуры кода. Зато отлично виден потенциал для расширения функционала. Я немного слепой, или просто мы по разному понимает термин рефакторинг??
КаПиБаРа © (04.02.05 8:32) [41]
Сейчас думаю заменить его на TMyList основанный на динамическом массиве или связном списке.
Это не рефакторинг, имхо.
← →
Юрий Зотов © (2005-02-04 09:13) [44]> jack128 © (04.02.05 09:04) [43]
> Я немного слепой, или просто мы по разному понимает термин
> рефакторинг?
Второе. Я предпочитаю трактовать его более общно и менее формально, чем Фаулер. Хотя с точки зрения теории и методологии это, видимо, и не совсем верно, но Фаулер писал книгу, а я пишу программы. Отсюда и разница.
← →
КаПиБаРа © (2005-02-04 09:31) [45]Юрий Зотов © (04.02.05 8:56) [42]
Пока не дорос до такого подхода, когда видно в деталях развитие программы на много шагов вперед. Я пока в рассмотрении пользуюсь абстрактными понятиями объект, связи, свойства и т.д. Могу представить взаимодействие основных объектов и как оно может развиваться, чем быть ограничено, но предвидеть судьбу второстепенного списка созданного для хранения выделенных элементов в одном из списков как то сразу не могу. Реализовал его в виде массива. Потом с окаказоль что хорошо бы сохранять список выделенных элементов в файл. Вот уже и класс можно сделать, хотя и массив можно оставить. Но тогда код обслуживающий сам массив будет по всему модулю размазан, что не есть хорошо.
jack128 © (04.02.05 9:04) [43]
Это не рефакторинг, имхо.
Массив или список являются внутреней структурой кода, рефакторинг которого я делаю. TMyList не является необходимой частью программы он нужен лишь для улучшения структуры "необходимого" кода, т.е. того кода который реализует требуемый функционал.
← →
iZEN © (2005-02-04 10:07) [46]/**К jack128 © (04.02.05 09:04) [43]
>КаПиБаРа © (04.02.05 8:32) [41]
>Сейчас думаю заменить его на TMyList основанный на динамическом массиве или связном списке.
Это не рефакторинг, имхо.
*/
Это-то как раз рефакторинг.
Другой пример: меняем ArrayList на LinkedList - в десятки раз увеличивается быстродейсвтие на операциях вставки/удаления, но, правда во столько же раз уменьшается скорость доступа к элементам, а вот интерфейс доступа - тот же.
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.049 c