こんにちは!ログログです!
34歳で開発未経験から開発エンジニアになり、今ではフリーランスエンジニアとして働いています!
リファクタリングに意味ってあるの?やってる人を見たことないんだけど、、、と思っていませんか?
結論から言うとリファクタリングに意味はありますが、様々な理由で行われない、またはかなり優先度が低いというのが実情です。
実際の現場で経験していることですが、リファクタリングを積極的に行っている人はほとんどみかけません(私以外 苦笑)
本記事ではそんな実情を踏まえつつ、なぜ意味が無いと言われているのかについて考察しています。
緊急性の低さ
プロジェクトが進行中で期限が迫っている場合、コードの品質や構造を改善するリファクタリングよりも、機能の実装やバグの修正などの緊急性の高い作業にリソースを割く方が優先されます。
リファクタリングは別にやらなくてもシステムは動いているので、すぐに手を打たなければいけないものでは無いというのが一番大きな理由だと考えられます。
費用対効果が低いため
リファクタリングによって何らかのビジネス価値を生むことはほとんどありません。
それはリファクタリングの性質上、やむを得ないと考えています。
リファクタリングによってどのようなビジネス価値が創出できるかについては、不具合の発生件数の低下や新機能の拡張にかかるコスト削減を定量評価することで評価できるのではないかと考えられます。
ただ、あまり現実的ではないので、リファクタリングは時間があったらやるというのが実情です。
リファクタリングの価値が一時的である
一度だけ使用されるコードや、将来的に変更される可能性があるコードに対してはリファクタリングが必要ではないと判断されることはあります。
これは妥当な判断です。
リファクタリングの価値はコードの保守性・拡張性を高めることなので、リファクタリングしてもコードの品質向上がそんなに見込めないという場合もあるので、よりビジネス価値のあるコードについてリファクタリングすることが大事なのです。
チームが未熟
チームに十分な開発者や専門知識を持つ人材がいない場合、リファクタリングに取り組むことが難しいことがあります。このような状況では、新しい機能の開発や既存の問題の解決に焦点を当てることが優先されることがあります。
具体的には以下のような状況です。
- オブジェクト指向に関する知識、経験があまりないメンバーで構成されている。
- テックリードといった役割を担う人物の不在。
- 忙しすぎてコードレビューが十分に行われない。
既存コードへの理解不足
リファクタリングはコードの理解が必要なため、コードベースが複雑である場合、コードを改善するための適切なアプローチを見つけることが難しいことがあります。このような状況では、リファクタリングを避けることがあります。
それはリファクタリングによって新たな不具合を発生させてしまうというリスクです。
熟練したエンジニアであればコードを辿ることで、読み解くことができるかもしれませんが、ほとんどのエンジニアはそうでないと私は思っています。
実務においてもそのような理由でリファクタリングを回避したことはありますし、逆に影響範囲が見えている時はリファクタリングを行ってきました。
まとめ
リファクタリングはソフトウェア開発の重要な要素であり、コードの品質、可読性、保守性を向上させる役割を果たしていることから意味は大いにあります。
しかし、プロジェクトの状況や制約によっては、リファクタリングに否定的な見解が出ることは否めません。
なので「リファクタリングなんてやる意味ない」と言っている人がいたら、何らかの都合でリファクタリングするのが難しいか、リファクタリングの価値を理解していないんだなぁと思っていいでしょう。
コメント