導入
リファクタリングは、コードの可読性や保守性を向上させるための重要な手法です。しかし、実務においては、リファクタリングが逆効果になることもあります。本記事では、特に中級エンジニアが陥りやすいアンチパターンに焦点を当て、具体的なシチュエーションを通じて問題点を整理し、改善策を提案します。
教科書レベルの解説(リファクタリング)
重要な概念の整理
リファクタリングとは、外部の動作を変更せずに、内部の構造を改善するプロセスです。これにより、コードの可読性が向上し、バグの発生率が低下します。しかし、リファクタリングには注意が必要で、誤ったアプローチを取ると、逆にコードが複雑になり、保守が困難になることがあります。
コード例(Python)
def calculate_discounted_price(price, discount):
if discount > 0:
discounted_price = price - (price * discount / 100)
return discounted_price
return price
def print_receipt(prices, discount):
total = 0
for price in prices:
total += calculate_discounted_price(price, discount)
print(f'Total price after discount: {total}')
コードの行ごとの解説
- calculate_discounted_price関数は、価格と割引率を受け取り、割引後の価格を計算します。
- print_receipt関数は、価格のリストと割引率を受け取り、合計金額を計算して出力します。
- このコードは、割引の計算を行う関数を分けており、一見すると良い設計に見えますが、実際には問題が潜んでいます。
アンチパターン編
上記のコードには、割引の計算を行う際のロジックが散発的に存在します。特に、割引率が0の場合の処理が明示的でないため、他の部分での理解が難しくなります。このような場合、関数の責務が不明確になり、コードの可読性が低下します。
改善策としては、割引の適用を別の関数に分離し、条件分岐を明確にすることが挙げられます。これにより、各関数の役割が明確になり、コードの理解が容易になります。
まとめ
- リファクタリングは、コードの可読性を向上させる手法ですが、誤ったアプローチは逆効果になることがあります。
- 関数の責務を明確にし、条件分岐を整理することで、コードの可読性を高めることが可能です。