Comments 5
Я вижу в статье про рефакторинг следующие вещи, которые вызывают некоторое непонимание:
1) Магические константы
result += (data.days - 2) * 1.5;
result = data.days * 3;
result = 1.5;
result += (data.days - 3) * 1.5;
2) Самопальный шаблонизатор c захардкоденными строками
function htmlStatement(customer, movies) {
const data = createStatementData(customer, movies);
let result = `<h1>Rental Record for <em>${data.name}</em></h1>\n`;
result += "<table>\n";
for (let r of data.rentals) {
result += ` <tr><td>${r.title}</td><td>${r.amount}</td></tr>\n`;
}
result += "</table>\n";
result += `<p>Amount owed is <em>${data.totalAmount}</em></p>\n`;
result += `<p>You earned <em>${data.totalFrequentRenterPoints}</em> frequent renter points</p>\n`;
return result;
}
3) switch-case с захардкоденными строками
switch (movie.code) {
case "regular": /*...*/ break;
case "new": /*...*/ break;
case "childrens": /*...*/ break;
}
Можно было бы какое-нибудь подобие enum
-а завести с этими значениями.
+1
Рефакторинг невозможно закончить, его можно только остановить. Я думаю автор хотел показать рефакторинг про структуру кода, а не мелкие улучшения и сконцентрировался именно на этом, опустив все остальное.
+5
Да, согласен.
Просто в статьи про рефакторинг часто тычат пальцем и говорят, что мол надо делать также. А в этом коде есть к чему придраться.
0
В любом коде есть, к чему придраться. Код вообще очень сильно зависит от обстоятельств. А обстоятельства в данном случае состоят в том, что Фаулер не любит, когда выступления, статьи и книги начинают с больших объемов теории, а не с примера. Поэтому сам он книгу именно с примера и начал, и задача оного примера — быть примитивным и продемонстрировать всего несколько приемов рефакторинга, дабы донести до читателя основную идею. Замена магических чисел на константы и прочие мелочи — все это потом присутствует в справочной части, но в первоначальном примере было бы неуместно. Точно так же и здесь Мартин сразу и честно говорит, что собирается показать всего лишь несколько конкретных видов рефакторинга, а не их все. Примитивный пример 18-летней давности вполне для этого подходит.
+1
Magic numbers, бы убрать в const и шаблонизатор-функцию переделать на «шаблонные строки», если уж используются классы.
0
Sign up to leave a comment.
Рефакторинг салона видеопроката на JavaScript