Читаю книгу 'Чистый код' Роберта Мартина и там в третьей главе о функциях используют понятие уровни абстракции. И я не могу нормально понять что это за уровни или как тут помогут TO-абзацы?
Я это понимаю так, что есть какое-то общее название функции, которое олицетворяет бизнес-логику, — это один уровень абстракции, а те операции, которые уже непосредственно выполняют действия, которые позволяют выполнить бизнес-логику (допустим запрос в БД или модификация строки), — это другой уровень.
Но потом в книге приводят пример
public Money calculatePay(Employee e)
throws InvalidEmployeeType {
switch (e.type) {
case COMMISSIONED:
return calculateCommissionedPay(e);
case HOURLY:
return calculateHourlyPay(e);
case SALARIED:
return calculateSalariedPay(e);
default:
throw new InvalidEmployeeType(e.type);
}
}
Далее в книге пишут, что эта функция
совершенно очевидно выполняет более одной операции
. А мне это вообще не очевидно, ведь тут подразумевается, что в методе несколько уровней абстракции, но почему?
Я из-за этой главы не могу дальше книгу прочитать, поэтому прошу, объясните, пожалуйста, по простому, что это за уровни абстракции, как их выделять?