😼

抽象化レベル(抽象度)を意識してコードを綺麗にしよう

2023/01/01に公開

抽象化レベルの英名

Level of abstraction

抽象化レベルとは

コードの抽象化の度合い
(抽象度が高い/低い)

どういう時に使うの

メソッドを分割するかどうかを決める際の、1つの指標

分割した方がいい例

抽象度が混在している。
抽象度が高い「顔を洗う」と、抽象度が低い「ホワイトニング用の歯磨き粉をつける」などが混在している。

function 朝の支度をする() {
	洗面所へ行く;
	蛇口をひねる;
	ホワイトニング用の歯磨き粉をつける;
	歯ブラシで歯を磨く;
	蛇口をとじる;
	洗面所へ行く;
	蛇口をひねる;
	顔を洗ってふわふわのタオルで拭く;
	蛇口をとじる;
	キッチンへ向かう;
	レシピの確認;
	調理をする;
	食べる;
}

分割された例。

抽象度が混在していない。

"朝の支度をする()"メソッドをパッと見れば、何をしているかすぐわかると思います。

この「パッと見て理解できる」が、大切なのかなと思っています!

function 朝の支度をする() {
	歯を磨く();
	顔を洗う();
	朝ごはんを食べる()}

function 歯を磨く() {
	洗面所へ行く;
	蛇口をひねる;
	ホワイトニング用の歯磨き粉をつける;
	歯ブラシで歯を磨く;
	蛇口をとじる;
}

function 顔を洗う() {
	洗面所へ行く;
	蛇口をひねる;
	顔を洗ってふわふわのタオルで拭く;
	蛇口をとじる;
}

function 朝ごはんを食べる() {
	キッチンへ向かう;
	レシピの確認;
	調理をする;
	食べる;
}

抽象度を揃えるための判断基準は?

WIP

まとめ

メソッドを分割するか悩んだときに、抽象度を確認してみる。
そして、抽象化レベル(抽象度)が揃っていない場合、分割して揃える。

参照

参考にさせていただいたページは下記となります。
https://zenn.dev/dove/articles/2f0ec6786dba10#抽象レベルをそろえる

https://cpoint-lab.co.jp/article/201902/8162/

Discussion