Size: a a a

2020 February 25

AZ

Alex Zhukovsky in rust_offtopic
короче
источник

AZ

Alex Zhukovsky in rust_offtopic
когда у тебя логика начинает вонять инфрастуктурой (а вывод на экран это именно она), то значит надо что-то пересмотреть
источник

P

Pavel in rust_offtopic
Alex Zhukovsky
может я за фича гейтом хочу реализовывать
ну если за фича-гейтом, то логично делать один метод на 100 строк, потому что это как бы отдельная зависимость
источник

P

Pavel in rust_offtopic
Alex Zhukovsky
когда у тебя логика начинает вонять инфрастуктурой (а вывод на экран это именно она), то значит надо что-то пересмотреть
ноуп, для юнитов вывод на экран это прикладная вещь
источник

AZ

Alex Zhukovsky in rust_offtopic
Pavel
ноуп, для юнитов вывод на экран это прикладная вещь
нет
источник

P

Pavel in rust_offtopic
если нет, то надо смотреть в сторону апи даты/времени
источник

В

Вафель in rust_offtopic
А чем сейчас sloc мерять модно?
источник

p

polunin.ai in rust_offtopic
?
источник

B

Bogdan in rust_offtopic
∅ ч
именно поэтому я за бэ эс дэ
Серьезно на фряхе на десктопе сидишь?
источник

P

Pavel in rust_offtopic
Bogdan
Серьезно на фряхе на десктопе сидишь?
на маке сидит небось
источник

NL

Nick Linker in rust_offtopic
Pavel
лучше 500 строк размазанных по проекту близко к домену, чем 100 строк в одном месте (на самом деле ты утрируешь, там будет порядка 1.2-3 множитель, не 5) тогда удаляя один файл ты удаляешь только его, а когда нужно добавить новый, ты просто копируешь существующий и меняешь соответствующие методы, а не бегаешь по всему проекту в поисках где же он будет использоваться
Кстати, я давненько исследовал вопрос ADT vs Visitor pattern, и у меня есть весьма конкретный код, чтобы оценить удобство:

Задача: написать абстракцию над выражениями, где могут быть константы, переменные и бинарная операция `+` для простоты. Реализовать вычисление и преобразование для упрощения таких выражений.

https://pastebin.com/fcYdQWVX

Написано на Скале, но я думаю разберётесь. Особенно хотелось бы отметить, что визиторовская версия не дописана, потому что явно муторно и сложно:
class Simplify extends Op[Tree] {
 override def apply(c: TConst): Tree = c
 override def apply(v: TVar): Tree = v
 override def apply(s: TSum): Tree = {
   // TODO implement this
   ???
 }

в то время как ADT-шная версия по-прежнему вполне читаема.
источник

NL

Nick Linker in rust_offtopic
Код можно скопипастить и запустить, никаких зависимостей.
источник

P

Pavel in rust_offtopic
Nick Linker
Кстати, я давненько исследовал вопрос ADT vs Visitor pattern, и у меня есть весьма конкретный код, чтобы оценить удобство:

Задача: написать абстракцию над выражениями, где могут быть константы, переменные и бинарная операция `+` для простоты. Реализовать вычисление и преобразование для упрощения таких выражений.

https://pastebin.com/fcYdQWVX

Написано на Скале, но я думаю разберётесь. Особенно хотелось бы отметить, что визиторовская версия не дописана, потому что явно муторно и сложно:
class Simplify extends Op[Tree] {
 override def apply(c: TConst): Tree = c
 override def apply(v: TVar): Tree = v
 override def apply(s: TSum): Tree = {
   // TODO implement this
   ???
 }

в то время как ADT-шная версия по-прежнему вполне читаема.
у тебя там код, который должен быть в операторе написан в интерпретаторе при том, что у тебя всего по одному интерпретатору каждого вида
источник

P

Pavel in rust_offtopic
если б у тебя было несколько разных интерпретаторов, то мб имело бы смысл писать оптимайз для суммы в них
источник

NL

Nick Linker in rust_offtopic
Pavel
если б у тебя было несколько разных интерпретаторов, то мб имело бы смысл писать оптимайз для суммы в них
Гхм, если бы было несколько разных интерпретаторов (а их уже 4: eval, format, flatten и simplify), то визитор становится уже антипаттерном, а не дизайн паттерном.
источник

P

Pavel in rust_offtopic
Nick Linker
Гхм, если бы было несколько разных интерпретаторов (а их уже 4: eval, format, flatten и simplify), то визитор становится уже антипаттерном, а не дизайн паттерном.
у тебя это свойства самих операций вынесенные за сами операции
источник

P

Pavel in rust_offtopic
если бы у тебя были разные эвалы это имело бы смысл или форматы
источник

NL

Nick Linker in rust_offtopic
Pavel
у тебя это свойства самих операций вынесенные за сами операции
simplify это свойство Sum? Свежий взгляд на дизайн, ничего не скажешь...
Но вообще: talk is cheap, show me the code
источник

P

Pavel in rust_offtopic
Nick Linker
simplify это свойство Sum? Свежий взгляд на дизайн, ничего не скажешь...
Но вообще: talk is cheap, show me the code
simplify это свойство BinaryOperator
источник

NL

Nick Linker in rust_offtopic
Pavel
simplify это свойство BinaryOperator
по-прежнему свежо и по-новаторски, с удовольствием бы взглянул.
источник