初心者にありがちなコーディングに関して

読みづらいコード

プログラミングを勉強して、プロダクトの内容も決まった!
早速コーディングするべし!
と思ったそこのあなた。

そのコードは読みづらいコードになっていませんか?
エンジニアになるのであれば、読みやすいコードをかけるエンジニアになりましょう。
先日Twitterでこんなツイートを拝見しました。

「わかりやすく美しいコードは現場であまり求められません。」

…いや、そんなことはないです。
他のエンジニアが汚いコードを見たときにとてつもなくわかりづらかった場合、そのコードを理解するのに余計な工数がかかってしまいます。
本人にとってもチームにとっても非常にマイナスです。

例えば、pythonで以下のようなコードがあったとします。

import random
aa = random.randint(1,10)
def hoge(aa):
  if aa == 1:
    out = '1です'
  elif aa == 2:
    out = '2です'
  elif aa == 3:
    out = '3です'
  elif aa == 4:
    out = '4です'
  else:
    out  = '1~4ではありませんでした'
  print(out)
hoge(aa)

コード内容は物凄く簡単ですが、このコードに直す箇所がたくさんあります。

直すべきポイント

1つ目は行間です。

あからさまにくっつけてみましたが、行間は大事です。
行間をあけすぎるのは逆に読みづらいですが、関数の間だったり、次の行から違うロジックを行う場合などは行間を開けるとわかりやすいと思います。

2つ目に、変数名

これだけ簡単なコードであればパッとわかりますが、少し複雑になってくると途端にわからなくなってきます。
例のコードですが、例とはいえわかりやすい変数名にしましょう。
aaはrandom_num、outはresultとか。
変数名は一目見てこの値が入っているんだとわかるような名前がベストです!

続いての3つ目は、関数名と引数名です。

hogeってなんぞや。
よくサンプルで見かけますが、サンプルだけに留めておいてください。
本当にわからなくなります。(周りが困るやつ!)
今回でいえば、check_num(num)とかがシンプルだと思います。

読みやすいコード

上記を踏まえて直したコードがこちら。

import random


random_int = random.randint(1,10)

def check_num(num):
  """数値のチェック
  
  Arguments:
      num (int) -- 1-10までの間のランダムな整数
  
  Returns:
      result (str) -- 数値の確認結果
  """
  if num == 1:
    result = '1です'
  elif num == 2:
    result = '2です'
  elif num == 3:
    result = '3です'
  elif num == 4:
    result = '4です'
  else:
    result  = '1~4ではありませんでした'
  return result
check_num(random_int)

比較すると修正したコードの方がわかりやすいと思います。

一人で開発していると、自分が読めればいいと完結してしまいますが、コードは誰でも理解できるコードが良いコードとされています。
リーダブルコードという本は非常にオススメですよ。

良いコーディングの意識をしているとしていないとでは全く違ってきます。
コーディングをする際は誰でも理解できるようなコーディングを心がけましょう!