# Single Responsibility Principle A code module should only ever have a single responsibility. The only thing that should have the potential to change a code module is a specification change (of that, limited, responsibility). This is similar to the unix philosophy that states that a utility should "do one thing and do it well"