Is reliance on transitive effects indicative of a poor design?


If system A sends a (command) message to system B, can system A rely on side-effects that the command handler performs against a 3rd system, system C?

Instintively, it seems like a bad practice to me. Yet it’s prelevant at my organisation - but I’m having trouble articularing to my co-workers why it’s bad.

I guess my rationale is that you should only rely on what is contractually promised (whether messaging or web-services, it kind of doesn’t matter).

Hi @Eddie_Stanley,

Welcome to the Particular discussion community.

It seems like a bad practice to me too. Assuming that B will interact with C is considering B a white box. The assumption is based on B implementation and not on B contract, which is risky business. B implementation can change anytime without changing the public contract but breaking the assumption.


1 Like