
Pavel
11.02.2019
20:49:04
Я призываю понять почему ты не нарушаешь DIP когда не плодишь интерфейсы на каждый класс.

Konstantin
11.02.2019
20:49:46
ПЛОХО
class A {}
class B {
public function method(A $arg) { ... }
}
ХОРОШО
AInterface {}
class A implements AInterface {}
class B {
public function method(AInterface $arg) { ... }
}

Google

Den
11.02.2019
20:50:27

Pavel
11.02.2019
20:51:02

Konstantin
11.02.2019
20:51:24

Aleksandr
11.02.2019
20:52:17

Pavel
11.02.2019
20:52:59

Konstantin
11.02.2019
20:53:24

Den
11.02.2019
20:53:28
Ну у меня класс EloquentModel - он является абстракцией над моделью, а реализация - это инстанс

Aleksandr
11.02.2019
20:53:50

Den
11.02.2019
20:54:01

Aleksandr
11.02.2019
20:54:08
Если ты уже для себя нашелт ответ смысл дальше вести дискуссию?

Konstantin
11.02.2019
20:54:11

Aleksandr
11.02.2019
20:54:20
Нет истины.

Pavel
11.02.2019
20:54:21

Google

Konstantin
11.02.2019
20:54:31

Aleksandr
11.02.2019
20:55:50
Огласи ответ, я его не нащюпал
Ну тебе люди говорят что не везде нужны интерфейсы и ты начинаешь с этим явно спорить. Значит ты для себя уже решил, что везде нужны интерфейсы.


Artem
11.02.2019
20:56:10
Это либо интерфейс либо абстрактный класс, но никак не обычный класс
тут довольно важно понимать задачу. Там, где создается продукт и важны оптимизации или просто срочный релиз, в итоге - можно наговнякать и это будет супер решение потому, что задача была в этом. (а любая оптимизация производительности -это еще тот говнокод...) Там где есть работа по найму, а для большинства -это именно продажа своего кода, а не продукта, какой -то компании -важна чистота, надежность и поддержваемость этого кода.
Условия в которых создается код -тоже абстракция, и контракт в виде классического интерфейса подразумевает требования к результату. Но как ни крути в 99% случаев когда создается код, лучше создать лишний файл с интерфейсом, а не делать этого можно только в узких и хорошо обдуманных случаях. Остальное (как собственно и все это -просто демагогия)

Pavel
11.02.2019
20:56:57
То что в одном проекте является абстракцией - в другом проекте не будет абстракцией.

dypa
11.02.2019
20:59:37

Pavel
11.02.2019
21:00:13
В php нет модулей, значит и никакого принципа D нет ?

Den
11.02.2019
21:00:51

Konstantin
11.02.2019
21:00:54
Мы переходим в область философии, без кокретных примеров не придёт понимание

Artem
11.02.2019
21:01:38
В php нет модулей, значит и никакого принципа D нет ?
ну в этих терминах даже файл с классом можно считать модулем, поскольку он создает пространство имен, это же концептуально не отличается от модулей в js реализованных замыканием. Просто эти файлы скорее классы, чем модули, но по сути одна хрень _)

Konstantin
11.02.2019
21:01:58
Вот именно, что для вас модуль?))

dypa
11.02.2019
21:02:01

Pavel
11.02.2019
21:02:53
Иногда даже это можно понять спустя полгода когда наконец видна предметная область.
И куча говнокода уже работает на проде

Konstantin
11.02.2019
21:03:36

Den
11.02.2019
21:03:56
По разному

Pavel
11.02.2019
21:04:04
Вот например пишете вы построитель графиков по точкам для восьмиклассников. У вас есть класс Dot { float $x; float $y; } и это никакая не абстракция.

Google

Konstantin
11.02.2019
21:05:41

Den
11.02.2019
21:05:44

Aleksandr
11.02.2019
21:06:31
Один фиг модулей в пхп нет.

Pavel
11.02.2019
21:06:53
Потом к вам пришли студенты и сказали что может график то быть в трехмерном пространстве. И у вас появилась абстракция сразу interface Dot и классы TwoDDot implements Dot и ThreeDDot implements Dot

Den
11.02.2019
21:07:21

Pavel
11.02.2019
21:07:38
Потом пришли старшекурсники и сказали что координаты то могут быть еще полярные. И вы плодите еще больше абстракций.

dypa
11.02.2019
21:08:02

Den
11.02.2019
21:08:34

dypa
11.02.2019
21:09:15

Pavel
11.02.2019
21:09:26
Потом пришли физики и сказали: "Мы хотели через вашу замечательную библиотеку отстроить модель наших комет но тут выяснилось что эти точки совершенно не учитывают кривизну пространства-времени", тут вы берете увольняетесь и идете писать сайтики.

Den
11.02.2019
21:10:36
В моем понимании она абстрактна

Pavel
11.02.2019
21:10:59
Не точка конкретна а класс точек конкретен
Конкретная точка это уже объект.

Aleksandr
11.02.2019
21:11:47
слой, пакет, неймспейс...
я так понимаю под неймспейсом понимается не те неймспейсы которые в пхп, а пространста имен с возможность импортировать туда и экспортировать оттуда?

Den
11.02.2019
21:12:37
Конкретный интерфейс
Конкретный класс
Конкретный инстанс
Тут нет абстракций

dypa
11.02.2019
21:13:18

Pavel
11.02.2019
21:14:02

Google

Aleksandr
11.02.2019
21:14:18
Потому что пыховые неймспейсы это просто сахар над копипастом. А пространство имен остается одно.

Den
11.02.2019
21:16:12
Смотри: 'MyRepository' - строка. Это абстракция над файлом класса MyRepository
Как биндятся классы в ларке?
abstract -> concrete
Наши имена - это наши абстракции
dypa как тебя зовут? Я не могу тебя так называть!

Pavel
11.02.2019
21:31:06
Дайпа его зовут

Den
11.02.2019
21:33:39

ustasby
11.02.2019
21:38:33

dypa
11.02.2019
21:39:14

Den
11.02.2019
21:40:03

dypa
11.02.2019
21:40:21

ustasby
11.02.2019
21:42:09

dypa
11.02.2019
21:44:05

ustasby
11.02.2019
21:45:37

dypa
11.02.2019
21:47:11

Terminator
11.02.2019
22:37:24
@Hvarts будет жить. Поприветствуем!

hvarts
11.02.2019
22:37:58
всем привет
ребят, кто может с регуляркой помочь, уже 3 часа над ней сижу и ничего не выходит

Den
11.02.2019
22:39:25
Давай

Google

hvarts
11.02.2019
22:41:24
89293661500:q2430173|251587385|М|20|(Russia)|Omsk|(2)|242|0|0
то, что нужно вытащить поместил в ()

Den
11.02.2019
22:41:46
Это строка?

hvarts
11.02.2019
22:41:52
да

Den
11.02.2019
22:42:17
89293661500:q2430173|251587385|М|20|Russia|Omsk|2|242|0|0
Какие варианты стран и цифр?
Дай еще строки

hvarts
11.02.2019
22:43:22
79087999669:polina5566|435885501|Ж|14|Russia|Saint Petersburg|279|2|0|0,
89509003848:8955056SWD|488157595|М|18|USA|Los Angeles|0|0|0|0,
+37360582558:05042004|517813746|М|14|||19|1|0|0,
89181690790:KALINKIN2003|522917428|М|18|USA|Moscow|0|1|0|0,
+79145619378:1523639qaZ|379645586|М|17|Russia||142|10|0|0,
89689654432:zombie333|431804596|М|17|Russia|Moscow|36|0|0|2,
+380713158958:shkolnik|490442916|М|20|Russia|Saint Petersburg|2|1|0|0
Из стран, нужно только Russia вытаскивать

Den
11.02.2019
22:49:39
https://regex101.com/r/jgZUZB/1

hvarts
11.02.2019
22:51:30

Den
11.02.2019
22:52:01
+
я не ограничиваю людей в их понимании 4х букв.
Есть тупая функция https://github.com/Piterden/vue-crossword/blob/master/src/components/BuilderPage.vue#L341-L361
Надо уменьшить количество 2х и 3х буквенных слов
В идеале - сделать его регулируемым
Виды симметрии будут переключаться, надо не забывать об этом.
Поможешь?
Мне алгоритм надо
В чате JS спрашивал

Aleksandr
12.02.2019
01:01:53

Den
12.02.2019
01:10:45
generateGrid () {
this.blanks = []
// eslint-disable-next-line no-magic-numbers
const blankProbability = 1 / 3
const halfWidth = Math.round(this.width / 2)
const halfHeight = Math.round(this.height / 2)
for (let x = 1; x <= halfWidth; x += 1) {
for (let y = 1; y <= halfHeight; y += 1) {
if (Math.random() > blankProbability) {
continue
}
this.blanks.push(
`${x}:${y}`,
`${this.width - x + 1}:${y}`,
`${x}:${this.height - y + 1}`,
`${this.width - x + 1}:${this.height - y + 1}`,
)
}
}
},

Aleksandr
12.02.2019
01:29:50