輝々凛々

ガンバるってことは、素晴らしい事だ。

抽象的すぎるプログラムは悪だ

プログラムは、目的を達成するための道具で、具体的なものだ。

そこにピカソのような抽象的なプログラムは必要ない。

いや、ピカソというと語弊があるな。

抽象的を履き違えた「曖昧な」プログラムは必要ない、だ。

Do()

たとえば、よく見かけるのだけど、「Do()」という関数。抽象的を通り越して、中身を想像できないという意味で、かなり曖昧だ。まったく理解できない。中身を想像させたくない理由でもあるのか?

汎用的にする目的で抽象化するのであれば「Build()」とか「Compile()」とか「Read()」とか「Write()」とか「Fetch()」とかまでの抽象化で留めておくべきだ。

デバッグしにくい

想像できないほどの抽象化は、中身を想像できないだけでなく、デバッグもしにくい。だいたい何をやっているかわからないし、バグがあるであろう関数を見つけにくくなる。

ファイル読み込みに何らかのバグがあったとする(32ビット長のファイルしか読めないとか、日本語パスを読めないとか)。このとき、「Read()」のような関数があれば、すぐに検索して目的の関数を見つけられるし、関数名から関数の仕様を想像する事もできる。だけど「Do()」じゃわからない。

もちろん「fread()」や「ReadFile()」とかをキーに検索して関数を見つけられるかもしれないので、この例は不適切であるが。

あと「コメントがあればいい」というかもしれないが、コメントはなるべく書かない方がいい。重要なのはコメントを書く事ではなくて、わかりやすいコードを書く事。その上で、わかりにくい所やトリッキーな所、全体的な構造についてはコメントやドキュメンテーションすればいい。プログラマの時間は限りなく限られているのだ。残業しているうちはダメなんだ。

結論

ま、そんなわけで、結論。

美しい抽象化は何か、それを問え。

関連記事

ツッコミの投稿


(ツッコミ非公開の場合はチェック)