
Sergey
16.08.2017
20:50:25
или "потом пригодится"? если последнее - YAGNI
как пригодится так и заведешь

Max
16.08.2017
20:50:30

Sergey
16.08.2017
20:50:36
инструменты автоматического рефакторинга что ли не завезли

Google

Sergey
16.08.2017
20:50:51

Max
16.08.2017
20:50:53

Aleh
16.08.2017
20:51:14
ну, т.е. если я знаю, что буквально через две недели я уже буду пилить новую реализацию этого интерфейса, то да, я сразу создам интерфейс и первую реализацию

Sergey
16.08.2017
20:51:16
ну то есть у тебя у ЛЮБОГО объекта есть интерфейс, публичная часть, API

Aleh
16.08.2017
20:51:45

Sergey
16.08.2017
20:52:04
Ой, мамочки
а с точки зрения клиентского кода - ему плевать интерфейс ты ему или класс подсунул.

Max
16.08.2017
20:52:18

Sergey
16.08.2017
20:52:22
идея в том что бы у тебя сокрытие информации происходило, что внутри происходит

Max
16.08.2017
20:53:12
Любой композер пакет

Sergey
16.08.2017
20:53:17
сек
ты торопишься

Google

Sergey
16.08.2017
20:53:58
- был класс App\Orders\Order который зависил от App\Payments\AccountGenerator класса.
- спусля пол года появилась необходимость сделать несколько реализаций. Теперь старый класс называется NxtAccountGenerator а интерфейс остался тем же, в итоге зависимый код ничего и не узнал
и опять же в этом случае намного проще в плане "наверное будут другие реализации и моя реализация дефолтная и отличается тем-то тем-то"

Saen
16.08.2017
20:55:21
о, я как раз эквайринг ща делаю
из говна и палок, но вас читать забавно)

Sergei
16.08.2017
20:55:58

Max
16.08.2017
20:56:01

Sergey
16.08.2017
20:56:39
1. dependency injection
2. final класс

Max
16.08.2017
20:58:08
Т. е. вместо того, чтобы сразу позаботится о расширяемости своего модуля, обрубаем концы и вставляем палки в колеса? :)
Это основополагающий принцип: программировать на уровне абстракций, а не конкретных реализаций.

Aleh
16.08.2017
20:59:03
как раз наоборот, чтобы он нормально расширялся и была возможность самому потом развивать проект, очень жестко следим за публичным интерфейсом

Saen
16.08.2017
20:59:14
ХАХАХАХ!
с сферическом вакууме да, абстракции рулят

Max
16.08.2017
20:59:41

Saen
16.08.2017
20:59:49
лучший код что я видел это максимум скачала фреймворк и глянул на него и все,

Aleh
16.08.2017
20:59:56

Saen
16.08.2017
20:59:59
в более менее рабочем проекте всегда говны тонны
мне фраза нравится: я видел два типа проекта - рабочий и с хорошим кодом

Sergey
16.08.2017
21:01:32

Google

Max
16.08.2017
21:01:33
с сферическом вакууме да, абстракции рулят
Я понимаю, что сроки и лень, но речь же об ооп, а не о том, как сделать вид, что следуешь ооп, но сделать быстро. Какими принципами поступаться в угоду скорости — это уже вам решать в конкретной ситуации.

Saen
16.08.2017
21:01:55
я думал вы тут науку на землю приземляете

Sergey
16.08.2017
21:01:59

Saen
16.08.2017
21:01:59
или вы чисто науку гнете?
если науку, то окай, я не прав

Max
16.08.2017
21:02:19

Aleh
16.08.2017
21:02:27

Sergey
16.08.2017
21:02:28

Max
16.08.2017
21:03:21
Типа, если тебе нужен кастомер, не нужно начинать с класса HumanBeing.

Aleh
16.08.2017
21:04:46

Max
16.08.2017
21:04:52

Sergey
16.08.2017
21:04:54
что за желание наследовать все?
идея с абстракциями очень простая

Max
16.08.2017
21:06:01

Sergey
16.08.2017
21:06:12
ну ты ж сам про хуман бин упомянул
абстракции идут после конкретики

Google

Sergey
16.08.2017
21:06:31
то есть сначала тебе надо решить "что у тебя есть" а уже потом обобщать
а многие начинают сразу интерфейсы липить и абстракции лишние

Max
16.08.2017
21:06:42

Sergey
16.08.2017
21:06:56
вот выше и объяснил
у тебя либо сразу видно чем твоя реализация уникальна и какие еще можно родить, либо лепи файнл класс
потому что не надо разрешать его "расширять"
пока мы не поняли как его юзают
это я про information hiding
это имеет непосредственное отношение к абстракциям, late binding и "расширяемости"

Max
16.08.2017
21:09:12

Sergey
16.08.2017
21:09:16
и инкапсуляция - она просто про "есть внутри и есть снаружи"

Max
16.08.2017
21:10:05

Sergey
16.08.2017
21:10:30

Aleh
16.08.2017
21:10:49

Sergey
16.08.2017
21:10:56
лучше быстренько "решить задачу" а потом "отрефакторить" введя интерфейсы
и под "отрефакторить" я не про когда люди месяц пилят и потом пытаются выбить неделю на рефакторинг, а 20-30 минут кодинг и 5-10 минут рефакторинга
нагадил чутка в углу - потом прибрался. Или сделал красивую абстракцию что бы ужас этот "спрятать" от остальных частей системы

Saen
16.08.2017
21:15:07

Google

Saen
16.08.2017
21:15:22
у меня скорее так - кодишь неделю, потом день рефакторишь

Sergey
16.08.2017
21:15:35
попробуй)
оно так намного "чище" код выходит.
ну и еще принцип бойскаута

Saen
16.08.2017
21:16:18
у меня проблема в том что все обстракции рисуются в процессе и с самого начала знаю примерно 50% как будет выглядит, остальное рисуется на ходу
ну это особенности говна в котором я сижу)

Sergey
16.08.2017
21:16:39
"наперед" абстракции делать весьма трудозатратно

Saen
16.08.2017
21:16:55
так в том и прикол, что есть хорошо и что есть плохо ясно в конце)
20 минут это так се конец)
но можно попробовать

Sergey
16.08.2017
21:17:41

Max
16.08.2017
21:17:42
Проектировать не пробовал перед кодингом?

Saen
16.08.2017
21:17:46
интересено как это выглядит

Max
16.08.2017
21:17:52

Sergey
16.08.2017
21:18:22
Необосновано.
пробовали. месяц проектирования и планирования, 3 месяца разработки, пол года все было хорошо а потом пришли изменения требований

Saen
16.08.2017
21:18:32
чтоб адекватно проектировать это все, нужно погружение в бизнеспроцессы,

Max
16.08.2017
21:18:56
И что, напроектировали такого, что не выдержало изменений?

Sergey
16.08.2017
21:19:02

Max
16.08.2017
21:19:10

Aleh
16.08.2017
21:19:44
ну это скорее не понимать, а быть источником этих бизнес-процессов. Тогда да, ты все знаешь наперед