'y')->a()->b()->build(): C, создаёт инстанс класса C с некоторыми свойствами. Встала необходимость добавить в C ещё одно обязательное свойство, например, foo.
Варианты:
— Builder::main1(first: 'x', second: 'y', fooValue: 'abc')->a()->b()->build()
— Builder::main1(first: 'x', second: 'y')->a()->b()->withFoo('abc')->build()
Кроме main1() есть ещё три аналогичных метода-конструктора (но аргументы разные), всем придётся добавить ещё один аргумент и отрефакторить вызовы (в гитлоге, да и вообще, правка строки выглядит и читается хуже, чем добавление/удаление строки).
Вроде, уже два минуса есть и второй вариант выигрывает?
Визуально второй красивее, но если первый вариант явно упадёт без нового аргумента, то второй спокойно будет работать и его хер отдебажишь и найдёшь проблему) Я всегда за явное падение кода в нестандартный ситуации
ну он же обязательный!
Второй работать не будет, потому как результат не сбилдится, аргумент-то обязательный
Первый вариант строже, факт. Считать это более приоритетным?
Ну ->b() же будет отдавать какой то экземпляр
сбилдится) но не выполнится
Нет, упадёт, когда в конструктор C придёт нулл вместо значения для этого аргумента
да я понятиями компилируемого языка говорю)
Вот ) то есть до этого этапа код дойдёт) и если я на этом прекращу, то у меня будет какой то билжер болтаться в коде ошибочный с самого начала )) Вообщем я за первый варик ))
Ничего болтаться не будет
А я думал чем отличается компилируемый от интерпретируемого)) Неплохой пример )
Ну а кто мне запретит создать такой экземпляр билдера? Я же не знаю когда создаю объект что ещё 1 обязательный метод нужно применить ) и ваще не знаю обязательный он или нет ))
Ну создал ты его — и что?
и вообще. что ты не как ларавельщик. где модели и контроллеры? Нафиг тебе эти билдеры!?
А что плохого в таких билдерах?
они не благословлены Тейлором!
Душа-то просит — займи и выпе.. ой, не то
Я только увидел что статический метод не замокать в тестах
билдеры не мокают
А его не надо мокать
Обсуждают сегодня