Hacker News new | ask | show | jobs
by Retozi 3963 days ago
I think this is a bad idea.

First with methods, you have mutable state, which I believe should be avoided. It causes a lot of problems for efficient rendering.

You could make some kind of wrapper, but I guess it's not worth the hassle to save a couple of characters.

Second, Action can cause complex writes that touch more than one model (or if you have one global model, multiple state slices). You probably want to have the write functions named independently, so they can be reused over multiple actions if necessary.

1 comments

You don't avoid mutable state by doing "model.count += 1" in a separate update() function rather than a method on the model.

Both are functions that operate on the same data; the OO syntax is just a convenience that was invented exactly for the reason of avoiding endless switch statements in dispatching actions on a particular piece of data.

Doesn't the OO approach just move the work of the switch statement into the class declaration of the model? In practice, OO is about encapsulation, and FP is not. So it's probably not too surprising that the author chose not mix metaphors.

This is also modeled after an architecture in a statically typed language that expresses possible actions as a single union type, in which every possible type must be handled. There's no similar compile-time guarantee in JS, but a switch statements with constants is a reasonable approximation of the idea.