Есть тестовое задание.
Необходимо сделать рефакторинг кода:
function Journal(date) {
this.date = date;
this.formatDate = function(date) {
return date.getDate() + '.' + (date.getMonth() + 1) + '.' + date.getFullYear();
};
this.getTitle = function() {
return "Выпуск от " + this.formatDate(this.date);
};
}
Journal.compare = function(journalA, journalB) {
return journalA.date - journalB.date;
};
// использование:
var journals = [
new Journal(new Date(2012, 1, 1)),
new Journal(new Date(2012, 0, 1)),
new Journal(new Date(2011, 11, 1))
];
function findMin(journals) {
var min = 0;
for (var i = 0; i < journals.length; i++) {
if (Journal.compare(journals[min], journals[i]) > 0) min = i;
}
return journals[min];
}
alert( findMin(journals).getTitle() );
Если я правильно понимаю рефакторинг-это оптимизация, поэтому я по максимуму перевел все на es6 и применил метод сортровки для массива, код сократился в два раза:
function Journal(date) {
this.date = date;
this.formatDate = date => `${date.getDate()}.${date.getMonth() + 1}.${date.getFullYear()}`;
this.getTitle = () => `Выпуск от ${this.formatDate(this.date)}`;
}
const journals = [
new Journal(new Date(2012, 1, 1)),
new Journal(new Date(2012, 0, 1)),
new Journal(new Date(2011, 11, 1)),
];
journals.sort((a, b) => a.date - b.date);
alert(journals[0].getTitle());