1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エンジニアの皆さん、お疲れ様です。

日々、「良いコードを書こう」「クリーンコードを心がけよう」と、半ば信仰のように語られる「良いコード」という概念。本当に、それは絶対的なものなのでしょうか?

私は声を大にして言いたい。「良いコード」の定義なんて、幻想に過ぎない! そして、可読性や保守性を過度に追求することは、むしろ開発の足かせになることさえある、と。

ビジネス要求 (1500 x 1000 px).png

この記事では、私が長年の開発経験で感じてきた「良いコード」神話への疑問と、それにつきまとうワナについて、あえて過激な表現でぶった斬っていきたいと思います。異論は認めます(むしろ歓迎します)。

1. 「良いコード」は宗教である

DRY原則
SOLID原則
単一責任の原則
コメントは書くな、コードで語れ
変数名は分かりやすく、関数名は簡潔に

これらはまるで宗教の教義のように語られ、多くの現場で絶対視されています。しかし、これらの原則は、本当に常に正しいのでしょうか?

その裏には、開発者のエゴや、思考停止を生む危険性が潜んでいるのではないでしょうか。

2.「可読性」という名の欺瞞

誰もが口にする「可読性の高いコード」。果たして、それは誰にとっての可読性なのでしょうか?

ベテランエンジニアにとっての可読性 ≠ 新人にとっての可読性
ベテランは抽象化された簡潔なコードを好むかもしれませんが、新人にとっては複雑怪奇なマジックにしか見えないことも。

「コードで語る」は本当に正義か?
確かに不要なコメントは悪ですが、複雑なロジックやドメイン知識を伴うコードにコメントを一切書かないのは、もはや嫌がらせではないでしょうか。
コメントがないために、何日もかけて他人のコードを解読する羽目になった経験、ありませんか? それ、本当に「可読性」が高いと言えますか?

3. 「保守性」が開発速度を殺す時

「将来の保守性を考えて設計する」—これもまた、多くのエンジニアが陥りがちなワナです。

過剰な抽象化は諸悪の根源
「将来拡張するかもしれない」という漠然とした不安から、やたらとインターフェースを切ったり、汎用的なクラスを作りすぎたりしていませんか?
その結果、コードは複雑になり、変更するたびに芋づる式に影響範囲が広がり、むしろ保守性が低下していませんか?
使われるかどうかも分からない未来の機能のために、現在の開発速度を犠牲にしているだけではないでしょうか。
本当に「将来」は読めるのか?
3ヶ月前の自分のコードすら思い出せないのに、数年後の他人が書いた(あるいは自分が書いた)高度に抽象化されたコードが、本当に「保守」できると言い切れますか?

4. では、「動くコード」以外に何が必要か?

結局のところ、ユーザーにとって価値があるのは「動くコード」だけです。そして、そのコードがビジネスの要求を満たし、迅速に価値を提供できることこそが、最優先されるべきではないでしょうか。

私が考える「良いコード」は、究極的には以下の3点に集約されます。

①動くこと: 最低限にして最高の要件。
②目的を達成していること: ビジネス価値を提供できているか。
③チームの合意があること: 特定の誰かのエゴではなく、チーム全体で「このレベルで十分」と合意できていること。

もちろん、品質やテストの重要性は否定しません。しかし、それらはビジネスのゴールを達成するための手段であって、目的そのものではありません。

5. あなたにとっての「良いコード」とは?

「そんなことはない!」「何を言っているんだ!」と思った方も多いでしょう。
むしろ、そう思ってくれたなら本望です。

この問いは、エンジニアリングにおける永遠のテーマかもしれません。
しかし、私たちは一度立ち止まり、「本当にその原則は、私たちのプロジェクト、私たちのチームにとって、今、最適なのか?」と自問自答すべき時が来ているのではないでしょうか。

あなたの考える「良いコード」の定義をぜひコメントで聞かせてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?