Я на самом деле не понял истинного значения абстракции от «Чистого кода» даже после прочтения множества потоков и сайтов, поэтому я просто ухожу, как это выглядит.
Но если есть функция, которая Это выглядит как несколько абстракций, и разделение их на части было бы буквально помещением различных функций одной строкой, а первые две переменные, которые вызывают функцию, упоминаются как переменные, имеет ли смысл разделять ее?
Как и в этом примере, я думаю, что фильтрация, сортировка и зацикливание должны быть разными методами?
updatePayments(Payment payment) {
var filteredPayments = paymentList.Where(x => x.createdOn == payment.CreatedOn).ToList();
var sortedFilteredPayments = filteredPayments.OrderBy(x => x.name).ToList();
var count = 1;
foreach (Payment p in sortedFilteredPayments)
{
p.UpdatePaymentName(count + ": " + p.name + " previous payment: " + filteredPayments[count -1]);
}
}
Если я разделю функцию на то, что я считаю меньшим количеством абстракций, я думаю, что в конечном итоге это будет выглядеть так:
updatePayment(Payment payment) {
var filteredPayments = filterPaymentsByCreatedOn(payment);
var sortedFilteredPayments = sortPaymentsByName(filteredPayments );
updateNameOfPayments(filteredPayments, sortedFilteredPayments);
}
Так это лучше, чем оригинал? Он по-прежнему получает отфильтрованные платежи и сортированные платежи, но вместо кода теперь это просто имя функции, и на него все еще ссылаются.
Кроме того, теперь, когда я смотрю на это, можно ли разделить первые два на свою функцию? Я на самом деле не уверен, когда остановиться, как, конечно, это не идеально, весь мой код теперь все функции с одной строкой?