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

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

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

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

>
>
> --
> Vladimir Timofeev <[email protected]>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org



-- 
Best regards,
Ilya Chesnokov
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить