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
