« 日本のソフトウェアエンジニアは不幸か ? | トップページ | 見積もりってよく外れます…というかまず当りません »

コピペコーディング

コードレビューや、不具合調査で人のコードをみるたびに思うんですが、コピーペーストのコーディングが非常に多くて見苦しいです。なんで、同じような記述を何度も繰り返しているのにルーチン化(関数化)しないんでしょうか?

似たような処理だからコピペして変数の部分だけ 変更すればいいという安直なコーディングはデメリットのほうが大きいです。

具体的には、次のようなルーチン化のメリットが失われます。

<ルーチン化のメリット>

  • 複雑さを減らせる

  ルーチン化の最大の意義は、プログラムの複雑さを減らすことができる点です。

  話題がやや飛躍しますが、与えられた課題からいきなり具体的なことを考えるのは不可能に近いです。
  ですから、与えられた課題の範囲を限定して考えること(細分化)により、そのときに設計を行っている範囲に無関係なことを考慮せず済むようにする必要があります。

  具体的には、関連する処理をルーチン化することで範囲を限定していきます。
  これにより十分細分化ができれば、各ルーチン内では考えることを減らすことができ、余計なことを考えなくてすむようにできます。

  自分でコーディングする場合、ルーチン化しなくても 細分化は可能ですが、
  他人のコードを見る場合、ルーチン化による細分化が行われていないと解析が非常に困難になります。

  • 変更漏れ

  改修が発生した場合に、修正する箇所が一箇所ですみます。

  これについては逆にルーチン化した箇所を改修するのは、そこが複数箇所から呼び出されているため怖い  (だからルーチン化したくない)という人がいます。
  これは甚だしい勘違いです。
  改修を実施する場合 その改修がどの範囲まで影響を及ぼすのかを考えるのが当たり前で、改修が必要箇所はすべて改修する必要があります。
  仮にルーチン化していない場合、改修漏れに気がつけない可能性が高くなります。
  さらに、コピペコーディングした箇所が枝分かれした日にはお手上げ状態になります。

  • 変更の及ぶ範囲を限定する

  変更される可能性のある部分をルーチンの中に分離することで変更の及ぶ範囲を限定します。

コーディングする人にとって コピペコーディングが楽であることは認めますが、後々のメンテナンスのことをもう少し考えてほしいものです。

|

« 日本のソフトウェアエンジニアは不幸か ? | トップページ | 見積もりってよく外れます…というかまず当りません »

「ソフトウェア開発」カテゴリの記事

コメント

はじめまして(^^)

たしかに、コピペを繰り返すのは楽ですが、
あとでちょっとした仕様変更なんてあった
日にゃあ二度手間かかりまくりですね・・・。

僕はまだプログラマ1年生のペーペーですが、
関数化の大切さをひしひしと感じている
今日このごろです(^^;

投稿: masa | 2005年11月10日 (木) 23時30分

はじめまして
コメントありがとうございます。

コピペに限らず、コーディングは手を抜こうと思えばいくらでも手を抜けてしまいます。
10年以上のベテランプログラマでも、コピペしまくる方がいるぐらいですし。

とにかく「動けばいいや」というの考えでコーディングする方にこの手抜き傾向が強いです。

手抜きコーディングのデメリットに気づいて 手抜きスタイルを変えようすることが必要なのですが、
そのためにも、まずは、どういうことがマズイのか に 気づけること が大切だと思います。

投稿: ブームパンチ | 2005年11月11日 (金) 01時00分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/100819/6935226

この記事へのトラックバック一覧です: コピペコーディング:

« 日本のソフトウェアエンジニアは不幸か ? | トップページ | 見積もりってよく外れます…というかまず当りません »