Выделите аспекты приложения , которые могут изменяться, и отделите их от тех, которые всегда остаются постоянными.

Иначе говоря, если некий аспект кода изменяется (допустим, с введением новых требований), то его необходимо отделить от аспектов, которые остаются неизменными.

Другая формулировка того же принципа: выделите переменные составляющие, и инкапсулируйте их, чтобы позднее их можно было изменять или расширять без воздействия на постоянные составляющие.