Book Review: The Nature of Software Development

TL;DR: I loved the book. Go read it. [https://pragprog.com/book/rjnsd/the] -------------------------------------------------------------------------------- Over the past few years working with a team of XP devs who've been using the XP practices for well over a decade each has taught me a lot. These amazing colleagues…

µObject Poker: Scoring a Hand

I found I'm not a huge fan of the video. I don't tend to put a lot of time and effort into each post; it's an opportunity for me to share research and experimentation with the world; as well as give myself a searchable…

M:TG Game - Event Bussing

I've been pondering how to do some µObjects in a more intelligent system for a while. I'm going to try to use Magic: The Gathering for this. Much like the poke one; the idea here is to explore µObjects and how they can be applied in…

µObjects: Fluent Types

I expect us all to be aware of the anti-pattern Primitive Obsession. If not - there [http://wiki.c2.com/?PrimitiveObsession] are [https://refactoring.guru/smells/primitive-obsession] some [http://blog.thecodewhisperer.com/permalink/primitive-obsession-obsession] quick [http://blog.ploeh.dk/2011/05/25/DesignSmellPrimitiveObsession/] resources [https://lostechies.com/jimmybogard/2007/12/…

µObjects: Being Nonredundant

Redundant code is code that changes at the same time for the same reason. Part of object oriented programming is limiting change to a single place. If it changes, it should change in one place. How do µObjects encourage being nonredundant? By focusing on doing one thing. Let's…

µObjects: Being Assertive

Being assertive is about being self-responsbile. Being assertive is about an object being lazy. This also has the object doing all behaviors for the state it holds. It follows from encapsulation that an object will be assertive. How do µObjects encourage this? µObjects do a single thing, and you need…

µObjects: Being Encapsulated

Encapsulation for objects is, IMO, how well the data is hidden. Encapsulation is only acting via behavior from an object. Never getting data and doing something. A well encapsulated object is also a very cohesive object. These traits tend to enhance each other. µObjects encourage this. How do µObjects encourage…

µObjects: Being Loosely Coupled

Loose coupling is about how much a class knows about the objects it's using. The less a class knows about the components it is using; the better the decoupling. Or they are loosely coupled. How do µObjects fair with being loosely coupled? That's what I want…