@oop_ru

Страница 725 из 785
F01134H
27.08.2018
13:50:19
Adel
27.08.2018
13:50:25
User {FrameworkName}User как вариант

F01134H
27.08.2018
13:50:35
Animal <- Cat

Adel
27.08.2018
13:50:52
я правда не знаю что за юзер там будет. так что просто сказал

Google
Adel
27.08.2018
13:51:06
вообще... название интерфейса неправильное

ivan
27.08.2018
13:51:06
Adel
27.08.2018
13:51:17
у ларавеля оно правильнее называется. Authenticatable

F01134H
27.08.2018
13:51:22
гг

Артур Евгеньевич
27.08.2018
13:51:27
вообще если упарываться по инкапсуляции, то можно объявлять в Application слое интерфейсы которые реализовывать в Infrastructure и уже ТОЛЬКО там юзать всё что идет с либами или фреймворками

F01134H
27.08.2018
13:51:38
User AppUser ? норм ?
Вообще интерфейс с названием User неправильный

само название об этом говорит

и проблема с неймингом

F01134H
27.08.2018
13:52:21
Потому что интерфейс должен описывать методы, которые он представляет, а не конкретную сущность

F01134H
27.08.2018
13:53:26
Ну ну

Google
Артур Евгеньевич
27.08.2018
13:53:37
у меня есть интерфейс для вьюМоделек которые API возвращает

интерфейс называется PreView и содержит метод render()

как мне надо было назвать, Renderable ?

F01134H
27.08.2018
13:54:32
А почему бы и нет?)

В целом есть еще интерфейсы типа Animal < Cat, как я выше написал. Вот они уже не про набор методов, а про абстракцию над группой сущностей

ivan
27.08.2018
13:55:50
Потому что интерфейс должен описывать методы, которые он представляет, а не конкретную сущность
для меня интерфейс это тип. Я описываю тип пользователя. У пользователя есть uid - я и описал этот метод в этом типе. Это так же как тип Animal и там метод walk(direction): void

F01134H
27.08.2018
13:56:10
Итого имеем. Либо у тебя вариант: class User implements Authenticatable, Registrate, ... либо class Guest implements User

Dmitry
27.08.2018
13:56:12
ну ок. Будет User and UserImpl )
Будет Symfony\Security\User и App\Entity\User

Bohdan
27.08.2018
13:56:20
нелюблю суффиксы Interface и Exception
а в твоем наброске graphql был суффикс Exception :D

F01134H
27.08.2018
13:56:46
а в твоем наброске graphql был суффикс Exception :D
не люблю и не использую - разные вещи тащемта)

Bohdan
27.08.2018
13:57:01
аргументный аргумент

Артур Евгеньевич
27.08.2018
13:57:07
как мне надо было назвать, Renderable ?
потмоу что Renderable это слишком общее название, еоторая в слое отображения по разному может трактоваться

Adel
27.08.2018
13:57:40
Будет Symfony\Security\User и App\Entity\User
я опасаюсь плодить классы с одинаковыми названиями. пусть и в разных нэймспейсах.

легко случайно заюзать чтото не то и не заметить

Aleh
27.08.2018
13:58:35
да это и шторм, и phan, и psalm заметят

ну т.е. пропустить такое даже в пыхе почти невозможно

ДАЖЕ В ПЫХЕ АУ

Adel
27.08.2018
13:59:04
Артур Евгеньевич
27.08.2018
13:59:26
ну ок. Будет User and UserImpl )
У тебя суффикс должен отражать суть реализации интерфейса, UserImpl это максимально тупое название, т.е должно быть Интерфейс User Реализации CorpPortalUser, RegUser, AdminUser и т.д

Dmitry
27.08.2018
13:59:28
Google
Adel
27.08.2018
13:59:45
а если это интерфейс и реализация

кто заметит то?

Aleh
27.08.2018
14:00:21
что заметят?
что типы не сходятся

Adel
27.08.2018
14:00:35
а они сходятся :)

ivan
27.08.2018
14:01:06
У тебя суффикс должен отражать суть реализации интерфейса, UserImpl это максимально тупое название, т.е должно быть Интерфейс User Реализации CorpPortalUser, RegUser, AdminUser и т.д
камон. для чего к названию класса user добавлять название компании или название фреймворка. Какой профит от этого?

Aleh
27.08.2018
14:01:09
а если это интерфейс и реализация
нельзя вместо реализации передавать что-то чисто интерфейса

Adel
27.08.2018
14:01:29
почему нет то? блин

Adel
27.08.2018
14:01:35
в ларке есть 4 класса Repository

это и интерфейсы и реализации Cache и Config

F01134H
27.08.2018
14:01:57
это как назвать класс по названию звезды в системе альфа центавра

Aleh
27.08.2018
14:01:58
почему нет то? блин
потому что если кто-то ждет InMemoryImpl, ему нельзя передавать PostgresqlImpl ну

ivan
27.08.2018
14:02:09
Adel
27.08.2018
14:02:14
и постоянно приходится смотреть как бы не то не заюзать

Артур Евгеньевич
27.08.2018
14:02:21
Зарегестиррованный пользователь

F01134H
27.08.2018
14:02:24
что такое RegUser ?
Артур упрлс

Артур Евгеньевич
27.08.2018
14:02:26
Это просто пример

Но я имел ввиду если ты называешь реализацию без суффикса, то 99% интерфейс просто не нужен

ivan
27.08.2018
14:02:54
Зарегестиррованный пользователь
File : FileInterface как назвать клас файл ?

Google
Aleh
27.08.2018
14:03:30
File : FileInterface как назвать клас файл ?
а для чего абстракция File нужна?

F01134H
27.08.2018
14:03:41
File : FileInterface как назвать клас файл ?
я тебе выше привел два примера

Aleh
27.08.2018
14:03:42
может ли быть реализация файла, которая с s3 работает?

ivan
27.08.2018
14:03:50
Но я имел ввиду если ты называешь реализацию без суффикса, то 99% интерфейс просто не нужен
Использую правило: если есть публичный метод - должен быть интерфейс. Не всегда - но в библиотеках это правило должно быть 100%

Артур Евгеньевич
27.08.2018
14:04:12
File : FileInterface как назвать клас файл ?
Нужно знать что это за файл, и как он используется и в чем отличие, от других реализаций

Admin
ERROR: S client not available

Adel
27.08.2018
14:04:53
так же как и VO

Aleh
27.08.2018
14:04:56
да много чему интерфейсы не нужны

Артур Евгеньевич
27.08.2018
14:05:20
Интерфейсы вообще ничему не нужны, кроме тех мест где имеется разная реализация или теоретическая возможность таковой

Aleh
27.08.2018
14:05:21
непонятно какую проблему этим пытаетесь решить

F01134H
27.08.2018
14:05:22
В целом, интерфейс есть у каждого класса

нужно еще об этом помнить

Aleh
27.08.2018
14:05:39
да, класс это тип+реализация

Артур Евгеньевич
27.08.2018
14:05:58
я рассказывал же про чувака который хотел создать интерфейс Point и юзать его для канваса и для геоточек

ivan
27.08.2018
14:05:58
в данном примере согласен. Но в библиотеках думаю они должны быть всегда. Так как мы стараемся делать код гибким.

Артур Евгеньевич
27.08.2018
14:06:00
типо унификация

Google
ivan
27.08.2018
14:06:43
LocalFile, S3File : File
согласен. понял.

Артур Евгеньевич
27.08.2018
14:06:52
да многие не понимают что когда ты объявляешь public что то в класе ты уже объявляешь "интерфейс" в его первоначальном значении(а не в значении языковой структуры джавы и пыхи)

Aleh
27.08.2018
14:07:02
LocalFile, S3File : File
типа такого, как только начинаешь думать про реализации, то сразу понимаешь в чем разница между реализациями :)

ivan
27.08.2018
14:07:49
непонятно какую проблему этим пытаетесь решить
если кто-то захочет подменить реализацию - не будет проблем. просто берут и подменяют. А так надо будет бегать по коду и рефакториты параметры и return type

Aleh
27.08.2018
14:08:45
если кто-то захочет подменить реализацию - не будет проблем. просто берут и подменяют. А так надо будет бегать по коду и рефакториты параметры и return type
какие-то несбыточные мечты о том, что если есть интерфейс, то его сразу прям стало удобнее подменять, чем было бы с классом

Артур Евгеньевич
27.08.2018
14:09:12
в данном примере согласен. Но в библиотеках думаю они должны быть всегда. Так как мы стараемся делать код гибким.
вот в 8 пыхе будут приватны/публичные классы, что позволит здорово контроллировать точки вхаимодействия с твоей либой и "подменять" в случае чего

Aleh
27.08.2018
14:11:46
что это несбыточные мечты и отдельный интерфейс никак не помогает

Aleh
27.08.2018
14:13:38
це ж стратегия
https://imgflip.com/i/2gnvqt

Артур Евгеньевич
27.08.2018
14:14:54
путаница довольно популярная кстати)

https://stackoverflow.com/questions/31608902/polymorphism-vs-strategy-pattern

ivan
27.08.2018
14:15:29
а какие есть технические проблемы? например я создал интерфейс и описал тип. чем вариант без интерфейса лучше?

Артур Евгеньевич
27.08.2018
14:16:18
Надо конкретно смотреть, но как минимум есть вероятность что ты плодишь ненужные абстракции замусоривая код

F01134H
27.08.2018
14:17:52
это все разговоры о том, какой лучше формы делать мяч, не зная в какую игру будут с ним играть по итогу)

Артур Евгеньевич
27.08.2018
14:18:37
в 9 случаях из 10 я бы ответил что круглый)

Aleh
27.08.2018
14:18:58
Артур, тебе надо взять таймаут

Страница 725 из 785