Coder Social home page Coder Social logo

Comments (4)

guerrillacontra avatar guerrillacontra commented on June 28, 2024 1

It is just that you're trying to abstract something that no one is going to need.

Over engineering I say! 💃

When people use Ash, if they want to extend the EntityStateMachine they will simply just do that, but no one is gonna re-use/implement an IState from the Ash framework as part of their domain logic.

Anyone who would use an IState kinda thing, would very likely roll out their own in a sub-layer underneath the Entity context, with a state machine that fits their needs better.

The contract of both EntityStateMachine and EngineStateMachine works very well for those specific concepts, but for me it does not do the job for other state based parts within the game.

from ash.

guerrillacontra avatar guerrillacontra commented on June 28, 2024

That is true however just because they look similar no need to assume it needs to be refactored into a general form.

Looking closely it is clear that the changeState() is by far the bulk of each class, and thus refactoring is really pointless as it's not catering for what matters.

If anything they could potentially share an IAshStateMachine interface or something, but I don't think it will benefit...

from ash.

xpol avatar xpol commented on June 28, 2024

@guerrillacontra Thank you!

And I just can't agree with you. EntityStateMachine and EngineStateMachine, in a high level of view, they does the same thing: StateMachine. The are different is just because they depends on different states. EntityState and EngineState have different interface.

I think we don't need to have IAshStateMachine but IState. (Find What Is Varying and Encapsulate It)

from ash.

xpol avatar xpol commented on June 28, 2024

@guerrillacontra But true, indeed. The duplicated code in the two StateMachine is trivial.

from ash.

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.