Владимир Коротенко, ну запросы понятно. Для того что не изменяет состояние системы, логично. Но для команд могут быть сложные сценарии, в которых куски кода могут дублироваться.
PS. Когда я пишу «запрос» и «команда» я имею ввиду термины CQRS
Benjamin L, грубо говоря, поля нужно делать либо неизменяемыми. Либо чтобы они изменялись только предусмотренными сценариями. Оставлять открытые нараспашку сеттеры — оставлять очень большое пространство непредусмотренных состояний объекта. А это может приводить к неопределенному поведению программы. Это соответствует принципу «интерфейс должно быть сложно или невозможно использовать неверным способом»
Roman Kitaev, да и если посмотреть на то как развивается typescript, на его changelog, то можно заметить очень сильное заимствование техник функционального программирования.
Roman Kitaev, я думаю что функциональные техники не вполне корректно оценивать с точки зрения SOLID, потому что эти принципы были придуманы для ООП. И в функциональных языках типа Haskell или F# discriminated union + pattern matching дают более логичную (с моей точки зрения) альтернативу полиморфизму в целом. Правда в typescript пока адекватного pattern matching пока так и не появилось.
Demian1, да, все варианты допустимы. Зависит от целей оптимизации. Если нет конкретных целей оптимизации, то обычно оптимизируют время разработки и берут вариант, который легче в реализации и/или легче в понимании.
Зависит от того, какие будут запросы. Из вопроса не понятны критерии по которым нужно оптимизировать решение. Чего вы добиваетесь? Чтобы меньше места занимало? Чтобы быстрее запрос выполнялся?
Максим Федоров,
Из Новосибирска
Оператор "Электронный Город"
Скрипты с dr.habracdn.net
Причем медленно не всегда, а раз в несколько дней залипает очень надолго. Как будто где-то какой-то кэш протухает. Потом норм.
Евгений Шатунов, да спасибо, я почитал. Мне не приходилось реализовать десктопные приложения с отменой действий, но после прочитанного первое что приходит в голову — snapshot + ограниченный буфер односторонних патчей. Наверное потому что я видел в фотошопе когда-то, что можно настраивать количество отменяемых действий. То есть текущее состояние программы это snapshot + все патчи. Когда достигаем предела буфера то snapshot += oldestPatch
PS. Я прочитал про команду с методами do и undo, но смущает что если где-то неправильно был реализован undo, то вся цепочка отмен может быть протеряна
Сергей Соколов, про HAProxy ничего не знаю.
Идея про отправку на все бэки мне не кажется надежной, потому что для организации нового подключения нужно чтобы обязательно все бэки были на связи и обработали это сообщение. А если не гарантировать это, то есть шанс кого-то недоотключить.
Хотя возможно если брать модель акторов, то там есть какие-то идеи насчет этого, но это не точно, сам я её не применял нигде.
PS. Когда я пишу «запрос» и «команда» я имею ввиду термины CQRS