はじめに
こんにちは。今日はクソコードを改善したい気分なので、Pythonでありがちなクソコードを5つほど取り上げ、修正していきたいと思います。
クソコードとは?
クソコードとは、一言で言うと 「読みにくい、理解しづらい、メンテナンスしにくいコード」 のことです。動作はするものの、以下のような特徴のあるコードが該当します。
- 可読性が低い : 変数名や関数名が意味不明で、何をしているか理解しづらい
- 冗長な処理 : 無駄なコードが多く。短く書けるものを長々と書いている
- エラー処理が雑 : エラー時の挙動が曖昧で、デバッグが困難
⇒コードの可読性は、自分だけでなく他人にとっても重要な要素です。未来の自分を他人だと思って改善していきましょう。
実例紹介
では、具体的なクソコードを見て、その問題点と改善方法を紹介します。
1.無駄なグローバル変数の多用
クソコード例
sample.py
# グローバル変数を乱用したコード
a = 10
b = 20
def add():
return a + b
def multiply():
return a * b
print(add())
print(multiply())
問題点
- グローバル変数の乱用 → 他の関数と競合する可能性があり、バグの温床になる
- 関数が引数を取らない → 汎用性が低く、再利用が難しい
改善例
sample.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
print(add(10, 20))
print(multiply(10, 20))
改善ポイント
- 引数を使うことで関数の汎用性が向上する
- グローバル変数を排除することで、コードの予測可能性が高まる
2.ネストが深すぎるコード
クソコード例
sample.py
def check_value(x):
if x > 0:
if x % 2 == 0:
if x > 10:
return "10より大きい偶数"
else:
return "10以下の偶数"
else:
return "奇数"
else:
return "0以下"
問題点
- ネストが深い → 可読性の面で非常に悪く、後から修正が困難になる
- else文の多用 → ロジックが複雑化しやすい
改善例
sample.py
def check_value(x):
if x <= 0:
return "0以下"
if x % 2 == 0:
return "10より大きい偶数" if x > 10 else "10以下の偶数"
return "奇数"
改善ポイント
- 早期リターンを使い、ネストを浅くして読みやすくしている
3.意味不明な変数名
クソコード例
sample.py
def f(x, y):
z = x * y + y / x
return z
問題点
- 変数名が不明確 → 何を意味うるか分からず、コードの意図を理解しづらい
- 可読性が低い → 何を計算しているか一目でわからない
改善例
sample.py
def calculate_area_with_margin(length, width):
area = length * width + width / length
return area
改善ポイント
- 意味のある変数名・関数名をつけることで、コードの意図が分かりやすくなる
4.無駄な処理が多い
クソコード例
sample.py
numbers = [1, 2, 3, 4, 5]
result = []
for i in range(len(numbers)):
result.append(numbers[i] * 2)
問題点
- 冗長なforループ → Pythonの特性を活かせていない
- 可読性が低い
改善例
sample.py
numbers = [1, 2, 3, 4, 5]
result = [x * 2 for x in numbers]
改善ポイント
- リスト内包表記を使うことで、コードが短くシンプルになる
5.エラー処理が雑
クソコード例
sample.py
def divide(x, y):
try:
return x / y
except:
return "エラーが発生しました"
問題点
- exceptの処理が曖昧 → どんなエラーか不明で、デバッグが困難
- 適切なエラーメッセージがない
改善例
sample.py
def divide(x, y):
try:
return x / y
except ZeroDivisionError:
return "0で割ることはできません"
except TypeError:
return "入力値が数値ではありません"
改善ポイント
- 具体的な例外を処理することで、エラーの原因が明確になる
まとめ
今回紹介したクソコードは、Python初心者がつまずきやすいポイントです。しかし、改善することでコードの可読性やメンテナンス性が向上します。最後にコードを書く際に意識しておきたいポイントをまとめます。
- 変数名・関数名をわかりやすくする。
- ネストを浅くする。
- 無駄な処理を省く
- エラー処理を丁寧に行う
最後まで読んでくださり、ありがとうございました。もし改善点や質問があれば、ぜひコメントしてください!