Size: a a a

2020 August 14

CD

Constantine Drozdov in rust_offtopic
Alex Zhukovsky
короче все до нас уже написано, читани, тут 5 минут: http://wiki.c2.com/?ExpressionProblem
Читанул, там все ещё не раскрывается тема, что два способа выражения на самом деле никогда не были эквивалентны, соответствуют разным сущностям и сложность добавления метода это указание на логическую ошибку
источник

CD

Constantine Drozdov in rust_offtopic
Фигура может иметь площадь и не иметь периметра - почему вы считаете, что вы не создали новый интерфейс
источник

AZ

Alex Zhukovsky in rust_offtopic
Constantine Drozdov
Читанул, там все ещё не раскрывается тема, что два способа выражения на самом деле никогда не были эквивалентны, соответствуют разным сущностям и сложность добавления метода это указание на логическую ошибку
добавление "периметра" не большая ошибка, чем расширение Expr коммутативностью
источник

AZ

Alex Zhukovsky in rust_offtopic
считать иначе просто предпочитать молотки отвёрткам
источник

CD

Constantine Drozdov in rust_offtopic
Alex Zhukovsky
добавление "периметра" не большая ошибка, чем расширение Expr коммутативностью
почему?
источник

CD

Constantine Drozdov in rust_offtopic
правильный ответ был не добавлять периметр, а породить новый интерфейс
источник

CD

Constantine Drozdov in rust_offtopic
ShapeWithSquare != ShapeWithPerimeter != ShapeWithSquareAndPerimeter
источник

AZ

Alex Zhukovsky in rust_offtopic
тогда надо было не расширять Expr а добавить новый
источник

CD

Constantine Drozdov in rust_offtopic
Alex Zhukovsky
тогда надо было не расширять Expr а добавить новый
можно пойти этим путём, да, если ваш язык может автоматически кастить енумы
источник

CD

Constantine Drozdov in rust_offtopic
Alex Zhukovsky
тогда надо было не расширять Expr а добавить новый
а можно пойти третьим путём и не именовать интерфейс явно вообще, определив его требуемыми операциями, и для каждой функции породить этот интерфейс описанием
источник

AZ

Alex Zhukovsky in rust_offtopic
Constantine Drozdov
а можно пойти третьим путём и не именовать интерфейс явно вообще, определив его требуемыми операциями, и для каждой функции породить этот интерфейс описанием
в общем экспрешн проблем - реален, дуальность в наборе фич или наборе объектов определенно есть
источник

AZ

Alex Zhukovsky in rust_offtopic
можно выбрать направление которое проще изменять и делать или открытую или закрытую иерархию
источник

CD

Constantine Drozdov in rust_offtopic
Alex Zhukovsky
в общем экспрешн проблем - реален, дуальность в наборе фич или наборе объектов определенно есть
очень странно говорить, что это проблема представления, когда в каждом случае верно только одно из них, а второе - логическая ошибка
источник

AZ

Alex Zhukovsky in rust_offtopic
можно расширяться в обе стороны через таглес файнал
источник

AZ

Alex Zhukovsky in rust_offtopic
вопрос выбора
источник

AZ

Alex Zhukovsky in rust_offtopic
Constantine Drozdov
очень странно говорить, что это проблема представления, когда в каждом случае верно только одно из них, а второе - логическая ошибка
если ты добавляешь в фигуру метод то тебе нужно прообновлять всех потомков. просто "отнаследовать ещё один класс" не будет работать в большинстве случаев
источник

AZ

Alex Zhukovsky in rust_offtopic
если тебе нужно чтобы фигура реально имела площадь, а не некоторый AreableShape, то других вариантов нет
источник

CD

Constantine Drozdov in rust_offtopic
Alex Zhukovsky
если ты добавляешь в фигуру метод то тебе нужно прообновлять всех потомков. просто "отнаследовать ещё один класс" не будет работать в большинстве случаев
так и есть для рантаймового полиморфизма
источник

CD

Constantine Drozdov in rust_offtopic
но есть третий путь - в расте он называется dyn Trait
источник

AZ

Alex Zhukovsky in rust_offtopic
Constantine Drozdov
но есть третий путь - в расте он называется dyn Trait
это не третий путь, это первый путь
источник