こんばんは。マル太です!
前回は、リーダブルコードの第12章「コードに思いを込める」についてまとめました。
今回は、第13章「短いコードを書く」について、Qiitaにアウトプットしていきます。
なぜ短いコードを書くべきなのか?
長いコードは、読みにくく、理解しづらいものです。
まるで、長い文章を読むのが大変なように、コードも長すぎると、どこで何が起きているのか把握するのが難しくなります。
結果として、バグを見つけるのが難しくなったり、修正に時間がかかったり、他のエンジニアと協力して作業するのが大変になったりします。
短いコードを書けば、それ自体がよくできたプレゼン資料のように見せることができます。
短いコードを書くためのヒント
1.必要最低限の機能だけを実装する
YAGNI原則 (You Ain't Gonna Need It / 今必要なものだけを作る) を意識しましょう。
将来必要になるかもしれない機能を、事前に実装する必要はありません。
本当に必要な機能だけを実装することで、コードの肥大化を防ぎ、可読性と保守性を高めることができます。
無駄な機能は、コードを複雑化させ、可読性を低下させるだけでなく、バグの温床にもなりかねません。
2.質問と要求を分割する
複雑な問題を解決する際には、問題を小さなタスクに分割し、それぞれを独立して解決していくことが重要です。
例として、店舗検索システムの場合、
質問:ユーザーは何を知りたいのか?
・ユーザーの現在地に近い店舗は?
・特定の条件(営業時間、取扱商品など)に合致する店舗は?
要求:システムは何をすべきか?
・店舗データの取得
・位置情報の取得
・条件に合致する店舗の絞り込み
・検索結果の表示
のように分割することができます。
このように、質問と要求を明確に分けることで、問題を整理し、より効果的に解決することができます。
例:キャッシュを追加する
キャッシュ機能を追加する際にも、既存のコードに影響を与えないよう、独立したモジュールとして実装することで、コードの可読性を維持することができます。
※キャッシュって?
キャッシュとは、一度行った処理の結果を保存しておき、2回目以降は保存した結果を利用することで、処理を高速化する仕組みです。
例:掛け算の結果をキャッシュする
# キャッシュ用の辞書
cache = {}
def multiply(x, y):
"""
2つの数値を掛け算する関数
"""
key = (x, y) # キーとしてタプル(x, y)を使う
if key in cache:
print("キャッシュから取得")
return cache[key]
else:
print("計算を実行")
result = x * y
cache[key] = result
return result
# 実行例
print(multiply(2, 3)) # 計算を実行、出力: 6
print(multiply(4, 5)) # 計算を実行、出力: 20
print(multiply(2, 3)) # キャッシュから取得、出力: 6
3.コードは小さく保つ
コードを小さく保つための具体的な方法として、以下のようなものがあります。
行数を減らす
・関数を小さくする
・ネストを浅くする
・コメントを効果的に使う
・重複を避ける
4. 身近なライブラリを活用する
既存のライブラリやフレームワークを活用することで、コードの記述量を減らし、可読性を向上させることができます。
例:Pythonのリストとセット
Pythonでは、リストやセットなどの組み込みデータ構造を活用することで、効率的にデータを処理することができます。
# 重複した要素を含むリスト
my_list = [1, 2, 2, 3, 4, 4, 5]
# リストをセットに変換して重複要素を削除
my_set = set(my_list)
# セットをリストに戻す
new_list = list(my_set)
print(new_list) # 出力: [1, 2, 3, 4, 5]
解説:
リストは要素の重複を許容しますが、セットは重複を許容しません。
この性質を利用して、リストをセットに変換することで、重複した要素を削除することができます。
※ライブラリの再利用はなぜいいことなのか
ライブラリを再利用することで、
・開発効率が向上する
・コードの品質が向上する (バグが減る、可読性が向上する)
・他の開発者との連携がスムーズになる
といったメリットがあります。
5.コーディングするよりもUnixツールボックスを使う
Unixツールボックスなどの既存のツールを活用することで、複雑な処理を簡潔に記述することができます。
例えば、、、
・grep
コマンドを使えば、ファイルから特定の文字列を含む行を抽出することができます。
・sed
や awk
などのコマンドを使えば、コードのインデントを修正したり、不要な空白を削除したりすることができます。
※Unixツールボックスって?
Unixツールボックスとは、Unix系OS (Linux, macOSなど) に標準で搭載されている、コマンドラインツール群のことです。コードの自動生成や整形など、プログラミングにも活用できます。
まとめ
短いコードを書くことは、コードの可読性、保守性、そして信頼性を向上させるために非常に重要です。
今回紹介したヒントを参考に、簡潔で分かりやすいコードを記述しましょう。
次回は、第14章「テストと読みやすさ」についてまとめます。