どうも!リョクちゃです。
今回は、筆者がコードを書く際に気を付けていること5項目を紹介していきます。
ちなみに前回はこちら、
例えば、下のようなコードがそれぞれ同じクラス内にあったとします。
それぞれボタンを押すことで、入力値の大小を判定する処理が書かれています。
判定方法は各ボタン全く同じです。
こういった場合は、新たにメソッドを作成し、1つにまとめるほうが
コードも見やすくなるうえに作業効率も上がるので
同じような処理を書いている箇所については1つにまとめることができないか
工夫するように筆者はしています。
上のコードをまとめると、下のようになります。
エディタ上だと、
1 2 3 4 5 6 7 8 9 10 11 12 |
Private Sub JudgeNum(Byval Value As Integer) Select Case Value Case > 10 MessageBox.Show("大きい") Case < 10 MessageBox.Show("小さい") Case Else MessageBox.Show("同じ") End Select End Sub |
判定する処理を1つの関数にまとめています。
目次
② 何の処理をしているかわかりやすいようにコメントを残す
最近ではコメントを残し過ぎるのもよくない傾向にありますが、
といってもコメントは重要です。
本来は誰が見てもわかりやすくがベストなのですが、
書き手によってコード思想や概念が違うので難しさもあります。
そこで必要最低限わかりやすいコメントを残す方がよいと筆者はわかっています。
ただ、コメントもだらだら残すのではなく、簡潔に残すのがいいでしょう。
コメントの残し方に関するイメージを下図に示します。
③ 変数名やメソッド名は誰が見てもわかりやすいように付ける
他の人のコードを見てもわかりやすいようにするのが筆者はよいと考えています。
そのため、変数名やメソッド名もわかりやすくしましょう。
これ以外と、わかりづらい名前や自分にしかわからない略称で名前をつけてる方もおります。
実際に筆者に周りにもいて、話を聞いてみると、
「みんな知っているかと思っていました、それで略称にして短くしました」
たしかに、短くするにはいいのですが変数名などで短くするのは
処理の後に考えるのがいいのかなと思ってます。
基本的に自分が知っていることは他人も知っていて当たり前ではなく、
誰も知らないからわかりやすくするを軸に考えてもらえればなと思います。
例を下に、
IDU = Indoor Unit (室内機)
GetIDU_Info → GetInDoorUnit_Info
MSG_HW → MSG_HelloWorld
などのように、略称でも一意に定まるような略称ならいいですが、
どうともとれるような解釈が複数に分かれる場合は、
なるべく略さずに付けてあげるのを推奨します。
④ クラスやメソッドで同名の変数は使用しない
例えば、こんな場合
1 2 3 4 5 6 7 |
Public Class TestZip Private a As Integer = 1 Private Sub Main() Dim a As Integer = 0 End Sub Ens Class |
いずれの変数も最初はどの値を持っているかわかりますが、
様々な処理を行っていく上で変数の中身が変わっていく場合、
同名の変数を使っているとどの変数に何の値が入っているかわからなくなってしまいます。
これを避けるうえで、なるべくクラスやメソッドで同名の変数を使わないようにしましょう。
全体に持たせたいときは、
クラスでメソッドで完結できる場合はメソッドのみでわけて使うように心掛けましょう。
⑤ 1つのメソッドにIf文は、5~6階層まで
これも書く人によってもっと浅い層がよかったりとありますが、
筆者はだいたい5~6階層としています。
ちなみにこの階層とは……
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Public Class ClsIf Private Sub Main() Dim a, b, c, d, e, f As Integer If a = 1 Then ' 処理1 If b = 1 Then ' 処理2 If c = 1 Then ' 処理3 If d = 1 Then ' 処理4 If e = 1 Then ' 処理5 If f = 0 Then ' 処理6 End If End If End If End If End If End If End Sub End Class |
If文による書き方を階段に見えることから階層と呼んでいる。
別として、ネストと呼ばれる、たぶんこちらの方が一般的です。
階層が深くなると、
- 視覚的に処理の構造が把握しづらい。
- 書き手の脳の負荷が大きい。
- 書き直したくても被害が大きくなる可能性大。
といった問題が挙げられます。
上述で載せたコード例を見てもわかるように階層が深くなるにつれ、
どんどんコードは複雑化し見づらくなってきます。
実際5~6階層でも深いのですが、書き始めはこの程度の深さまでなら許容できると思います。
だんだんと慣れてきたら様々な書き方を駆使し、階層を浅くするようにしていき、
ある程度の域に達した段階で4~5階層までにとどめるようにしていきましょう。
階層が深くなりそうなら、条件を見直してまとめることができる条件であるなら、
論理演算しを駆使して1つの条件式にまとめるなど考えるようにしましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Public Class ClsIf Private Sub Main() Dim a, b, c, d, e, f As Integer If a = 1 And b = 1 Then ' 処理1 If c = 1 And d = 1 Or e = 1 Then ' 処理2 If f = 0 Then ' 処理3 End If End If End If End Sub End Class |
条件をまとめようとして、逆に条件が複雑化してしまったという場合もあるので、
ケースバイケース、状況に応じて分けて考えられるようにしていきましょう。
まとめ
筆者がこれまでのプログラミング経験で気を付けておきたいことの解説をしていきました。
この他にもまだまだ気を付けねばいけないこといっぱいありますが、
中でも特に気を付けているものベスト5でした。
一緒にVB.Netを極めていきましょう。
最後までご覧いただきありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。