В чем различие между высоким, средним и низким уровнями абстракций?

Подскажите, пожалуйста, в чем различие между высоким, средним и низким уровнями абстракций. Вопрос возник из за Листинг 3.1.(Ctrl+F --- 3.1) Почему в данном случае getHtml() - очень высокий уровень? String pagePathName = PathParser.render(pagePath) - средний уровень, а .append("\n") - чрезвычайно низкий уровень?


Ответы (1 шт):

Автор решения: Roman-Stop RU aggression in UA

Приведу пример. Допустим у вас есть инструкция запуска ракеты в космос (или если хотите алгоритм запуска). Представьте себе такое описание:

1. нажмите 3-ю кнопку в 4-ом ряду на панели А
2. переключите тумблер 8 в позицию ВКЛ
3. переведите рычаг СКР на деление 4
...
100. нажмите зеленую кнопку во 2-ом ряду

И второе описание:

1. включите систему пожаротушения
2. включите систему рассчета курса
...
20. запустите главный двигатель 

Так вот первое описание оно очень детальное, еще говорят низкоуровневое, или еще по другому - на низком уровне абстракции. Тут каждый шаг предельно конкретен и понятен, в том смысле, что ясно как его исполнить, но не всегда понятно к чему он приведет и зачем нужен.

Второе же описание более высокоуровневое, т.е. на высоком уровне абстракции. Отдельные шаги дают понимание "что" нужно делать и зачем шаг предназначен, но не обязательно понятно "как" это делать, может потребоваться дополнительное пояснение.

Обратите внимание, что шаг 100 в первом описании и шаг 20 во втором по сути означают то же самое. Только шаг 100 описывает действие на низком уровне абстрации, а шаг 20 - на высоком. Это демонстарция того, что количество операций не является решающим фактором для того является ли что-то высоко- или низкоабстрактным.

Так же важно понимать, что уровень абстракции это понятие относительное. Одно и то же описание шага в каком-то контексте будет на высоком уровне абстракции, а в другом - на низком. Можно только сравнить два описания и сказать, что один более абстрактный, а другой менее.

В том тексте речь идет о том, что плохо когда уровни абстракции смешиваются. Это как если бы инструкция была такая:

  1. нажмите 3-ю кнопку в 4-ом ряду на панели А
  2. включите систему рассчета курса
  3. дерните за рычаг СКР и т.д.
→ Ссылка