
Aleh
06.04.2017
18:33:47
пример от балды конечно)

Sergei
06.04.2017
18:36:01
В таком случае можно было бы сделать документ который печатал бы сам себя, но тут уже нужно смотреть более внимательно на предметную область.

Aleh
06.04.2017
18:36:59
ну и в любом случае, как принтер будет преобразовывать документ в строку, придется обвесить документ вредными геттерами

Google

Sergei
06.04.2017
18:37:30
Я решил эту проблему по другому, документ по сути это холдер данных
пусть он еще что то считает в себе там сумму чего то, сколько персонала и т.д. информациооный эксперт. Но перед печатью документ еще нужно форматировать
а формат может быть разный и поэтому можно ввести класс Formatter который уже будет отдавать строку, которую будут печатать
Вроде бы геттеры это плохо, но в то же время допустим если мне нужно чтобы документ выдавал каку то инфу, которая должна быть правильной т.е. мне нужно протестировать корректность данных. Поэтому нужны сетттеры, а когда я буду разбирать вывод документа который будет уже напечатан т.у. String то это по моему как то не особо если мягко сказанно. TDD показывает мне здесь что с геттерам всё норм т.к. всё нормально тестируется.

Aleh
06.04.2017
18:43:18
честно говоря слабо понимаю, что может считать класс документ)
документ это результат какого-то процесса, подозреваю
или подтверждение процесса

Sergei
06.04.2017
18:44:39
Ну допустим скорее всего здесь Document не сильно подходящее имя пусть будет Report, есть данные которые приходят в какой то класс который отдает Report
допустим если сделать Report или Document который будет сам себя печатать то будет теже использования не гетеров а сеттеров в классе который будет отвечать за печать и который будет сетиться в Document посредством агрегации.
В общем пример конечно шляпный
в uml всё красиво, но...
документ это информация информация это данные, для того чтобы с данными что то сделать их нужно куда то передать. т.е get set

Google

Sergei
06.04.2017
18:49:47
А если не передавать то опять будет возвращение к той же проблеме что была до решения разбивать на классы
как единичное решение это может быть и норм когда какой то документ будет печататаься только в одно место, если мест будет два то привет get set

Sergey
06.04.2017
18:50:32
Самое стремное в размазывании документа и принтера на отдельные классы - это когда принтеров или документов становится много и они сильно различны. Тогда это превращается в ад из визиторов или мультиметодов

Sergei
06.04.2017
18:52:04

Aleh
06.04.2017
19:06:16
вы можете кидаться какими-то dto между вашими объектами

Владимир
06.04.2017
19:08:38
+1
Конкретный объект с данными определённой структуры

Sergei
06.04.2017
19:15:13

Aleh
06.04.2017
19:15:40

Sergei
06.04.2017
19:16:25
ну это уже смотря какой язык брать, суть та же, публичные или геттеры

Aleh
06.04.2017
19:16:39
да любой

Sergei
06.04.2017
19:17:17
java не приветствует такое

Aleh
06.04.2017
19:17:51
в любом случае dto это не ваша сущность, которая что-то умеет

Sergei
06.04.2017
19:18:10
хотя если обьекты иммутабельны то можно делать public final и обойтись без сеттеров, это уже спуск вниз от uml к конкретным языкам

Aleh
06.04.2017
19:18:22
это как упрощение вызова, чтобы не писать много аргументов у метода

Sergei
06.04.2017
19:20:47
в общем без контекста предметной области, и где будет проходить ось изменения получить идеальное решение невозможно.
чтобы всё можно было расширять во все стороны и ничего не трогать - так не бывает.

Aleh
06.04.2017
19:21:10
идеальное решение получить просто невозможно

Google

Aleh
06.04.2017
19:21:22
можно получить кучу приемлемых на данный момент

Sergei
06.04.2017
19:22:37
Если поднятся даже над uml и следовать логике: есть какие то данные которые нужно распечатать разными способами, разные способы это разные действия которые нужно выполнить чтобы добиться результата, поэтому придется что то разделять на какие то части. и т.д.

Владимир
06.04.2017
19:23:07
Есть ещё вариант сделать документу принт-интерфейсы которые знают как отображать его данные в конкретной реализации)

Sergei
06.04.2017
19:24:40

Владимир
06.04.2017
19:25:48
Оу, диаграму про**ал) Ну да, именно это)

Sergei
06.04.2017
19:26:22
Вообще нужно Егора Бугаенко слушать, он бы пояснил здесь за ООП, только на каждоый конференции после десяти минут его доклада остальные 50 идет срач. Но вроде он некоторые вещи правильно говорит, и про геттеры и про всё остальное.
Оу, диаграму про**ал) Ну да, именно это)
я делал нечто подобное только у меня был еще форматтер который отдавал строку, т.к. способов напечатать и отдать куда либо документ много, а вот количество форматов самого документа мало и это норм в этой ситуации.

da horsie
06.04.2017
19:29:02

Sergei
06.04.2017
19:30:28
У него книга еще есть.
В общем серебрянной пули нет. Если ты хотя бы наполовину угадал с осью изменений то уже жить можно. Хотя для этого нужно чтобы её определял эксперт в предметной области.
https://youtu.be/llGgO74uXMI
где то в середине вроде бы было об этом, точно не помню.

Evgeniy
06.04.2017
19:50:58
я субьективно за вариант с imutable dto который возвращает document и передает разным реализациям печати которые реализуют один интерфейс
чисто субьективно
если документов разных в системе много и много разных вариантов печати
но вообще надо от ситуации смотреть, если документ это уже некое dto и есть уже публичные методы или свойства необходимые для печати, то смысл делать второй dto?
это все имхо обычного негра разработчика)
а на практике я бы делал, как остальные сущности в системе печатаются, ну а если это первая то описал выше)

Sergei
06.04.2017
20:04:14
В общем кроме этого вариантов немного. p.s. индуса

Aleh
06.04.2017
20:06:19
на практике для отображения я бы дто прямиком из базы тянул)

Google

Evgeniy
06.04.2017
20:06:48
сделал view в базе и нет проблем)
:D

Sergei
06.04.2017
20:08:21

Evgeniy
06.04.2017
20:08:41

Admin
ERROR: S client not available

Sergei
06.04.2017
20:09:15
ну тогда ок
Active Record

Aleh
06.04.2017
21:11:54

/
06.04.2017
21:22:01
Вопрос, нужно чтоб вернуло true
как проверить есть ли в массиве два моих элемента, ттгда труе
http://sandbox.onlinephpfunctions.com/code/0ef1d6209baac33a087e5b8b6a9162b8a4e2056f
bool(false)

Sergey
06.04.2017
21:36:43

Evgeniy
06.04.2017
22:11:29
в некоторых языках назвали это типо view-model :D
верней не в языках а подходах типо mvvm
или mvp сколько всяких сокращений

Sergei
06.04.2017
22:36:04

Evgeniy
06.04.2017
22:38:06
смысл в том что есть задачу и выводом в разные места, можно рассмотреть документ как model, а печать в какое то устройство как view, а вот как реализовывать дальше через презентер или viewModel это холивар, ну и еще другие способы есть
а вообще наброс хороший как лучше сделать)

Google

Sergei
06.04.2017
23:06:28

Evgeniy
06.04.2017
23:06:49
mvc это очень очень холиварный паттерн)
поэтому проще согласится)

Sergei
06.04.2017
23:07:29

Evgeniy
06.04.2017
23:09:12
принцип разделения кода, данных, и визуализации хорошо
только изначально mvc использовался для построения гуй по сути
и срача на тему тонких и толстых контроллеров было масса
и я не удивлюсь что из за этих срачей появились mvvm и mvp :D

Sergei
06.04.2017
23:10:41

Evgeniy
06.04.2017
23:11:12
мне приходится в основном работать с api
и там view как такого нет

Sergei
06.04.2017
23:11:30

Evgeniy
06.04.2017
23:12:14

Sergei
06.04.2017
23:26:49
Ну допустим: