※本記事は、ChatGPTによる意訳+翻訳を活用し、レイアウト調整したものです。
※感想は、オリジナルです。
原文
Beyond the Dogma: An unpopular opinion on Clean Code - DEV Community
意訳+要約
ドグマを超えて クリーンコードに関する不評な意見
「Beyond the Dogma: An unpopular opinion on Clean Code」は、著者がクリーンコードの教義から得た洞察を共有する記事です。彼は当初、ロバート・C・マーティンの「クリーンコード」に感銘を受け、すべての原則を盲信していました。しかし、シニアデベロッパーになるにつれ、これらの原則を無批判に適用するのは誤りだと気づきました。以下は記事の主要ポイントです。
盲信の危険性:
- すべてのクリーンコードの原則を無条件に適用するのは危険。
- 「DRY」(Don't Repeat Yourself)を徹底しすぎると、逆に「KISS」(Keep It Simple, Stupid)や「YAGNI」(You Ain't Gonna Need It)と矛盾する可能性がある。
実践的なアプローチ:
- 6行の重複コードは理解しやすく、必要以上に複雑なパターンを使わない方が良いこともある。
- 必要に応じてリファクタリングを行うべき。
批判的思考の重要性:
- すべてのデベロッパーが一度はクリーンコードの教義を経験するが、批判的に評価し、自分に合ったものだけを採用することが大切。
著者は、クリーンコードの原則を理解しつつも、自身の経験に基づいて柔軟に対応することの重要性を強調しています。
ChatGPTへのQA
Q:「DRY」と「KISS」、「YAGNI」の原則の間で矛盾が生じる具体例を教えてください。
「DRY」(Don't Repeat Yourself)と「KISS」(Keep It Simple, Stupid)、および「YAGNI」(You Ain't Gonna Need It)の原則の間で矛盾が生じる具体例として、以下のようなケースが考えられます。
DRY vs. KISS: 例えば、コードの一部を再利用するために抽象化を進めすぎると、コードのシンプルさが失われ、理解しにくくなることがあります。コードの重複を避けるために複雑な設計パターンを導入すると、シンプルで直感的な構造が崩れることがあります。
DRY vs. YAGNI: 重複を避けるために汎用的な関数を作成すると、実際には不要な機能を盛り込んでしまいがちです。これにより、必要ない機能を持つ複雑なコードが生まれ、「YAGNI」の原則に反することになります。
KISS vs. YAGNI: 簡素な設計を維持するために、あえて機能を追加しないことが「KISS」の原則に合致しますが、後で必要になる可能性がある機能を完全に無視することは「YAGNI」の原則に反することになります。
これらの原則は、それぞれの状況に応じてバランスを取ることが重要です。
Q:クリーンコードの原則を盲信することの危険性は何ですか?
クリーンコードの原則を盲信することの危険性は、以下の通りです:
- 柔軟性の欠如: すべての状況に適用しようとすると、コードが不必要に複雑になる場合があります。
- コンテキストの無視: プロジェクトやチームの特定のニーズを無視して、一般的なルールに従うことで問題が生じることがあります。
- 過度の抽象化: 原則を厳守するあまり、コードが過度に抽象化されて理解しにくくなることがあります。
- リファクタリングの悪用: 無理にリファクタリングを行うことで、逆にコードが壊れやすくなるリスクがあります。
これらの理由から、原則を柔軟に適用することが重要です。
Q:クリーンコードを批判的に評価し、危険性を最小限に抑えるには何が必要ですか?
クリーンコードを批判的に評価し、危険性を最小限に抑えるには、以下が必要です:
- 経験に基づく判断: 各原則の適用が適切かどうか、具体的な状況に基づいて判断する。
- 柔軟性: すべての原則を盲信せず、プロジェクトやチームのニーズに応じて柔軟に適用する。
- 批判的思考: 原則のメリットとデメリットを理解し、必要に応じて適切なバランスを取る。
- 継続的な学習: 新しい技術やベストプラクティスを学び続け、コードの質を向上させる。
これらを実践することで、クリーンコードの原則を効果的に活用できます。
感想+雑記
クリーンコードと聞くと、何か正解があるような感じがするが、実際は、こういう状況のときはこうした方が無難というだけだからな。行き過ぎると、状況が変わってアンチパターンになる可能性があるということを言っているのだろう。
プログラミングの法則は、だいたい過度にやりすぎると駄目になることが多い印象。
適度なところで適用をやめるゆるさが必要なのだろう。
バランスを取ることが重要。
ただ、バランス取るのが難しいんですけどね。。。
何度か失敗したことがある人じゃないと、そのバランス感は難しいのでは?って思う。
だから、失敗しないことを怖がってはいけない。
失敗できるときに挽回のできる失敗をして、バランスの取り方を学ぶ必要があると思った。
だから、個人開発は重要だと思ってる。
失敗してもいい場所で経験積むのは重要。