Single level of abstraction principal
プログラマが知っておくべき原則のようです。
あるレベルの抽象概念を設計/実装するときに、関数なり階層(クラス)ごとにレベルを統一するようにしましょう。ということのようです。
なんだか難しく表現していますけど当たり前のことです。
例えばDBへのアクセスとビジネスロジックは分離して準備しますよね。
ビジネスロジックと画面系、画面無しならコントローラーかもしれませんが分離しますよね。
スモールプロジェクトやライフサイクルの短い自分用のバッチのレベルではこれを無視することはよくありますが、基本原則は認識しておきたいものです。
この原則を理解しながらも下手くそなコードを書いちゃってるのは自覚してますので反省していきたいですが・・
そもそも今世の中にあふれるフレームワークの数々はどれもこの原則を前提としていますし、なんだったら生成するひな形や用意されたテンプレートはもうそうなっています。
一度気の向くままにこの原則を破ったお遊びアプリケーションでも作ってみればこの原則のありがたみがわかることでしょう。