@symfony_php

Страница 34 из 1418
Sergey
23.12.2016
09:02:01
lazy ведь)

сделай запрос с джоином если не хочешь такое поведение

Mihail
23.12.2016
09:10:49
хм.. сделал запрос через билдер, приджойнил все что подтягивается, для всех сделал лейзи загрузку и всеравно у меня в выборке 10 класов, для них подтягивается 10 учеников отдельными запросами, ( я их юзаю, вот только заджоинил в общий запрос ) и к ученикам тянется еще к примеру список оценок ( хотя тое заджойнил)

Sergey
23.12.2016
09:11:23
а в селект их добавил?

Google
Mihail
23.12.2016
09:11:30
угу

Sergey
23.12.2016
09:11:58
точно добавил? ну можешь сделать partial load флаг

но сущности не будут валидными

Mihail
23.12.2016
09:13:10
все норм, спс ) там еще запросик надо быдло заджийнить

)

Sergey
23.12.2016
09:13:48
жирная выборка выходит наверное

Mihail
23.12.2016
09:15:27
ага, про студентов и классы это я так асбтракно)

но теперь норм с 40 мс прыгнуло до 13 на 10 записях )

Sergey
23.12.2016
10:20:14
http://symfony.com/blog/new-in-symfony-3-3-configurable-autowiring-setters ну вот, приняли именно этот вариант

я как-то раньше не обращал внимание на очень полезную функцию в ide - extract interface

мне о ней напомнили когда я пытался затроллить джавистов на последней конфе

щас вот юзаю, удобно епта

он прям за собой меняет везде упоминания о классе на интерфейс

Google
Sergey
23.12.2016
12:03:50
это как раз то о чем ты постоянно вспоминаешь @fes0r )

Sergey
23.12.2016
12:09:36
он прям за собой меняет везде упоминания о классе на интерфейс
серьезно?) я думал ты вовсю это добро юзаешь) Я сейчас свой проект жесточайше рефакторю... так дико удобно

Sergey
23.12.2016
12:10:00
вот не поверишь, не юзал)

Sergey
23.12.2016
12:10:01
refactor -> move, refactor -> extract method....

Sergey
23.12.2016
12:10:07
не ну это понятно

Sergey
23.12.2016
12:10:10
refactor -> extract interface

Sergey
23.12.2016
12:10:13
все методы юзаю кроме интерфейса)

Sergey
23.12.2016
12:10:13
пыщ пыщ

и в дамках

ну я ленивая жопа и редко интерфейсы заранее делаю

и потому мне удобно

Sergey
23.12.2016
12:11:04
проверил на котлине, там прям в файле реализации по-дефолту он пихает интерфейс

привет из objc :D

Sergey
23.12.2016
12:12:06
)

Sergey
23.12.2016
12:12:41
хотя все равно не вижу смысла создавать интерфейс на каждый класс

как проповедуют зилоты solid

kiss,yagni как бы

Sergey
23.12.2016
12:32:38
> как проповедуют зилоты solid а в каком месте они это проповедуют?

Sergey
23.12.2016
12:35:26
буковки O и D

Sergey
23.12.2016
12:35:27
SRP - только про зоны ответственности объектов, декомпозицию и кохижен. Про "делайте интерфейсы" ни слова O/C - тут интерфейсы уже полезны, но это разного рода стратегии, акторы и прочее... LSP - в целом тупо правила как правильно интерфейсы делать что бы не грустить когда делаешь O/C или ISP ISP - тут да, используй интерфейсы для того что бы изолировать зоны ответственности объекта когда тебе с точки зрения SRP выгоднее все держать в одном классе. Способ снижения связанности и только. Соблюдение ISP + SRP выводит баланс между coheasion и coupling DIP - изоляция модулей, опциональное, позволяет тебе просто между несколькими модулями инвертировать направление зависимости тем самым снизив связанность

Google
Sergey
23.12.2016
12:36:27
у тебя классы будут связаны, а значит будут передаваться другим. вот тебе и интерфейс на каждый чих

Sergey
23.12.2016
12:36:29
а главное - все это опционально, не надо на этом зацикливться. Все это должно приносить пользу и в итоге ты просто где-то живешь с чуть большей связанность а где-то где все плохо можешь ее снизить используя эти принципы

у тебя классы будут связаны, а значит будут передаваться другим. вот тебе и интерфейс на каждый чих
не будут. У меня все штуки завязаны только на типы. Если ты заэкстрактил интерфейс класса потом то остальные об этом даже не узнают

ну то есть... "интерфейс" в контексте SOLID это не отдельная сущность, это в целом контракт который должен соблюдать объект

а делать или нет этот контракт явно зависит от того что тебе дальше надо длать

если у тебя нет "нескольких реализаций" или вопрос выбора не стоит сейчас, то делать интерфейс просто так смысла нет

была такая хорошее правило для "архитекторов". Если мол у вас возник выбор "А" или "Б", то вместо того что бы принимать решение лучше откатиться и подумать, можно ли сделать так, что бы решение по этому выбору было несущественным.

Sergey
23.12.2016
12:39:20
ну так. у тебя щас только 1 реализация и не планировалось другой. ты завязался на нее и не сделал интерфейс. а потом резко потребовалась вторая, и ты не можешь ее так быстро заюзать, потому что SOLID нарушен

Sergey
23.12.2016
12:39:25
вот для этого интерфейсы и late binding собственно и нужны

Sergey
23.12.2016
12:39:37
поэтому чтобы был праведный солид тебе нужны интерфейсы почти на каждый чих

Sergey
23.12.2016
12:40:04
у тебя завязка на конкретной реализации, как ты впихнешь другую?

Sergey
23.12.2016
12:40:18
выделю интерфейс

изменено 2 файла

система ничего не узнала

что теперь она завязана на интерфейс

а не на конкретную реализацию

Sergey
23.12.2016
12:40:52
это уже исправление нарушенного принципа

Sergey
23.12.2016
12:40:59
да нет никакого нарушенного принципа

Google
Sergey
23.12.2016
12:41:00
так можно и гавнокод не называть гавнокодом

его ж переписать можно

Sergey
23.12.2016
12:41:15
ну нарушил я DIP

ну и хуй с ним

Sergey
23.12.2016
12:41:26
ну это ты так считаешь

а я говорю за зилотов

Sergey
23.12.2016
12:41:50
DIP я всеравно буду соблюдать на определенном уровне

Sergey
23.12.2016
12:41:55
вон отличный пример зилотов - егор и его команда. они слепо делают то что им диктует CS и PMD

Sergey
23.12.2016
12:42:16
просто представь что у тебя конкретная реализация сейчас лежит в том же модуле что и все что его использует и при таком раскладе ты даже DIP не нарушал

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

и ты такой пыщ пыщ и разделил, и DIP организовал

Sergey
23.12.2016
12:48:32
разве что так

Mihail
23.12.2016
12:51:22
прикольная тема

я про интерфесы)

Sergey
23.12.2016
12:51:50
прикольная тема late binding

а интерфейсы это лишь способ

Mihail
23.12.2016
12:52:42
надо почитать про раздел рефактор) я как то не очень его юзаю)

да и вообще я наверно юзаю 10% иде)

Sergey
23.12.2016
12:53:18
сначала рекомендую разобраться с live template-ами

можно сильно экономить время

Google
Sergey
23.12.2016
12:53:31
быстрее писать говнокод

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

Sergey
23.12.2016
12:53:49
темплейты рулз

Mihail
23.12.2016
12:54:04
)))

говнокод наше все

Sergey
23.12.2016
12:54:09
forek, pubf, pubsf

Sergey
23.12.2016
12:54:12
я пару месяцев назад потратил пару вечеров что бы разобраться и настроить... реально куча времени экономится

например в phpspec тестах я пишу it и оно создает мне function it_$() {\n}

Sergey
23.12.2016
12:54:54
ты на пхпюнит так и не перешел?)

Mihail
23.12.2016
12:54:55
и еще вопрос на засыпку кто то сталкивался с такими плагинчиками типа https://highlightjs.org/

Sergey
23.12.2016
12:54:57
мелочь но дико удобно

Mihail
23.12.2016
12:55:06
не

Sergey
23.12.2016
12:55:12
а тьфу, перепутал название

Sergey
23.12.2016
12:55:14
ты на пхпюнит так и не перешел?)
я вчера начал пробовать phpunit и понял что ограничения которые накладывает phpspec меня радуют

так что не буду юзать phpunit

Mihail
23.12.2016
12:55:42
при большом кол-ве json браузер умирает (

и это пичалька(

Sergey
23.12.2016
12:55:57
я на junit пишу еще, поэтому как-то проще когда подходы одинаковые

Sergey
23.12.2016
12:57:50
я на junit пишу еще, поэтому как-то проще когда подходы одинаковые
да как бы сами по себе тесты пишутся одинаково

просто phpspec дает мне кодогенерацию и мне это нравится

Страница 34 из 1418