Мой космос
Решил поделиться своим творчеством.
Решил поделиться своим творчеством.
Сегодня меня узнали... Такая вроде мелочь , а так приятно...С недавних пор только поняла , что все мое внутреннее состояние складывается из мелочей.
На Урале наступает весна... Могу выйти из дома закрыть глаза и стоять, ощущая теплые лучи солнышка :) Я счастлива
А еще я бусики начала делать, чтобы головой отдыхать
Художник Джон Собакевич и его помощник Роб Пылесосыч.
Уровни абстракции — одна из самых важных и одновременно самых сложных концепций, понимание которой ведёт к написанию качественного кода.
Методы и функции — один из самых простых примеров, на основе которых можно рассмотреть концепцию уровней абстракции.
ℹ️ Когда мы описываем функцию, то все методы, которые мы вызываем внутри должны находиться на один уровень абстракции ниже. В конце концов, функции пишутся прежде всего для разложения более крупной концепции (иначе говоря, имени функции) на последовательность действий на следующем уровне абстракции.
Как понять, что метод написан на разных уровнях абстракции❓
- Когда мы смешиваем уровни абстракции, то функция обрастает большим количеством второстепенных подробностей — деталями с более низкого уровня абстракции
- Если читать код функции, вы найдёте одновременно действия, которые будут отвечать на вопросы “что?” и “как?”:
- “что?” — более высокий уровень абстракции, тут функция описывает, что мы делаем.
- “как?” — тут будет описано, “как” мы что-то делаем, а чтобы понять что именно, нужно будет напрячь извилины и подумать. И если мы заменим это “как” на функцию, имя которой будет отвечать на вопрос “что”, то всё станет на свои места и будет на одном уровне абстракции.
⚠️ Не окрепшим умам главное понять, что метод написанный на “одном уровне абстракции” это то, к чему нужно стремиться, но главное не переусердствовать, ведь не всегда так просто провести грань между уровнями абстракции.
Но методами это все конечно не ограничивается. Классы тоже могут быть на разных уровнях абстракции, они могут раскладываться по разным библиотекам, и тогда эти библиотеки взаимодействуют между собой только посредством публичного API. Но подробнее об этом как-нибудь в другой раз.
Пример на прикреплённой картинке взял отсюда, возможно не самый лучший, но суть должно быть понятна.
Пример от Дядюшки Боба найдёте в комментариях, из него должно стать понятней, что имелось ввиду при описании “что?” и “как?”
https://t.me/cherkashindev/170