
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
само название об этом говорит
и проблема с неймингом

ivan
27.08.2018
13:51:59

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

Артур Евгеньевич
27.08.2018
13:53:22

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

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

Dmitry
27.08.2018
13:56:12

Bohdan
27.08.2018
13:56:20

F01134H
27.08.2018
13:56:46

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

Артур Евгеньевич
27.08.2018
13:57:07

Adel
27.08.2018
13:57:40
легко случайно заюзать чтото не то и не заметить

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

Aleh
27.08.2018
14:01:09

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

Артур Евгеньевич
27.08.2018
14:01:33

F01134H
27.08.2018
14:01:34

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

Артур Евгеньевич
27.08.2018
14:02:26
Это просто пример
Но я имел ввиду если ты называешь реализацию без суффикса, то 99% интерфейс просто не нужен

ivan
27.08.2018
14:02:54

Google

Aleh
27.08.2018
14:03:30

F01134H
27.08.2018
14:03:41

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

ivan
27.08.2018
14:03:50

Артур Евгеньевич
27.08.2018
14:04:12

Adel
27.08.2018
14:04:41
сущностям интерфейсы не нужны

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
типо унификация

Dmitry
27.08.2018
14:06:28

Google

ivan
27.08.2018
14:06:43

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

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

ivan
27.08.2018
14:07:49

Aleh
27.08.2018
14:08:45

Артур Евгеньевич
27.08.2018
14:09:12

ivan
27.08.2018
14:11:26

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

F01134H
27.08.2018
14:12:18

Aleh
27.08.2018
14:13:38

Артур Евгеньевич
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:16:36

Aleh
27.08.2018
14:16:51

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

Aleh
27.08.2018
14:18:35

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

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