Size: a a a

2021 October 19

IS

Ivan Savchenko in symfony
И пошли холивары....
источник

QQ

Qwert Qwertinsky in symfony
когда на уровне языка происходит объединённые в одну смысловую единицу (класс) - данных (свойств) и действий (методов) - что скрывается ? ))
источник

МФ

Максим Федоров... in symfony
абстракция как минимум, точнее ее имплеменатция
состояние — ну смотря как сделать
источник

МФ

Максим Федоров... in symfony
если это ДТО, то ясен-красен, что структура есть структура данных, хоть геттерами/сеттерами обложи, вроде инкапсуирвоали, а вроде все равно читаем и пишем

в таких случаях мы имеем семантическое нарушение инкапсуляции... она как бы есть, но ее нет :)Ыыыы
источник

QQ

Qwert Qwertinsky in symfony
class Circle
{
   public float $radius;
   public function area():float
   {
       return 2*3.14*$this->radius;
   }
}
что здесь скрывается ?
источник

МФ

Максим Федоров... in symfony
Логика подсчета
И скрываем вообще данные за названия
Работая уде с объектом
источник

QQ

Qwert Qwertinsky in symfony
а в чем разница с
function area(float $radius):float
{
   return 2*3.14*$radius;
}
здесь логика подсчета также скрыта в функции
источник

МФ

Максим Федоров... in symfony
Разница на уровне инкапсуляции? Никакой
источник

МФ

Максим Федоров... in symfony
А вот если вы выстроите интерфейс фигуры и с ним будете работать

То будет инкапсуляция в каждой из имплементаций
источник

QQ

Qwert Qwertinsky in symfony
А в чем отличие

class Circle
{
   public float $radius;
   public function area():float
   {
       return 2*3.14*$this->radius;
   }
}

от

function area(float $radius):float
{
   return 2*3.14*$radius;
}
источник

МФ

Максим Федоров... in symfony
В абстракции

В одном случае у нас она есть и мы с ней работаем как с кругом, скрывая (инкапсулируя) детали как минимум на некоторых кейсах (например в коллекцию фигур когда добавим, то нам радиус не виден, он спрятан (семантически) как деталь для др кейсов)

В другом случае скрыта только калькуляция подсчета
источник

SP

Sergey Protko in symfony
абстракции с неба не падают
источник

SP

Sergey Protko in symfony
хуевые абстракции хуже отсутствия оных
источник

МФ

Максим Федоров... in symfony
Это верно
источник

МФ

Максим Федоров... in symfony
Текут родные как ручьи
источник

QQ

Qwert Qwertinsky in symfony
Еще разочек:
Вариант 1.
class Circle
{
   public float $radius;
   public function __construct(float $radius)
   {
       $this->radius = $radius;
   }
   public function area():float
   {
       return 2*3.14*$this->radius;
   }
}
echo (new Circle(123))->area();

Вариант 2.
$r = 123;
function area(float $radius):float
{
   return 2*3.14*$radius;
}
echo area($r);

в чем принципиальное отличие варианта 1 от варианта 2? Что здесь скрывается и от кого скрывается?
источник

SP

Sergey Protko in symfony
источник

МФ

Максим Федоров... in symfony
При таком использовании и ТОЛЬКО таком мы действительно ничего не прячем, тк у нас Circle как неймспейс для процедуры выступает
источник

QQ

Qwert Qwertinsky in symfony
а есть при таком использование инкапсуляция ?
источник

МФ

Максим Федоров... in symfony
А если начинаем с Circke работать не только как подсчёт радиуса, а как с объектом, то выясняется

Что радиус спрятан от нас для некоторых кейсов
источник