ソフト開発

効率の良いプログラム作成について

ご無沙汰です。最近、更新が滞っていましたONOCHIです。
さて、みなさんは、プログラムに限らず、ものをつくるとき効率というところで何にこだわって作っているでしょうか?
私がプログラムを作っていていつも考えていることを紹介したいと思います。
(あくまで私が考えているだけで、これが正解とは限りません。一個人の考え方として参考にしていただければと思います)

プログラムについての効率化

プログラムを作るうえで、効率化ということを考えた時、何が考えられるでしょうか?

  1. 作成したソフト(ツール)の使いやすさ
  2. プログラムの処理の速さ
  3. プログラムの内容の分かりやすさ(書き方・コメント)
  4. プログラムの流用のしやすさ(構造化)

などなど。。。

その中でも、私はいつも改造や修正が楽にできることを考えて作成しています。
何かバグが発生したときや、急遽機能改善が必要になったときなど、自分ができるだけ楽が出来るように考えて、上記3と4には気を付けています。

プログラムのコメント

プログラムにコメントはどのように入れているでしょうか?
中には、まったくコメントを入れない人もいるかもしれません。それは何かの制約がある場合もあるかもしれませんが、私は制約がなければどんどんコメントを入れるようにしています。

コメントの内容は個人の好みなので、自由だと思いますが、自分が後で見て分かりやすい記述にこだわっています。
特に簡潔に書く必要もなく、文章で書く場合もあると思います。そのほうが一言で書くより、後で悩むことが少ないと思います。

また、コードの追加や修正、削除は、誰が見ても分かるように日付と名前、変更内容をいつも同じフォーマットで記載するようにします。
(たとえば、// 内容 日付 種別 名前 というように)
そうすることで、変更履歴を確認したり、作成するときに検索が容易になります。

 (例)
   this.Form1.Left = 100;
         this.From1.Top = 100;
         // 動作を確認するためにメッセージを追加した。 2019.08.27 add. onochi.
         MessageBox.Show(“確認”);
        // — ここまで 2019.08.27 add.
        this.Label1.Text = “確認完了!””;.

この場合、検索する場合、”2019.08.27”で検索すれば、その日に修正したものがすべてわかります。

プログラムの書き方の工夫

これは、プログラムの構造化にも関係がありますが、見た目で流れが分かりやすい書き方に気を付けます。
同じ処理が何度もある場合は、その処理を関数やクラス化してしまうなど、1か所にまとめることでプログラムがシンプルになり分かりやすくなります。
また、修正時も1か所を修正するだけで良く、修正や改造時間の短縮につながります。

ただし、気を付けなければいけないことは、処理をまとめた時に、関数内でグローバル変数を使用すると、その関数内でどの変数を処理しているか分からなくなります。
そのため、関数内の処理を修正したときに思わぬ副作用が出てしまうことがあるため、しっかり引数を設定して、その関数が何の情報を受け取り、出力をしているかをはっきりさせる必要があります。

次に、コントロールのプロパティや配列などを一気に処理する場合、ループを使用することがあると思います。
これは、プログラムを短くして見やすくするために有効ですが、ここでもやり方によってはかえって見づらくなることがあります。

単純に、配列に値を入れていくような処理で見た目に流れがすぐに追っていけるような処理では役立ちます。
しかし、プログラムを短くすることにこだわりすぎて、複雑なループのネストをやりすぎると流れが追いづらくなり、結果として修正や改造に時間がかかってしまいます。
また、複雑なループを読み間違えて修正をした場合、バグが発生しやすく発見も困難になります。
プログラムを短くすることにこだわり、ループをどうするかということに時間をかけるより、べたに書いた方が分かりやすい場合もあります。

私が思うプログラムの書き方で気を付けることは

  • 流れが見た目に分かりやすい
  • 関数やクラスを使用してシンプルにまとめる
  • グローバル変数を多用しすぎない(特に関数内)
  • 複雑なループ処理をしない

他にもたくさんあると思いますが、私はこれが重要だと思います。

プログラムの流用のしやすさ

先ほどのプログラムの書き方にも関連しますが、作成したプログラムは自分の資産として流用しやすくしておけば次回も有効に利用できます。
よく使用する処理などは、クラスにしておき、いつでも使用できるように自分専用のライブラリとして残しておくと便利です。

また、クラス化した場合、しっかりコメントを入れておくことで別に説明書などをつくる必要もなく、新規にプログラムを作る際にかなりの時間短縮になります。
複雑な処理などでも、自分のノウハウとしてクラス化し、集めておくことで次からのプログラム作成が容易になり、ちょっとしたツールでは、自分専用ライブラリからかき集めることでほとんど完成してしまいます。

そのような構造にしておくことで、不具合発生時や機能拡張時など、クラスを修正することで、そのクラスを使用しているすべてのプログラムが修正され、2次災害によるバグも軽減されることになります。

  • 良く使用する処理や便利な処理はクラス化して自分専用ライブラリをつくる
  • コメントはしっかり記載して、説明書なしで流用できるようにしておく

最後に

私がプログラムを作成するうえで気を付けていることをまとめてみました。
これ以外にももっと重要なことがあるよ、といった意見もあると思いますので、その場合は教えていただけるとありがたいです。
ではでは。