SE Can't Code

A Tokyo based Software Engineer. Not System Engineer :(

適した抽象化.

SICPで良い言葉があった。コードを書くときは常に意識しないといけないな、という言葉。

「われわれはプログラマとしてプログラムの根底にある抽象を見つけ、より強力な抽象化ができるよう、その上に構成し一般化するよう努めなければならない。これはプログラムを可能な限り抽象的に書くべしというのではない。経験をつんだプログラマは自分の仕事に適した抽象のレベルを選ぶことを知っている。」


改めて読んでみると凄くこの考えの大切さを実感する。普段仕事でコードを書いている時、特にリファクタリングをしている時なんか、行き過ぎた抽象化に陥ることが多い。勿論抽象化をすることは、DRYという観点でもプログラムを書くことにおいて大切ではあるが、むやみやたらに抽象化してしまうと可読性が欠落してしまう可能性がある。高階手続きなどの抽象化なんかは、プログラムを書いていると自然と身に付く技能だけれど、この調度良い抽象化の境界線を見極めるのは非常に難しい。まぁ少なくとも数日後の自分がコードを読んだ時に、理解することに時間がかかり過ぎてしまう場合にそれは行き過ぎた抽象化と言えるのだろう。抽象化は読み解く難易度が上がってしまうため、気をつけなければいけないポイントだと改めて思った。大事なことは、抽象化を使って考えることで、新しい状況になった時にすぐに応用できるかどうか、なのだろう。


自分本位にコードを書き過ぎなんだろうな、きっと。

Remove all ads