It violates that principle but on the other hand it embraces the RY (Repeat Yourself) principle which has its own set of pros and cons, the major pros being simplicity of implementation and reduced risk of retroactive breakage. I’ve found this principle very useful also in software design. The DRY principle gets all the attention but we tend to ignore the question of when it’s actually better to repeat oneself.