Приветствую.
Чистый код создание, анализ и рефакторинг [2019] Роберт Мартин
64 страница
Так как же? Сколько операций выполняет функция — одну или три? Обратите
внимание: три этапа работы функции находятся на одном уровне абстракции
под объявленным именем функции
Если функция выполняет только те действия, которые находятся на одном уров-
не под объявленным именем функции, то эта функция выполняет одну операцию
В конце концов, функции пишутся прежде всего для разложения более крупной
концепции (иначе говоря, имени функции) на последовательность действий на
следующем уровне абстракции
Вопрос:
как понимать уровень абстракции, что это вообще такое?
Valick
13.06.2022 - 12:56
Понимай это как матрёшку. Ты матрёшку можешь поставить или положить и тебя не волнует то, что внутри неё. Ты абстрагируешся от этого. Вместе в с этим матрёшки находящиеся внутри тоже станут или лягут как и внешняя матрёшька. А теперь достань всё матрёшки и поставь их рядом (на один уровень абстракции). Что бы их поставить или положить тебе надо сделать это с каждой из них.
А вообще не надо начинать изучение РНР с "чистого кода". Там тонны словоблудия, надо умень извлекать полезное.
_____________
Стимулятор ~yoomoney - 41001303250491
А вообще не надо начинать изучение РНР с "чистого кода". Там тонны словоблудия, надо умень извлекать полезное.
я не начинаю, это доп материал.
Можно пример реализации разложения проги на уровни, допустим есть задача написать парсер сайта, какие уровни будут?
Valick
13.06.2022 - 14:40
Ну бльших два, сам парсер и сохранение результата. Они ничего не должны знать друг о друге, кроме как обмен чистыми данными.
_____________
Стимулятор ~yoomoney - 41001303250491
т.е. уровни абстракции это сущности реализации?
или же эти сущности находятся на одном уровне абстракции?
Valick
13.06.2022 - 14:55
Цитата (rapik @ 13.06.2022 - 13:44) |
т.е. уровни абстракции это сущности реализации? |
Так и есть.
Цитата (rapik @ 13.06.2022 - 13:45) |
или же эти сущности находятся на одном уровне абстракции? |
Да эти сущности на одном уровне
Сам парсер можно разложить на получение информации (граббер) и обработку информации.
Обработчику не важно как информация получена, грабберу не важно как эту информацю будут обрабатывать дальше.
Граббер и обработчик будут находиться на одном уровне абстракции, но они оба будут являться подуровнем парсера.
Но можно пойти и другим путём.
Выстроить граббер, обработчик и сохранение на один уровень абстракции. Тут уж сам разработчик решает как поступить.
_____________
Стимулятор ~yoomoney - 41001303250491
угу, т.е. если автор чистого кода разделял функцию, он получается делил ее логически по типу задачи. Идейная реализация была на уроне абстракций техническая на уровне функций?
Как уровни абстракций соотносятся с принципом ООП абстракция?
Valick
13.06.2022 - 15:54
Цитата (rapik @ 13.06.2022 - 14:27) |
Как уровни абстракций соотносятся с принципом ООП абстракция? |
Уровни абстракции кода - это инкапсуляция в ООП. Про абскракцию ООП я правлильно понимаю, что речь об абстрактных классах? Если да, то никак. Это разные сущности, просто в обоих случаях используется слово абстракция.
_____________
Стимулятор ~yoomoney - 41001303250491
Уровни абстракции кода - это инкапсуляция в ООП.
мммм не похоже, я так понимаю абстракция в ООП это выделение конкретной сущности без ее итоговой реализации, а уровни абстракции это фактически встроенный в эту идею механизм проектирования программы на уровне идей, м?
brevis
13.06.2022 - 22:10
function getAllLinksOnPage($url) {
$pageContent = getUrlContent($url);
$links = extractLinksFromHtml($pageContent);
return $links;
}
function getAllLinksOnPage($url) {
$ctx = stream_context_create([
'http' => [
'timeout' => 5,
]
]);
$pageContent = file_get_contents($url, false, $ctx);
if (preg_match("...", $pageContent)) {
return $links;
}
return [];
}
function getAllLinksOnPage($url) {
$pageContent = getUrlContent($url);
if (preg_match("...", $pageContent)) {
return $links;
}
return [];
}
_____________
Чатик в телеге
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.