I am sold on
the immutability thing. I started to think about various designs and about what immutability of objects would mean to them and I think the results are promising - they tend to have much more clear structure - and just thinking about immutability gives you a chance to see an additional structure in the code. One quite obvious rule of such design is that you cannot keep data of narrower scope in objects with wider scope - and this forces you to think about the scope of various data pieces in your programs. For example in web oriented programming you have (usually) three scopes:
- Application - i.e. all data that is persistent to the whole web server process (like configuration)
- Session - i.e. data saved into the session variables (there is an opinion, and I mostly subscribe to it, that you should keep that minimal).
- Request - i.e. the data you receive from the web client and that you send back to it
An example of framework that does not respect this division is known to everyone - it's Catalyst - fortunately
the app/context split is mostly done.
Acknowledgements: Stevan thanks for the web apps scope break down :)
No comments:
Post a Comment