😼
抽象化レベル(抽象度)を意識してコードを綺麗にしよう
抽象化レベルの英名
Level of abstraction
抽象化レベルとは
コードの抽象化の度合い
(抽象度が高い/低い)
どういう時に使うの
メソッドを分割するかどうかを決める際の、1つの指標
例
分割した方がいい例
抽象度が混在している。
抽象度が高い「顔を洗う」と、抽象度が低い「ホワイトニング用の歯磨き粉をつける」などが混在している。
function 朝の支度をする() {
洗面所へ行く;
蛇口をひねる;
ホワイトニング用の歯磨き粉をつける;
歯ブラシで歯を磨く;
蛇口をとじる;
洗面所へ行く;
蛇口をひねる;
顔を洗ってふわふわのタオルで拭く;
蛇口をとじる;
キッチンへ向かう;
レシピの確認;
調理をする;
食べる;
}
分割された例。
抽象度が混在していない。
"朝の支度をする()"メソッドをパッと見れば、何をしているかすぐわかると思います。
この「パッと見て理解できる」が、大切なのかなと思っています!
function 朝の支度をする() {
歯を磨く();
顔を洗う();
朝ごはんを食べる();
}
function 歯を磨く() {
洗面所へ行く;
蛇口をひねる;
ホワイトニング用の歯磨き粉をつける;
歯ブラシで歯を磨く;
蛇口をとじる;
}
function 顔を洗う() {
洗面所へ行く;
蛇口をひねる;
顔を洗ってふわふわのタオルで拭く;
蛇口をとじる;
}
function 朝ごはんを食べる() {
キッチンへ向かう;
レシピの確認;
調理をする;
食べる;
}
抽象度を揃えるための判断基準は?
WIP
まとめ
メソッドを分割するか悩んだときに、抽象度を確認してみる。
そして、抽象化レベル(抽象度)が揃っていない場合、分割して揃える。
参照
参考にさせていただいたページは下記となります。
Discussion