「やば...前に書いた自分のコード、何書いてるか分からないんだけど...」
とりあえず動けばいいやでコードを書いてるからだよ。

まあ、5つのコツさえ覚えておけば『いつ見ても分かる』コードが書けるようになる
さて、じゃあ5つのコツを話していこうか。

プログラミングで分かるコードに変える5つのコツ

5つのコツを覚えておけば今の100倍は良いコードが書けるようになる。
しかもきれいに書ければ、他のプログラマーからも褒められる。

言い過ぎとかじゃなくてこれはマジ。
さて、その5つのコツをくわしく話していこうか。

  1. インデントをつける
  2. 命名規則をちゃんと決める
  3. 変数は意味のある名前をつける
  4. 1つの関数は30行以内におさめる
  5. コメントをなるべく書かない

#1- インデントをつける--コードの見にくさを解決

まず、インデントをつけること。
これは、どこまでがなんの処理なのか分かるようになるから。

簡単に言うと空白入れて見やすいようにしようってこと。

たとえば、下記のコード(VBA)を見て「なんかごちゃごちゃして見にくい」って思わないだろうか。

Private Sub WorkTimeAdjustment()
Dim start_work As Date
Dim start_break As Date
Dim end_break As Date
Dim end_work As Date
Dim i As Long
For i = 5 To 35
start_work = RoundUpMin(Cells(i, 2))
start_break = TruncationMin(Cells(i, 3))
end_break = RoundUpMin(Cells(i, 4))
end_work = TruncationMin(Cells(i, 5))        
If start_work = 0 Then
Cells(i, 6) = ""
Else
Cells(i, 6) = (start_break - start_work) + (end_work - end_break)
End If
Next i        
End Sub

ひかえめに言って分かりにくいよね。

ここでインデントをつけると下記のように見やすくなる。

Private Sub WorkTimeAdjustment()

    Dim start_work As Date
    Dim start_break As Date
    Dim end_break As Date
    Dim end_work As Date
    Dim i As Long
            
    For i = 5 To 35
        start_work = RoundUpMin(Cells(i, 2))
        start_break = TruncationMin(Cells(i, 3))
        end_break = RoundUpMin(Cells(i, 4))
        end_work = TruncationMin(Cells(i, 5))
        
        If start_work = 0 Then
            Cells(i, 6) = ""
        Else
            Cells(i, 6) = (start_break - start_work) + (end_work - end_break)
        End If
    Next i
        
End Sub

#2- 命名規則をちゃんと決める--種類分けをするため

次に、命名規則ってのをちゃんと決めておくこと。
コードを見たとき、すぐに変数や定数を見分けるため。

たとえば、Pythonのコードだと下記みたいな感じで、変数にはスネークケースってのを使ってる。

class Animal:

    def __init__(self, animal_name, animal_type, animal_bark):
        self.name = animal_name
        self.type = animal_type
        self.bark = animal_bark

    def animal_scream(self):
        result = '{}の動物で名前は{}、鳴き声は『{}』'.format(
            self.type,
            self.name,
            self.bark,
        )
        return result

命名規則一覧

命名規則名
書きかた書きかたの例
スネークケース
単語を『_』で区切るmy_name
チェインケース単語を『-』で区切るmy-name
ローワキャメルケース最初の単語だけ先頭文字を小文字、次の単語から大文字myName
アッパーキャメルケース最初の単語から先頭文字を大文字MyName

#3- 変数は意味のある名前をつける--コードを見て分かるから

変数や定数、名前がつくやつは意味のある名前をつけること。
その変数がどんな役割をする変数なのか分かるようにやすくするため。

たとえば、さっき見せたPythonのコードをもう一回見ていこうか。

class Animal:

    def __init__(self, animal_name, animal_type, animal_bark):
        self.name = animal_name
        self.type = animal_type
        self.bark = animal_bark

    def animal_bark(self):
        result = '{}の動物で名前は{}、鳴き声は『{}』'.format(
            self.type,
            self.name,
            self.bark,
        )
        return result

パッと見で動物のことについて書いてるかが分かるよね。

もし修正するときもどこを修正したいか分かるからかなり便利になるってこと。

#4- 1つの関数は30行以内におさめる--パッと見で理解するため

1つの関数、クラスは30行以内におさめるようにすること。
短くコードを書いて、少ない時間でどこになんのコードを書いてるか分かるようにするため。

まあ、30行以上だと複雑なコードになっちゃうから、修正するときもむずかしいんだよね。
時間の無駄をなくすためにも30行以内に書くことは必須。

30行以上になっちゃう場合は、処理を細かく分けれないか確認すること。

#5- コメントをなるべく書かない--コードを見れば理解できるように

コメントをなるべく書かないこと、まあ最小限にすること。

さっきまで話してたコツを使えば、コードを見て大体の処理が分かるようになるから。
コメントを書くなら『どんな考えでそのコードを書いたのか』を書くといい。

またまたさっきのPythonコードを見ていこうか。
わざわざコメントをいれる必要はないよね、むしろコメントがあったら見にくくなる。

class Animal:

    def __init__(self, animal_name, animal_type, animal_bark):
        self.name = animal_name
        self.type = animal_type
        self.bark = animal_bark

    def animal_bark(self):
        result = '{}の動物で名前は{}、鳴き声は『{}』'.format(
            self.type,
            self.name,
            self.bark,
        )
        return result

分かるコードを書いてコードを使いまわそう

  • インデントをつける
  • 命名規則をちゃんと決める
  • 変数は意味のある名前をつける
  • 1つの関数は30行以内におさめる
  • コメントをなるべく書かない

分かるコードが書ければそのコードは必ず使いまわせる。
ってことは二度と同じコードを書かなくてすむ。

「なんか毎回同じコード書いてるな...」ってときにも確実に役立つから安心して。
まあ、同じコード書くめんどくささが消えて使いまわせるから一石二鳥だってこと。

人気記事【必読】"見やすく修正しやすいコード"につながる本『リーダブルコード』