「クリーンコード」の実践は本当にクリーンで便利ですか?[閉まっている]


11

私は現在、大企業でインターンシップを行っており、ソフトウェア配信構造の多くの変更を受けています(アジャイルに移行)。

過去数ヶ月で、私はこの宗教的なClean Code慣習への執着と 、開発者にとって聖書のような本であることに気付きました。

さて、クリーンなコードの最も重要な機能の1つは、わかりやすい名前付けと厳密なリファクタリングに基づいた自明のコードです。これにはno commentingルールが続きます。

このクリーンなコードは、コードの保守と改善を容易にする長期的な投資であることを理解していますが、...これは本当に大騒ぎに値するのでしょうか?

Clean Codeでの経験や、私があまりにも保守的すぎるのか、それとも一時的な傾向であるのか、誰でも意見を共有できますか。


1
多くの良い質問は、専門家の経験に基づいてある程度の意見を生み出しますが、この質問に対する答えは、事実、参考文献、または特定の専門知識ではなく、意見にほぼ完全に基づく傾向があります。
gnat

4
私はその著者についてはあまり高い意見を持っていません(著者にもかかわらず)。一般的に、教訓的すぎないことは有益です。ほとんどのプログラミング推奨事項は、実際に機能することが示されているためですが、絶対的な真実ではないため、あまり心配しないでください。読み続けて、あなたがより正しいと思うことを行ってください。しかし、車輪を再発明しないでください。チャンスは、私たちよりも賢い人です。
DPM

2
70文字の名前を持つメソッドは、おそらく複数のことを行います。SRP違反ですか?!
トムバトロン

1
クリーンコードをあまり気にしない企業の開発者である5年後または10年後のもう1つの考え方は、この独断的な演習に本当に感謝します。
トムバトロン

3
「簡単に」「コメントなし」で作業したので、規則よりも強力なガイドラインであることが非常に好きです。コメントが必要な場合があります-通常、あいまいなビジネスロジックです。呼び出されたメソッドCalculateFoonicityMetric()は、それが何をしているかを正確に示し、よく書かれたコードがその方法を示します...しかし、これらのどちらも理由を示しません。コードはで明白(これを乗算し、他のもので除算し、それを二乗し、このビットを追加します...)理由は不明です(因子= a * b / c;負のfooを説明するために二乗し、調整しますドリフトのため...)。理由を説明する簡単なコメントに感謝します。
アナキシマンダー

回答:


17

このクリーンなコードは、コードの保守と改善を容易にする長期的な投資であることを理解していますが、...これは本当に大騒ぎに値するのでしょうか?

絶対に。

リファクタリングは非常に重要ですが、メソッドの移動に75%の時間を費やし、適切なタイトルを決定するのに多くの時間を費やすことはそれほど生産的ではないようです。

確かに、大企業にはおそらくクリーンアップするために数年または数十年の不良コードがあると考えてください。そのためには多くの時間と労力が必要です。

実現する主なことは、あなたが両方とも正しいということです。「クリーンコード」は非常に重要であり、クリーンコードはそこに到達するための普遍的に尊敬される方法です。会社は道に沿って始まったばかりなので、より多くの経験を持っているグループよりも、この本に注目されるでしょう。しばらくそれをやったら、彼らは何がうまくいき、何がうまくいかないかを学び始めるでしょう。彼らがそれをよりよく理解したら、彼らは(うまくいけば)より実用的で自然なアプローチに従い、きれいなコードを維持しますが、70文字の関数名にはつながりません。


4

私はもともとコメントを書いていました。考慮すべき観点よりも答えを少なくしようと思います。ただし、わかりやすい名前付けやリファクタリングなどの「クリーンコード」の実践は絶対に推奨します。

将来のコード破損を防ぐためにコメントが必要な場合があるため、コメントなしのルールは常に嫌いです。彼らは通常、行われていることとその理由に制限されるべきです。コードが予期しないことを行っている場合、またはアルゴリズムを置き換える必要がある場合は、控えめに使用してください。

コードを読んだり保守したりするときは、生産性を考慮してください。コードの有効期間中、これはコードを記述する際の生産性よりも重要かもしれません。これらのプラクティスは、これらのタスクの生産性に役立ちますか?

経験を積むことで、これらのプラクティスは定着し、生産性を低下させることは少なくなります。コードが何をする必要があるかを明確にしているため、正しい名前を選択するのに時間がかかる場合があります。(この明確化により、コーディングとデバッグが高速化される可能性があります。)これにより、必要なものだけを実行するか、バグの少ないコードが作成されますか?これは生産性にどのような影響を与えますか?

適切なメソッド名を選択するのにかかる時間は、メソッドの目的をよりよく理解する上ですぐに成果を上げる可能性があります。メソッド名「iterateOverCustomers」を「locateActiveCustomers」と比較します。機能の意図を伝えるのはどれですか?必要に応じてリファクタリングが簡単になるのはどれですか?


3
「コードなし」のルールは、人々がClean Codeブックに帰属することを好むというルールは、実際にはブック内のどこにも存在しないことを指摘したいと思います。それどころか、コメントに関する章全体があり、その前半は多くの種類の「良いコメント」の説明に費やされ、その後に「悪いコメント」のセクションが続きます。問題に関する著者の意見は、実際に多くの人が彼に信用を与えるよりもはるかに合理的です。
エリックキング

私は一般に「コメントなし」ルールについてコメントしていました。言語定義からコメントを削除する提案があった言語で作業しました。良いコメントも悪いコメントもありません。当時、コードのブロックにコメントがあり、いくつかのケースでは失敗することがありました。そのような場合であり、その時点で新しいコードブロックを追加しないことを警告するコメントがありました。
-BillThor

ええ、それは私にはかなり極端なようです。
エリックキング
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.