Nadir
я тоже
invariance
он друг админа просто
Ale
типа того
Ale
конь мой зе бест фрэнд
Ale
или ты про которого?)
Rodion
@mkusher https://vk.com/doc-73701965_323562567
invariance
да да
Ale
@fes0r тоже такой себе
Ale
Rodion
@mkusher ну окей, спасибо. просто GoF-то я уже читал, но не познал еще дзен.
Rodion
плохо читал, видать
Ale
ну вот эта ваще живая такая, примеры годные
Ale
Э Гамма это справочник, а не учебник)
Rodion
имею в виду первую часть его
Rodion
где расписываются концепции, как применять шаблоны и т.п.
Ale
короче, все равно как учебник она ну так себе)
Sergey
А ФП - это отсутствие сайд эффектов от слова совсем. Проблема в том что система без сайд эффектов не может взаимодействовать с внешним миром а значит не может делать ничего полезного для этого внешнего мира
Sergey
отсюда приходят монады, идеи изоляции того же стэйта и т.д.
Sergey
тип если Вася зашел в телепорт, его атомы при сканировании были рассеяны и в другом месте собрался тот же Вася или совершенно другой Вася просто идентичный
Sergey
ну то есть вопрос с "понятнее" не всегда актуален. Люди могут менять имена, но их идентификационный номер при этом не меняется в пределах государства.
Sergey
люди даже пол могут менять
Sergey
а ТИП - штука неизменная
Sergey
так что форма фигуры может быть характеристикой, а не типом. В случае с шарами это будет не куб, а обрезанный шар.
Sergey
либо у тебя математически описанная форма и тогда можно абстрагироваться в целом от формы. Ну мол у тебя будет "объект" имеющий какую-то форму, которую можно менять.
Sergey
и тогда это будет просто свойство объекта
Sergey
и делать "тип" или "свойство" - это уже зависит от задачи.
Sergey
но ПРОЩЕ будет когда у тебя система типов работает для описания бизнес логики, а не "потому что так захотел программист".
Evgeniy
и так ты подвел всех к хаскель
Evgeniy
где православная система типов )
Evgeniy
очень тонко в темах про ооп приводить людей к хаскелю)
Evgeniy
хотя система типов не плохая еще в rust :D
🐴
https://habrahabr.ru/post/313796/
🐴
https://www.youtube.com/watch?v=JLURCz3dDtY
Sergei
Хорошее объяснение.
Sergei
По сути (как мне подсказывает опыт) вопрос сводится к следующему:
сделать дизайн системы таким, чтобы ожидаемые изменения было внести легко (расширением), а НЕ ожидаемые - трудно.
🐴
https://www.youtube.com/watch?v=lfdAwl3-X_c
Sergei
Вообще из той же оперы - важно явно осознавать не только то, что система должна делать, но и что НЕ должна.
🐴
Sergei
Из той же оперы: в С++ можно определить свой operator+ для своих типов, но нельзя переопределить operator+ для int - хотя для этого нет технических сложностей.
Sergei
Причина - "необычное" сложение двух int это не то, что можно ожидать от системы.
Sergei
Соответственно перегрузка operator+(int,int) приведёт к проблемам понимания кода, что крайне нежелательно.
Повторюсь, в то же самое время _расширить_ operator+ на свои типы можно (и порой нужно).
🐴
Слушаю Егора
🐴
примерно половина видео, пока мне все очень нравится
Sergei
Я начал только что.
Sergei
К вопросу о книгах (Егортам советует Objective Thinking): я примерно врто же время читал мощную книгу Grady Booch "... OO Analyzis and Design"
http://www.barnesandnoble.com/mobile/p/object-oriented-analysis-and-design-with-applications-grady-booch/1100278452/2675428076166?st=PLA&sid=BNB_DRS_Marketplace+Shopping+Textbooks_00000000&2sid=Google_&sourceId=PLGoP20456&k_clickid=3x20456
Sergei
Для меня по тем временам была просветляющей. Хотя это было давно и может уже совсем неактуально.
🐴
там студенты, которые не втыкают, что он говорит
🐴
максималисты
Artur
заголовок желтее некуда )
Artur
но функциональщину никто не отменял, да
🐴
в целом мне все понравилось
🐴
только аудитория неподготовленная, видимо
Sergei
По-моему зря он так про статические методы.
🐴
ну его надо воспринимать with a grain of salt
Sergei
Имхо static, напротив, улучшает инкапсуляцию.
🐴
kak eto po-russki
🐴
без фанатизма
Artur
имхо сеттеры лучше, чем передавать в конструктор. особенно есть дефолтовое поведение
Artur
и я не про депенденси инджекшенс
Sergei
Обычная проблематика сеттеров - хз кагда и какой юзать, чтобы "оно заработало".
А наличие конструктора с Х параметрами гарантирует, что к завершению конструктора объект будет в адекватном, готовом к использованию состоянии.
Sergei
И вторая половина беды - легко можно забыть (или просто не знать) какие там сеттеры нужно вызвать.
Sergei
С параметризированным конструктором об этом рже компилятор заботится.
Artur
ну какая разница инициировать 5 объектов в 10- строк передавая всё как зависомости в конструктор или сетить только то, что нужно
Artur
это не значит что обязательно в обхекты инжектить промежуточные состояния. хотя это возможно
Sergei
Разница в том, что некто Иванов написал класс, и я совершенно не в курсе, какие там сеттеры - and guess what? - в каком порядке нужно вызывать?
Artur
Artur
если они не обязательные
Artur
Artur
а геттеры - получить путь файла нужно всё равно даже если не в явном виже. например, как ключ для хэширования
Sergei
f = new File();
f.setName("hello.txt¨);
f.setAttributes(READONLY);
f = new File();
f.setAttributes(READONLY);
f.setName("hello.txt¨);
Я легко могу представить, когда эти два кода будут ртботать по-разному.
Artur
между этими строчками же ничего не происходит
Artur
точнее не должно
Artur
опять же ЭТО сетить можно в 2 параметра в 1 функцию
Sergei
А что должно? Я просто создал объект файл, присоединил его к фаилу на диске и вроде как поменял атрибуты.
Artur
в конкнетном случае если не будет сеттеров, а файл не разрастётся до хх тысяч строк - будет много объектов
Artur
появится точно такая же проблема - промежуточного состояния и последовательности инициации всех этих объектов чтобы сделать задачу