Coder Social home page Coder Social logo

Comments (3)

troessner avatar troessner commented on June 16, 2024

There's already a feature branch for it: https://github.com/troessner/transitions/tree/remove_support_for_multiple_state_machines

from transitions.

qoobaa avatar qoobaa commented on June 16, 2024

I believe it's an important feature to define multiple state machines on a single object. It's a lot better to have a few separate state machines, than a single big.

from transitions.

troessner avatar troessner commented on June 16, 2024

It's a lot better to have a few separate state machines, than a single big.

That I agree 100% with. I am not advocating having a huge state machine, I am advocating to have different models for different concerns.

I remember we had this discussion already.
However, you didn't address my arguments from above:

Regarding (1):

Back then you cited: https://github.com/qoobaa/pioneers/blob/master/app/models/game.rb as an example where multiple state machines per model made sense. However, looking at the model, I can see that it is huge: Almost 500 lines. Static code analysis tools like reek clearly detect this as a code smell.

( $ ) reek app/models/game.rb
Game has at least 31 methods (LargeClass)

If you split up that model into several models (which it should be), I doubt that you would need multiple state machines.
Can you give me one example with one small and self-contained model which passes smell tests where multiple state machines make sense?
Because I have yet to see one.

Regarding (2)

As I said, the notion of having multiple state machines is not clearly expressed in the API, or better said: Not at all.
Also there are a lot of questions regarding the semantics, see my arguments from above.

from transitions.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.