私は、会社や特定のプロジェクトの開発者向けにコーディングルールを設けるという考えを常にサポートしていました。特に会社の規模が10より大きい場合、会社が大きくなればなるほど、ニーズも大きくなります。多くの人が反対することは知っていますが、それがないプロジェクトを見たことがあり、コードは完全な災害のように見えます。
これから来る本当の問題は、ifステートメントで角かっこを使用したくない、またはコードのどこにでも同じ接続文字列を使用したくない、またはそれらを反対にせずにコーディングルールを使用したくない、頭の固いものを作成する方法ですアイデア?
ルールと戦うのではなく、問題の修正に参加してもらいます。私は個人的に、「スタイルガイド」や「コーディング標準」などのアイデアを好みます。それがひざまずく「ルール=悪い」反応を防ぐことを期待しています。
しかし、たとえそうであっても、私はルールが理由のために配置されていると思う傾向があり、頭の固い人々を好転させる方法は、ガイドラインに従うことでコードを簡単にするのに役立つことを彼らに理解させることですみんなのために読んでください。
時には仲間からの圧力がこれに対する最良の解決策です。
私の仕事では、次の3つのソリューションをすべて使用しています。
1)優れた Checkstyle (Javaの場合)または StyleCop (C#の場合)などのコードスタイルチェッカーを採用します。これらは簡単に構成できるツールであり、コーディングスタイル/ルールの逸脱を自動的に強調表示できます。それは誰もが何が許容され、何が許容されないかを決定する中立的なサードパーティを提供します。
2)自動保存再フォーマットコードテンプレートを採用します (これはEclipseを使用した例です)(および別のVisual Studio用) これは保存時にコードを自動的にフォーマットします。これは、誰かが好きなようにコーディングできるようにするのに最適ですが、保存/コミット時にすべてのコードを同じようにフォーマットします。私はこれが本当に好きで、コードの一貫性はかつてありませんでした。
3)コードレビュー。とにかくこれらを実行していることを願っていますが、これらが強調する必要があることの1つは、コーディング規則/スタイルが規則に違反している場所です。
上記に加えて、誰もが同じボートに乗っており、彼らが目指しているスタイル/ルールに同意していることが重要です。すべてについて全員から同意を得られるわけではないことを明確にしますが、チームの決定に忠実であるようにチームからのコミットメントを求めます。それらを使用した実際の経験とチームの離職を説明するために選択されたスタイル/ルールを時々見直すことを忘れないでください。
これに起因する本当の問題は、ifステートメントでブラケットを使用したり、コード内のどこでも同じ接続文字列を使用したりすることを好まない、頭の固いものを作成する方法です。
ブラケットを使用しないことで「ハードヘッド」になっているのでしょうか、それとも「ハードヘッド」のリクエストでしょうか。
あなたの戦いを選んでください。これが選ぶ価値のあるものの1つだとは思えません。 「コードの最初のチェックイン」に関するこのレベルの詳細nearのどこかで期待される場所での作業は、私は楽しみません。これは、チームがリファクタリングを理解していないことを示す危険信号です。
OO 101:「製品が必要なことを実行するときにリファクタリングする」。以前ではありません。
大規模なチームのすべての開発者の肩に座るのはかなり難しいです。彼らが中かっこをどこに置くかを確認してくださいあなた彼らが行くべきだと思います-私を信頼してください;)。
それがあなたの開発を妨げていると本当に感じるものであるなら、あなたは「ゲートキーパー」を必要とするでしょう。たとえば、コードレビューなしで人々にチェックインさせないでください。テクニカルアーキテクトまたはチームリーダーにコードを確認してもらい、コードスタイルを「修正」するまで拒否します。彼らはすぐにこれに飽き飽きし、ルールに適応しますが、おそらくチェックされている間だけです。
もちろん、一部の企業はチェックイン特権をジュニアプログラマーから完全に奪っています。彼らが最終的に会社のコーディング規則を学ぶとき、彼らは特権を得ます。
私はあなたが非常に異なるレベルの問題について話していると思います:
ifステートメントで角かっこを使用したくないハードヘッドの作成方法、
明示的な演算子の優先順位の問題がない限り、これはほとんどスタイル/可読性の問題です。後者はあまり一般的ではなく、いずれにしてもユニットテストが可能であるため、修正は簡単です。前者は簡単に聖戦に回帰することができ、利益はほとんどありませんが、チームの士気に深刻な悪影響を及ぼします。したがって、注意してください-少なくともいくつかのチーム/コミュニティによって受け入れられ、動作することが証明されているPushのみがテストおよびテストしたルールです。
または、コード内のすべての場所で同じ接続文字列を使用します。
マジック定数を意味する場合、それは確かにメンテナンス(および潜在的にセキュリティ)の問題であり、そのため、経験豊富な開発者なら誰でもそれが悪いことであることを理解し、受け入れるでしょう。
または何でも、それらをアイデアに反対させずにコーディング規則を使用するには?
あなたは人々にどんなコーディング規則にも同意するように強制することはできません-あなたの唯一のチャンスは共通の理解を得て、議論と(時には激しい)討論を通じてチームメンバーから賛同してくださいです。 論理的で説得力のある引数を使用、各ルールの背後にある値を示し、それに従うことで、根付いた習慣を調整する不便さをどのように支払うかを説明する必要があります。一方、移行をできるだけ簡単にするように努めます、たとえば承認されたルールに従って、チェックイン時に自動コードフォーマットを導入します。
それでも、人によって意見が異なることを受け入れる必要がある場合もありますしたがって、誰もが受け入れることができるコーディング規則は、特定の点で寛大です。それを受け入れて、より少ない労力で物事を改善できる分野に焦点を合わせます。
ルールの確立に参加してもらいます。これは通常、人々がそれらに従うように促すのに役立ちます。
これがコードレビューの目的です。コードレビューアは、基準を満たしていないコードを通過させてはなりません。緊急修正のルールを緩和しないように注意してください。それを成し遂げるためにプレッシャーの下で数回やり直さなければならないことは、彼らの仕事を最初にきちんと行うことに気が進まない人々を直すでしょう。
どこでも同じ接続文字列?これに対する解決策は、すべての重複を削除するまでリファクタリングすることです。コピーアンドペーストのコーダーはプログラマーの刑務所に行くべきです。 (笑わないで!スティーブバルマーは監視員です。)
しかしここでの本当の問題はあなたの動詞「make」です。プログラマーに何かをさせることはできません。そうすると、プログラマーの最も価値のある特性、つまり、気になることに取り組むことから生まれる深い知的関与が無駄になります。
私がそれを解決する方法:
プログラミングはチームスポーツ、または集合的な芸術作品です。人々が同意することは、彼らが同意することほど重要ではなく、必要に応じて新しい契約を結ぶのが得意です。