В чем различие между высоким, средним и низким уровнями абстракций?
Подскажите, пожалуйста, в чем различие между высоким, средним и низким уровнями абстракций. Вопрос возник из за Листинг 3.1.(Ctrl+F --- 3.1) Почему в данном случае getHtml() - очень высокий уровень? String pagePathName = PathParser.render(pagePath) - средний уровень, а .append("\n") - чрезвычайно низкий уровень?
Ответы (1 шт):
Приведу пример. Допустим у вас есть инструкция запуска ракеты в космос (или если хотите алгоритм запуска). Представьте себе такое описание:
1. нажмите 3-ю кнопку в 4-ом ряду на панели А
2. переключите тумблер 8 в позицию ВКЛ
3. переведите рычаг СКР на деление 4
...
100. нажмите зеленую кнопку во 2-ом ряду
И второе описание:
1. включите систему пожаротушения
2. включите систему рассчета курса
...
20. запустите главный двигатель
Так вот первое описание оно очень детальное, еще говорят низкоуровневое, или еще по другому - на низком уровне абстракции. Тут каждый шаг предельно конкретен и понятен, в том смысле, что ясно как его исполнить, но не всегда понятно к чему он приведет и зачем нужен.
Второе же описание более высокоуровневое, т.е. на высоком уровне абстракции. Отдельные шаги дают понимание "что" нужно делать и зачем шаг предназначен, но не обязательно понятно "как" это делать, может потребоваться дополнительное пояснение.
Обратите внимание, что шаг 100 в первом описании и шаг 20 во втором по сути означают то же самое. Только шаг 100 описывает действие на низком уровне абстрации, а шаг 20 - на высоком. Это демонстарция того, что количество операций не является решающим фактором для того является ли что-то высоко- или низкоабстрактным.
Так же важно понимать, что уровень абстракции это понятие относительное. Одно и то же описание шага в каком-то контексте будет на высоком уровне абстракции, а в другом - на низком. Можно только сравнить два описания и сказать, что один более абстрактный, а другой менее.
В том тексте речь идет о том, что плохо когда уровни абстракции смешиваются. Это как если бы инструкция была такая:
- нажмите 3-ю кнопку в 4-ом ряду на панели А
- включите систему рассчета курса
- дерните за рычаг СКР и т.д.