@oop_ru

Страница 234 из 785
Evgeniy
04.06.2017
14:57:27
и все методы что не использовались при записи действий

он писал там код типо throw new ....

и кидал исключение типо not implemented

я нашел автора этого адского "творения"

Google
Sergey
04.06.2017
14:58:23
он писал там код типо throw new ....
тем самым нарушил LSP

Evgeniy
04.06.2017
14:58:23
пришел и сказал да что же вы делаете

да коле это будет продолжатся

да зачем такую штуку делал ты

не надо так

и потом разделил и сделал норм

я ему об этом и говорил только без умных слов виде lsp

потому что пиздец запилили где что то отпало не помню точно

и зажыли мы

теперь твоя очередь

где ты это применял и стало ли от этого лучше?)

могу потом не сэксес стори рассказать )

Google
Evgeniy
04.06.2017
15:01:21
но только там начало другое

а вот мы читали что есть solid и надо делать специализированные интерфейсы

давайте разделим один на чтение другой на изменения

Sergey
04.06.2017
15:02:00
похожие штуки. Был класс который читал и писал, мне надо было добавить кэш. методов было 8 штук. Кэш нужен был 2-м. Бойлерплейт

Evgeniy
04.06.2017
15:02:04
но все заебись но только так зарефакторили репозиторий

Sergey
04.06.2017
15:02:07
много бойлерплейта

Evgeniy
04.06.2017
15:02:21
и в итоге стал у нас репозиторий один Reader другой Writer

и страдали мы адски но решение было предпринято иновационным

Sergey
04.06.2017
15:03:06
интересно какой интерфейс у Reader был

Evgeniy
04.06.2017
15:03:08
interface Repository implements Reader, Writer

там абстракция над sql select

Sergey
04.06.2017
15:03:31
Evgeniy
04.06.2017
15:03:48
T get(int id)

Sergey
04.06.2017
15:05:19
ух)

хм....

а если поразмышлять над твоим примером

вместо того что бы сделать интерфейс ориентированный на клиента, ты как раз таки сделал маленький обобщенный интерфейс

ну мол суть ISP не в том что бы интерфейсы были просто маленькими, а что бы они как-то были в контексте как их используют

Evgeniy
04.06.2017
15:07:14
ога

вот последнее важное но приходит с опытом

Google
Evgeniy
04.06.2017
15:07:39
и объяснить другим мне не всегда удается

это пример оверинжиниринга

был второй мой пример

?
04.06.2017
15:10:06
https://www.youtube.com/watch?v=SEWa5_RW2BM

Evgeniy
04.06.2017
15:31:34
опять эти page object

как я рад что я больше не в ынтерпрайзе где их пруд пруди

Aleh
04.06.2017
15:58:36
ну мол суть ISP не в том что бы интерфейсы были просто маленькими, а что бы они как-то были в контексте как их используют
Проблема не у владельца интерфейса, а у модуля, реализующего интерфейс. Ну т.е. это ж не совсем пользователь интерфейса

Sergey
04.06.2017
16:02:00
это как если у тебя в контракте который ты как разработчик подписываешь бует еще "ну и там убраться надо будет на выходных... и мебель собирать"

Aleh
04.06.2017
16:02:45
ну как сказать, тебя заставляют имплементить то что тебе не надо
Да, просто для меня пользователь интерфейса это тот, кто хочет описать нужный ему объект

Aleh
04.06.2017
16:03:02
И если он в это описание закинул то, что ему не надо, страдать он не будеи

Sergey
04.06.2017
16:03:09
ты описываешь те элементы поведения которые тебе нужны

а уже из этого появляются реализации

ну то есть сначала задача а реализация потом. И если задача слишком обобщенная то и на реализацию это негативно может повлиять

Aleh
04.06.2017
16:06:55
ну да

Sergey
04.06.2017
16:07:28
как бы это красиво сформулировать

Aleh
04.06.2017
16:07:41
просто бывает, что у тебя есть несколько реализаций, для которых некоторые методы лишние или вообще абсурдны, но клиенту все равно нужен жирный интерфейс

Sergey
04.06.2017
16:08:33
вот пример бы таких ситуаций, я не смог придумать

Google
Aleh
04.06.2017
16:08:47
и тогда для этих нескольких реализаций можно выделить их специализированный интерфейс, чтобы следующие не загонялись лишними методами

вот пример бы таких ситуаций, я не смог придумать
вот у Кудряшева мой любимый пример интерфейсы Browser и HeadlessBrowser

Like
04.06.2017
16:16:44
Насколько часто вы пишите тесты для веб проекта?

Sergey
04.06.2017
16:17:05
Like
04.06.2017
16:17:12
Не, хочу попробовать)

Хз что тестировать правда

Sergey
04.06.2017
16:17:29
вот у Кудряшева мой любимый пример интерфейсы Browser и HeadlessBrowser
но не является ли это как раз таки нарушением ISP?

Like
04.06.2017
16:17:35
Или бизнес логику, или все (включая клики на кнопочки)

Admin
ERROR: S client not available

Sergey
04.06.2017
16:17:40
Хз что тестировать правда
а что ты руками проверяшь?

Aleh
04.06.2017
16:17:52
но не является ли это как раз таки нарушением ISP?
ну там был только Browser и надо было делать для фантома и зомби

Like
04.06.2017
16:17:55
а что ты руками проверяшь?
Ничего, оно запускается с первого раза))

я не сомневаюсь в себе и вордпрессе ! ?

Sergey
04.06.2017
16:18:19
Или бизнес логику, или все (включая клики на кнопочки)
реши для себя что важнее что бы работало и насколько сложно тебе будет это автоматизировать по сравнению с проверить руками. А так же учитывай насколько часто у тебя есть шанс что-то сломать именно в этом контексте.

ну там был только Browser и надо было делать для фантома и зомби
ну я к тому что быть может проблема настолько же искуственная как и квадраты прямоугольники?

Sergey
04.06.2017
16:22:19
Aleh
04.06.2017
16:22:44
так а проблема то в чем?
что для Phantom и для Zombie надо было имплементить boot()

Sergey
04.06.2017
16:23:42
а тип для chome не надо бутиться?

Google
Sergey
04.06.2017
16:23:44
или как?

Aleh
04.06.2017
16:24:47
а тип для chome не надо бутиться?
хром, фаерфокс бутить надо, а фантом наоборот не надо

Like
04.06.2017
16:26:23
Like
04.06.2017
16:29:06
Вы лучше скажите: это нормально, что я фигачу type hinting не в строго типизированных языках? При этом, даже и не смотрю (смотрю) в сторону строго типизированного языка

Aleh
04.06.2017
16:29:35
пустой метод
даже не пустой, нельзя без запуска boot делать пару других вещей и чтобы сохранить контракт надо было делать фейковое поле)

Aleh
04.06.2017
16:30:48
Даже в python'e?
что значит "даже"?

Like
04.06.2017
16:31:17
что значит "даже"?
Сложный вопрос

Sergey
04.06.2017
16:31:41
Сложный вопрос
python язык со строгой динамической системой типов, все ок

но вообще смотри

тайпхинтинг он как бы для тебя

а в языках со статической системой типов - для компилятора еще

хотя не не так

тайпхинтинг он всегда для компилятора/рантайма что бы убедиться что все хорошо

Like
04.06.2017
16:32:24
Я понял о чем ты)

Без типов код не красивый, вот и все ? Все просто

Евгений
05.06.2017
06:29:04
ну и зачем? )))))

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