【DRY原則】コピー&ペーストだけではない二重化の罠2選

dry-principle
DRY原則

Don’t Repeat Yourself

繰り返すな

同じことは同じ場所に、ただひとつだけ存在すべき。二重化をしない。

目次

どんなときに使える?

分かりやすい例:コピー&ペーストプログラミング

ベテランさん

コピペするなぁーーーーーーーーーー!

真っ先にこれです。コピペ=コピー&ペースト。

コーディングする。おなじようなコードがこっちにもある。コピーしてそのまま貼り付ける…

同じようなコードがそこらじゅうに溢れます。直すときは全部直さないといけない。メンテナンスがたいへん。

OAOO原則

コピー&ペーストプログラミング禁止は、OAOO原則とも呼ばれます。

OAOO:Once And Only Once 一度だけ、たった一度だけ

同じコードは二回以上書くな、ということです。

二重化はコピペだけではない

名著「達人プログラマー」では、二重化が発生するパターンとして以下をあげています。

二重化のパターン
  • コードの二重化
  • ドキュメントの二重化
  • 開発者間の二重化

このうち、コードの二重化は、コピー&ペーストプログラミングの話です。

やっかいなのは「ドキュメントの二重化」と「開発者間の二重化」です。

二重化の罠(1)ドキュメントの二重化

コードとコメント

コードとコメントの二重化、の話です。

「プログラムコード内にコメントを書く」のは大事ですが、プログラムと全く同じことをコメントに書く人がいます。

// indexに1を足す
index = index + 1;
ベテランさん

処理と同じことをコメントに書くなぁーーーー!

それでも内容あっていればまだよいです。

プログラム改修を重ねるうちに、やってることとコメント違うんだけど、が起こります。

// indexに1を足す
index = index + 2;

これがやっかい。特に日本人な我々は、どうしてもコメントに目がいき、ミスリードを誘うのです。ここは前と変わっていないなと。。

コメントは必ず見直す(もしくはいらない)

プログラムを改修する際は、かならずコメントも見直してください。

レビューアもチェックが必要です。コードを説明するだけのコメントなら消したほうがいいです

二重化の罠(2)開発者間の二重化

同じ機能を複数人が開発

複数の機能で、同じような処理が必要になる場合があります。特に、通信やDBアクセスといった、低レイヤーの処理は、どの機能も使うことが多いでしょう。

こういった共通的な処理を、複数の異なるプログラマーが開発してしまうといったことが度々起こります。

これが開発者間の二重化です。(そしてたいていそれは、同じ処理と思えないほど中身が違う)

設計から見直そう

これは、設計から見直すべき問題です。このような二重化に遭遇したら、すみやかに設計にフィードバックしましょう。

また、コンウェイの法則に則って、チーム構成を見直すのも有効です。

DRYの反対はWET

DRY(Don’t Repeat Yourself)の反対の概念として、WETがあります。

  • WET(Write Everything Twice)毎回だぶって書く

DRYの反対でWET。まあ、そういいたかっただけだろう、感はありますが。

コピー&ペーストプログラミングしている人に「君のそのコードはWETだねぇ」と…いや余計なことは言わないほうがよいでしょう。

まとめ

二重化の問題は、あとで取り返そうと思っても、どうにもならない問題になりがちです。

大量の不毛なコピープログラム、という負の資産を生み出します。

問題に気付いた時点で、早め早めに手を打ちましょう

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次