A property that everything reads and only the class writes had needed a private property, a public getter and no setter — three declarations for one idea. This…
A static helper called from forty places, and a test that needed it to return something different. Keeping the static as a delegating shim is what makes a…
A value object rejecting an invalid input with a message that named the type rather than the problem. One check per condition and a named constructor per failure…
An enum implementing both a presentation interface and a domain one, which is two responsibilities agreeing to share a file. The test that settled it was asking which…
A minor version of a library renamed a protected hook method, and the attribute turned a silent behaviour change into a fatal error at load. Calling it internal…
8.3 relaxed __clone and did nothing for the case everybody has, which is a wither on a readonly class. The spread of get_object_vars into named arguments contains the…
A Subscription class of nine hundred lines, holding the plan, the billing schedule and the usage record, loaded in full to check whether a feature was enabled. The…