During digging into eCommerce5 codebase and discussing ongoing impressions with my colleague, I just discovered a software design anti-pattern I called “Black Hole”.
As a workaround I declare a rule:
Any variables passed into constructor then should be available through a read-only property.
Honestly I haven’t invented the explanation yet.
You know, I found similar question on stack overflow. http://stackoverflow.com/questions/10552156/should-variables-passed-into-constructor-be-available-as-properties
It turns out I was somehow right.
Mark Seeman tends to agree with me: http://blog.ploeh.dk/2014/05/19/di-friendly-library.
However he agrees with you as well when saying this is optional.