@oop_ru

Страница 190 из 785
Like
02.05.2017
16:17:49
Кстати, главный вопрос: офис или удаленка(не фриланс) ? Сильно застряну "в прошлом", если начну с удаленки?)

Sergey
02.05.2017
16:19:26
Так и знал, что нужно выбирать Spring, а не Laravel ?
у ларавель дебильная структура модулей но в целом норм

у Симфони получше но это потому что со спринга крали

Like
02.05.2017
16:21:10
у Симфони получше но это потому что со спринга крали
В симфони чате поднималась эта тема) Но я в основном спа приложухи бацаю, от ларки беру по минимуму, так что все не плохо ( но это не точно)

Google
Roman
02.05.2017
16:39:36
Кстати, главный вопрос: офис или удаленка(не фриланс) ? Сильно застряну "в прошлом", если начну с удаленки?)
всё зависит от твоей самоорганизованности и твоего представлении об идеальном рабочем месте (комфортное место в офисе или ноут на природе/пляже)

сам целюсь уйти однажды на пляж жаркой страны

Like
02.05.2017
16:42:16
сам целюсь уйти однажды на пляж жаркой страны
Я 2 раза не осилил офис, так что сейчас на удаленку ) Просто интересно послушать мнение в целом)

Roman
02.05.2017
16:42:44
это такой же вопрос об идеальном паттерне для апи)

зависит только от самого тебя

при любом выборе важно разделять место где ты работаешь от места где ты отдыхаешь

Sergey
02.05.2017
16:52:45
ищи себе команду

один ты далеко не уедешь

ну то есть уедешь но ехать будешь долго

и не ной что мол "ну это ж надо на работу ходить и работу работать"

это как искать "идеальный паттерн для ecommerce"

Google
Sergey
02.05.2017
16:54:40
или там "идеальный паттерн для банка"

Like
02.05.2017
16:56:27
Ладно, тогда из всех 45и вакансий (минус 20: Middle/senior) постараюсь выбрать что-то годное :D Спасибо )

Sergey
02.05.2017
16:57:08
вот так @fes0r
ты под API что подразумеваешь?

Sergey
02.05.2017
16:57:59
тогда адаптер)

Roman
02.05.2017
16:58:11
ок)))

это как вообще?
ну а вообще это такой же неверный вопрос, как я уже понял

Алексей
02.05.2017
16:59:26
https://www.youtube.com/watch?v=bVwZquRH1Vk
интересно расказывает (PS: формат спорный - отвлекает сильно)

Sergey
02.05.2017
17:11:18
интересно расказывает (PS: формат спорный - отвлекает сильно)
есть интересное исследование которое говорит, что когда ты слушаешь что-то на расслабоне, то как бы и не факт что ты вообще слушаешь

потому лекции в университетах и не эффективны

могз не думает

Алексей
02.05.2017
17:16:10
есть интересное исследование которое говорит, что когда ты слушаешь что-то на расслабоне, то как бы и не факт что ты вообще слушаешь
Не не в раслабоне дело. Динамический Background отвлекает - что-то прошло, что-то пробежало, проехало. Ну это лично мне. Хотя идея интересная

Aleh
02.05.2017
17:16:43
или полиция в бобик зашла, ага)

Sergey
02.05.2017
17:16:57
хз, меня не отвлекает

Алексей
02.05.2017
17:17:21
меня аж укачало :)

Aleh
02.05.2017
17:17:29
или полиция в бобик зашла, ага)
https://www.youtube.com/watch?v=9SOFqWYpf9Y

Алексей
02.05.2017
17:18:19
https://www.youtube.com/watch?v=9SOFqWYpf9Y
Да тоже интересный формат :) Взгляд на FP “с другой стороны” :D

Aleh
02.05.2017
17:18:40
ага, во второй части там и про раст, и про типы вообще)

Roman
02.05.2017
17:24:37
https://www.youtube.com/watch?v=9SOFqWYpf9Y
"Автозак Конф 2017 Russia"?

Google
Sergei
02.05.2017
19:53:54
Выделить все самое главное путем "скрытия" всего мещающего :D Насчет эттапа: Добиваю солид на практике (Лисков так и не понял :D), паралелльно смотрю паттерны
lsp - допустим есть тип Птица и есть подтипы: орёл, цапля, воробей. Все птицы умеют летать и во всех местах программы вместо птицы можно будет подставить три эти реализации и всё будет работать. Substitutability is a principle in object-oriented programming stating that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S (i.e. an object of type T may be substituted with any object of a subtype S) without altering any of the desirable properties of T (correctness, task performed, etc.). More formally, the Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called (strong) behavioral subtyping, Но есть ещё пингвин, который летать не умеет но он ЯВЛЯЕТСЯ птицей, добавляем пингвина в нашу программу и опять говорим всем птицам лететь, все выполняют команду, пингвин бросает UnsupportedOperationException. Или пингвин должен летать, т.к. он ЯВЛЯЕТСЯ птицей или он не должен быть птицей. Пингвин это нарушение lsp, пример из реального мира: java collection framework.

Артур Евгеньевич
02.05.2017
19:58:03
lsp - допустим есть тип Птица и есть подтипы: орёл, цапля, воробей. Все птицы умеют летать и во всех местах программы вместо птицы можно будет подставить три эти реализации и всё будет работать. Substitutability is a principle in object-oriented programming stating that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S (i.e. an object of type T may be substituted with any object of a subtype S) without altering any of the desirable properties of T (correctness, task performed, etc.). More formally, the Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called (strong) behavioral subtyping, Но есть ещё пингвин, который летать не умеет но он ЯВЛЯЕТСЯ птицей, добавляем пингвина в нашу программу и опять говорим всем птицам лететь, все выполняют команду, пингвин бросает UnsupportedOperationException. Или пингвин должен летать, т.к. он ЯВЛЯЕТСЯ птицей или он не должен быть птицей. Пингвин это нарушение lsp, пример из реального мира: java collection framework.
Классное объяснение, даже нагляднее чем квадрат и прямоугольник)

Like
02.05.2017
20:01:15
Sergei
02.05.2017
20:02:31
Ох уж этот хабр)
при чём тут хабр? Я это ниоткуда не брал

Like
02.05.2017
20:02:43
На хабре статья про солид и там lsp с квадратом и прямоугольником описывается

Артур Евгеньевич
02.05.2017
20:03:49
На хабре статья про солид и там lsp с квадратом и прямоугольником описывается
ага, там еще в коментах какой то чувак забавно прям упёрто отстаивал альтернативную точку зрения

Sergei
02.05.2017
20:03:52
Обычно официальные обьяснения паттернов и принципов слишком сухие, а человек намного лучше понимает аналогии.

Артур Евгеньевич
02.05.2017
20:04:46
мне про паттерны вот нравится сайтец https://refactoring.guru/ru

ну там ток банды 4 разбираются

f4rt~
02.05.2017
20:05:02
lsp - допустим есть тип Птица и есть подтипы: орёл, цапля, воробей. Все птицы умеют летать и во всех местах программы вместо птицы можно будет подставить три эти реализации и всё будет работать. Substitutability is a principle in object-oriented programming stating that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S (i.e. an object of type T may be substituted with any object of a subtype S) without altering any of the desirable properties of T (correctness, task performed, etc.). More formally, the Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called (strong) behavioral subtyping, Но есть ещё пингвин, который летать не умеет но он ЯВЛЯЕТСЯ птицей, добавляем пингвина в нашу программу и опять говорим всем птицам лететь, все выполняют команду, пингвин бросает UnsupportedOperationException. Или пингвин должен летать, т.к. он ЯВЛЯЕТСЯ птицей или он не должен быть птицей. Пингвин это нарушение lsp, пример из реального мира: java collection framework.
в таком случае больше интерфейсов == лучше

Like
02.05.2017
20:05:19
в таком случае больше интерфейсов == лучше
lsp = остальные 4 принципа, очевидно же (нет) :D

Артур Евгеньевич
02.05.2017
20:05:58
мне не оч понравился, там некоторые слишком сухо описаны

Like
02.05.2017
20:06:19
Evgeniy
02.05.2017
20:07:34
но про паттерны наоборот не особо понравилось хотя лучше чем почти везде

Sergei
02.05.2017
20:08:02
Кто то хочет поспорить, нарушает ли java collection framework lsp или нет?

Google
Артур Евгеньевич
02.05.2017
20:08:18
а вот про Cohesion & Coupling мне непонятно до конца, что считается модулем в объяснениях,что внутри модуля должна быть высокая связанность

Артур Евгеньевич
02.05.2017
20:08:54
а мне про запахи кода
ну да я щас рефакторинг фаулера читаю, там тоже глава про запахи, но на сайте как то живее описана

Evgeniy
02.05.2017
20:09:09
да там неплохо описано

Артур Евгеньевич
02.05.2017
20:09:25
некоторые советвы слишком капитанские

Admin
ERROR: S client not available

Evgeniy
02.05.2017
20:09:25
а главное написано о том что если начинаешь одним рефакторингом злопутореблять

пишется к чему приводит

Артур Евгеньевич
02.05.2017
20:09:44
типо параметретизация метода

Evgeniy
02.05.2017
20:09:44
но эти книги надо читать с неким опытом

Артур Евгеньевич
02.05.2017
20:10:12
и написано что addRow(5) лучше чем addFiveRow()

Sergei
02.05.2017
20:10:25
а какая разница)
Ну вообще то хотелось бы знать точно, я думаю что скорее да чем нет, но в то же время то что некоторые методы могут работать или бросать исключения написано в интерфейсе, но если я получу к примеру 5 экземпляров этого интерфейса, я не могу узнать в каком из каких я могу вызывать определённые методы или нет, вот если бы был флаг isUnmodifiable тогда да, но его нет.

Evgeniy
02.05.2017
20:11:11
ну тут вопрос скорее философский в Java collection

это очень популярная штука

и шанс повлиять и сделать так как хочется кому то очень сложно

поэтому Java collection скорее воспринимать как данность а хорошо или плохо

Google
Evgeniy
02.05.2017
20:11:57
хз, всегда что то хорошо что то плохо

Евгений
02.05.2017
20:12:00
и написано что addRow(5) лучше чем addFiveRow()
мне кажется, такой пример очевиден без объяснений )

Evgeniy
02.05.2017
20:12:03
имхо естественно

Sergei
02.05.2017
20:12:50
это очень популярная штука
Это да, но если долго время смотреть туда и не только, то можно увидеть всякие нехорошие штуки. Но это скорее относиться к первым версиям, а те классы уже не выпилить т.к. обратная совместимось. Но и в некоторых местах тоже встречаются нарушения но не так часто.

Артур Евгеньевич
02.05.2017
20:20:01
Помогите разобратсья в ситуцации. Был класс сохряняющий емайлы, и там было 7 зависимостей инжектом(логгер, файлсистем, энтитиманагер и т.д короче в основном все служебные) я добавил 8(токенайзер). Ну естественно я решил что 8 зависимостей это перебор, и решил слегка разбить класс. В итоге вынес отдельно все дела для работы с файловой системой, и убрал логирование из основного класса, добавив обертку с помощью деокрирования. В итоге уменьшил зависимости до 4, но создал 2 доп класса, которые не имею смысла в отрыве от основного. То есть по факту я не уменьшил число зависимостей, а просто пробросил их на уровень выше. На ревью мне скзаали, что раз сделал можно и оставить, но смысла большого в этой моей работе нет. Так вот сосбтсвенно вопрос, как определить, что класс обладает слишком большим числом зависиомостей, и рефакторинг действительно необходим??

понятно что srp и все такое, но все таки в реальных проектах дела не всегда так хороши как в теоретических примерах

Евгений
02.05.2017
20:25:17
MeaninglessClassOne и MeaninglessClassTwo )

Артур Евгеньевич
02.05.2017
20:25:50
EmailFileSaver и LockerEmailSaver

торой я сначала назвал LockerEmailSaverDecorator но слово декоратор скзаали убрать потом)

Sergei
02.05.2017
20:27:01
А lockerEmail что делает?

Артур Евгеньевич
02.05.2017
20:27:13
Ну а основной класс EmailSaver там сохарнения мыла в базу, сохранение аттачментов и т.д

А lockerEmail что делает?
блокировку осуществляет в базе

я поэтому и декоратор применил, т.к блокировка вызывается преед сохранением, а снимается после, т.е удобно было обернуть основной код

Sergei
02.05.2017
20:28:07
и есть еще класс Email?

Артур Евгеньевич
02.05.2017
20:28:30
да, но он не передается в конструктор

это ENtity

она в парамтеры метода save передается

Sergei
02.05.2017
20:40:36
я поэтому и декоратор применил, т.к блокировка вызывается преед сохранением, а снимается после, т.е удобно было обернуть основной код
Сделай интерфейс EmailStorage, и реализации DBStorage, FileStorage и т.д. и декораторы к ним StorageLogger и что то там еще.

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