抽象度統一の原則(SLA原則, SLAP)
1. 原則
同じメソッドに属するコードの抽象化レベルは統一せよ
- コードの抽象度は統一せよ
- 同じメソッド内で高水準の処理と低水準の処理が混在してはいけない
- 実装の詳細をPublicメソッドに書いてはいけない
2. 根拠
可読性の向上
- メソッド/関数内で抽象化レベルが変化するコードは認知負荷が高く、読みにくい
- 抽象化レベルが揃ったコードは読みやすい
保守性の向上
- 抽象度統一の原則に従った理想的な実装になっている場合、具体的な実装は下位メソッド/関数に隠蔽されることになる
- 具体的な処理がメソッド/関数として独立していることで修正時の修正範囲を正確に見積もることが可能になる
3. 指針
抽象度に応じてメソッドを分割せよ
- Publicメソッド/公開関数には具体的な処理を書かない
- Publicメソッド/公開関数は具体的な処理を実装したPrivateメソッド/非公開関数の呼び出しのみを行う
- 呼び出し階層が深くなる場合もそれぞれの階層の抽象度を統一する
4. 注意事項
- 関数名と処理内容の乖離に注意が必要
参考資料
- プリンシプルオブプログラミング p48
- 実装パターン
- プロダクティブ・プログラマ
- リファクタリング
- 汝、SLAPを愛せよ。 - Qiita
- SLAPを覚えてリファクタリングをしよう - きり丸の技術日記
- コーディング原則の一つSLAP – 株式会社シーポイントラボ | 浜松のシステム・RTK-GNSS開発