Architecture & practice·Design, structure and tradeoffs
the method called save() also sent an email, and somebody found that out in production.
Principle of least astonishment
Also calledprinciple of least surprise, POLA
A component should behave the way most people reading its name would expect. Astonishment is a real cost, paid by every future reader who assumes the ordinary thing and is wrong. It is the strongest argument against a clever design that is defensible on paper: being right is not enough if every user of it has to be told, because you will not be there to tell them.