消費税率変更のように、「将来変わる可能性のある数値」がコード内に複数含まれている場合、修正に時間がかかってしまいます。メンテナンスを楽にするコーディングのコツとは何でしょうか。
書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍『ExcelVBAを実務で使い倒す技術』からの抜粋です。
ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。
※編集部注:前回記事「エラーは実は『情報の宝庫』、VBAに生かす方法とは」はこちら
以下は、金額に対して消費税額を算出するコードです。
消費税率が、8%から変更の可能性があることが十分想定できるとすると、このコードはどのように書いておくことが望ましいでしょうか?
今のままでは「0.08」という数値が5箇所に存在しているから、5箇所を変更しなければならなくなるわけです。
例えば、次のようにFor文を使って繰り返し処理とする方法があるでしょう。
別の方法として、次のように消費税率を変数に置き換えたコードを想定することもあるかもしれません。
繰り返しを使ったコードと変数を使ったコード、どちらが変化に強いと思いますか?
この場合、繰り返しを使ったコードの方が、変化に強いコードだと言えるのはわかりますか?
というのも、後者は消費税率の変化には、1箇所の変更で対応できますが、次のような変化には1箇所の変更で対応できませんね。
一方で、繰り返しを使ったコードであれば、いずれの場合も1行の変更で変化に対応ができます。
ポイントは、同じことを何度も書かないということです。
.Range("B2").Value = .Range("A2").Value * rateTax .Range("B3").Value = .Range("A3").Value * rateTax
この2行は違うところがあるよ、と思うかもしれませんが、異なるのはセルの行数を示す2箇所だけ。他の箇所は全て同じということに注目すべきです。
ですから、その「同じ部分」をなるべく見つけ出し、なるべく1つにまとめるのです。そうすれば、まとめた箇所に関しての変更は1箇所のみの変更で済むようになります。
コーディングを進める際に、この思考を働かせるかどうかで、未来の楽さ加減に天と地の差が出てきます。
Copyright © ITmedia, Inc. All Rights Reserved.