🫠

コードの品質の重要性について

に公開
2025/01/19

経緯

2025年で社会人7年目になるエンジニアです。
数年前に転職をし、今勤めさせていただいている会社で人生初のコードレビュー受けました。
いくつもの指摘をいただき、自身のコード品質が悪いことを認識しました。
基礎中の基礎となりますが、その際の知見を共有しようと思います。
使用している言語はPythonになります。

そもそもコード品質上げるとメリットあるの?

品質と聞くだけで、作業が多くなりそうですよね。
ただコードの品質を上げることで、エンジニアのメリットは大きいです。

実際に体験するのは

  • コードを読む際の負担が減る
  • バグが減る
  • コード変更があった際、変更箇所が限定されている
    あたりだと思います。

主に可読性、安全性、保守性が上がります。

可読性

可読性が上がらないと、自身とレビュー者の作業時間が増えます。
私が嫌だったことは、別作業に取り掛かっている際に質問されるので、頭の切り替えが何度も必要となります。その為、取り掛かっている案件も効率的に進まないことが多いです。
レビュー者に時間を割いてもらうことが多くなると、心が痛くなります。またレビュー者の人件費を使用していることにもなるので、早急な改善をした方がよいと感じました。

コード例を下記に記しました。

# 悪い例
data = 8
admin = True

# 良い例
work_time = 8
is_admin = True

抽象的な名前は避けるのとbool型は変数名の先頭にisやhasをつけた方が分かりやすいです。初めて案件に参加した人が見た際に変数名で想像できるのがいいですね。私は前会社で慣習的につけている名前や変数名が抽象的だった為、注意を受けていました。今ですとChatGPTに聞けるので、ある程度案を出してもらうことをお勧めします。

後は関数を作る際は型ヒントとドキュメントをきちんと書きましょう。
コード例です。


def add_a_b(a:int, b:int) -> int:
    """
    aとbの足し算
    Args:
        a (int): 
        b (int): 

    Returns:
        int: a + b
    """
    return a+b

正直に言うと、上記関数であれば、説明はいらないと思います。ただ私の部署は部署替えでプログラム初心者が来ることがありました。その為、全ての関数に説明をつけていました。行数が多くなってしまうので、全てにつける必要性はないと思います。

後はVSCodeを使用している方であれば、拡張機能を使ってフォーマッター機能を使えば見栄えは綺麗になると思います。私はRuffという拡張機能を使っています。記事もいくつか出ているのでよければ調べてみて下さい。

https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff

安全性

バグが減ると修正コストが減ります。これにつきます。修正コストが減れば、効率性もよいですし、なにより信頼性が上がります。毎回バグを生み出しているとレビュー者からも「こいつのプログラムにはバグがあるから、注意深く見よう」と思われてしまいます。

改善案としては、2点あります。1つがテストコードの作成です。ですが、今回は基礎を書きたいのでテストコードについては省きます。
もう1つがmypyを使いましょうということです。先ほど型ヒントを書いたと思います。型ヒントは型が間違っていたらエラーを履いてくれるなどの機能はありません。ですが、静的型チェックを行ってくれるツールがあります。それがmypyです。

mypyをインストールします

pip install mypy

mypyを使用してチェックします。

mypy test.py

今調べてみて初めて知ったのですが、VSCodeの拡張機能にmypyがありました。こちらを使ってもよいと思います。
https://marketplace.visualstudio.com/items?itemName=ms-python.mypy-type-checker

保守性

こちらはコードを記載することはありません。上記をまずはやってみてください。
適切な変数名はなんだろうだったり、ドキュメント書くの面倒くさいなどあるかもしれませんが、
見返すときに恩恵が分かると思います。
コードレビューがある会社であるなら指摘回数を減らすなどでも良いと思います。

さいごに

これは私の意見ですが、品質の悪いコードを書くと信頼を失います。
最悪この人が作成したコードには間違いがある前提で見られてしまう為、精神的に辛くなると思います。
是非この記事を読んだ後にコードを見てください。
また興味があれば名著と呼ばれるリーダブルコードという本を読んでみてください。

人生初の記事となり、凄く不安ですが、これから少しずつ上げようと思います。
どうぞよろしくお願いいたします。

Discussion