25
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

マンガでわかる切り貼りプログラミングアンチパターン

Posted at

C1535D3D-BCB4-4023-83CA-20586CA1C0C4.png
http://wiki.c2.com/?CopyAndPasteProgramming

コピーペースト機能を使って書かれたコードに関するアンチパターンです。一般にコピペプログラミングは良くないと言われますが、勘違いしてはいけないのが、このアンチパターンは、コピーペーストする行為そのものを禁止しているわけではないということです。コピペプログラミング禁止の真意は、DRY 原則 と同じです。

既存のプログラムとわずかに仕様の異なるプログラムが必要なとき、あるいは、すでに作られたものと同じ処理が別の箇所にも必要になったとき、安易にコピーして部分修正で仕事を進めてしまうと、非常に無駄の多いプロダクトが出来上がります。

プログラムは、たんに動けばいいわけではありません。冗長で重複が多いコード群は、その量的な無駄だけでも、メンテナンスを困難にします。コードの読みやすさはスクロール量に驚くほど反比例します。

しかも、もしコピーされたコードにバグが含まれていると、一箇所直すだけでは済まなくなります。コピー先を同じように修正すると、その場での書き換え内容と矛盾して、新たなバグを生むこともあります。

手続きをコピーするとき、せっかく何らかの意図で再利用されるものなのに、名前を与えるチャンスをみすみす逃してしまうことも問題です。どんなに優秀なプログラマーでも、いちいちコメントと手続きを読むのは苦痛です。適切なクラス名やメソッド名ほど、コードの可読性に貢献するものはありません。

コードを再利用するときは、いったんはコピペしても良い (初回単体テストをクリアするためだけ、などの目的で) けれど、かならずその意味を理解し、意味のある名前を与えて、共通化・一般化されたかたちにリファクタリングしましょう。

25
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?