プリンシプルプログラミング プログラミング

【POP8】SLAPの原則

はじめに

この記事は「プリンシプルオブプログラミング 3年目までに身につけたい一生役立つ101の原理原則」を読んだ際に記した議事録です。

著作権の関係により、詳細には書きません。詳しい詳細を知りたい方はぜひ本書を読んでみてください。

プリンシプルオブプログラミングをPOPと訳します。

 

SLAP・・・Single Level of Abstraction Principle

抽象度合いの統一

What : コードの抽象度レベルを合わせる

コードを書く時に「高いレベルの抽象化概念」と「低いレベルの抽象化概念」に分離するようにします。その際、2階層にするのではなく、抽象レベルに応じて階層を増やします。その結果、コードは「優れた書籍」と化します。

抽象レベルとは?

例えば「バナナ」があります。バナナを分類する際に、「高い抽象レベル」で表現すると食べ物、「低い抽象レベル」で表現すると、「黄色くて細長い果物」となります。対象物を表現するときに、どれだけ、抽象的に表現するか?ということです。

Why : コードに「要約性」「閲覧性」が生まれる

抽象レベルが揃ったコードは「要約性」と「閲覧性」を同時に満たすことができます。つまり、「関数の一覧が書籍の目次」のような役割を果たし、要約性を持つようになります。また、抽象レベルが関数毎に分割されており、それらは小さなコードの塊になり「閲覧性」が良くなります。

食べ物で例えるといろんな食べ物があり、それらが「果物」や「野菜」「肉」に分けられており、さらに野菜が「根菜類」「果菜類」と言ったように分けられているイメージです。適当に野菜が乱立しているよりも、このように分類されていることで「要約性」をもち「閲覧性」が高くなります。

Haw : 関数を構造化

とは言っても、相手はコードです。モノであれば簡単に分けることができますが、機能となってくれば話は別です。

そのためには関数を「構造化」します。こうすると各関数は、自身よりも一段低いレベルの関数を呼び出す処理が中心となります。このように、他の関数を呼び出すコードで構成された関数を「複合関数」と言います。

複合関数を作成する際は極力小さく(細かく)します。また複合関数において、関数を呼び出す際は同程度の抽象レベルを呼び出すようにします。一つの関数内で不揃いな関数を呼び出してはいけません。

発展

SLAPの適用範囲

関数だけでなく、モジュールなどにも適用されます。優れたソフトウェア設計においては概念が複数のレベルに分類され、それらは異なる入れ物に入ります。

SLAPの手順

文章を書くときの手順が参考になります。

「コンテンツ作成の作業」と「コンテンツをわかりやすく伝えるための構成を考えるための作業」を別な作業にすることです。

詰まるところ、具体的に処理を書く作業、抽象化レベルを揃えるための作業は全く別物として考えるということです。構成を考えながら、具体的な処理を書いてはいけません。

終わりに

この記事ではプリンシプルオブプログラミング 3年目までに身につけたい一生役立つ101の原理原則の議事録を自分用に記しています。

この記事ではカバーしきれていない部分も多いので、是非本書を手にとって読んでみてください。

次回、「【POP9】OCPの原則」です。ぜひ、次の記事も読んでみてください。

  • この記事を書いた人
  • 最新記事

ミッチー

小中高と野球漬けの毎日 ▶︎ 大学時に自分が何もできないことに気づき、プログラミング学習開始 ▶︎ PCは疎かったがめげずに継続 ▶︎ 受託で案件を頂きながら、オーダースーツ事業に、通販事業にも参戦 ▶︎ 東証一部Web系自社開発企業にエンジニアとして内定。

-プリンシプルプログラミング, プログラミング

© 2022 オミチャンネル Powered by AFFINGER5