[Moscow.pm] refactoring

Ilya Chesnokov chesnokov.ilya на gmail.com
Чт Окт 15 14:03:17 PDT 2015


15 октября 2015 г., 21:22 пользователь Vladimir Timofeev
<vovkasm на gmail.com> написал:
> Простите, что за автора отвечаю.
>
>> <pef-secure на yandex.ru> написал:
>>> On Thursday, October 15, 2015 18:18:04 Nikolay Mishin wrote:
>>>> Это да, сам код может и не соответствовать этим правилам
>>>
>>> А вообще, какая цель рефакторинга _этого_ модуля? Он, как я понимаю, не
>>> основная функция приложения, поэтому написан в рамках тех структур данных,
>>> которыми располагает.
>>
>
> В первом письме автор ясно обозначил цель: "Существует ли какой-либо
> сбособ сделать более читаемым такой код?"
> С моей точки зрения читаемость кода, это очень важное свойство в
> подавляющем большинстве проектов.
> И улучшение читаемости - хорошая цель.
>
>> Это да, там в-основном рендеринг данных в Excel. А рендеринг - это по
>> определению куча костылей - большинство из них стоит упрощать только в
>> том случае, если они встречаются не единожды.
>>
>
> 1. Код рендеринга ничем принципиально не отличается от остального
> кода, он так же подвержен изменениям. Более того, скорее та куча
> костылей в коде рендеринга, экспортеров и т.п. которая для вас
> присутствует "по определению", это следствие того, что именно этот код
> меняется наиболее часто. И с моей точки зрения, именно его и нужно
> писать максимально простым и понятным.

Чтобы его сделать простым и понятным, он должен делать одну простую (и
понятную) вещь: преобразовывать перловую структуру данных в
эксель-табличку. Этакий аналог View в MVC. Больше никакого кода там не
нужно. А в приведенном примере кода слишком много, и именно поэтому он
представляет собой месиво, а не потому, что часто меняется.

> 2. Если вы посмотрите на проект автора, то увидите, что там уже два
> практически идентичных модуля с огромным дублированием кода. Уже
> сейчас при небольшом изменении структуры модели, придется вносить
> одинаковые изменения в оба. Тут две проблемы. Одна из них дублирование
> кода, просто придется больше писать, больше тестировать, больше
> читать. Вторая - читаемость, читаемость меньше, больше времени
> потребуется чтоб разобраться в текущем функционале, а потом ещё раз
> разобраться (см. первую проблему).

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

>
>
> --
> Vladimir Timofeev <vovkasm на gmail.com>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



-- 
Best regards,
Ilya Chesnokov


Подробная информация о списке рассылки Moscow-pm