web-dev-qa-db-ja.com

私はコーディング標準の1つを嫌い、それは私を狂気に駆り立てます、それをどのように処理するのですか?

免責事項:タイトルが示唆するほど誇張されていませんが、それでも不快に感じます。私は正直に表現するつもりですので、塩の粒と一緒にそれを取ります。 thatコーディング標準について話しているふりをしてください。

編集:気に入らないということは、それを使用したり強制したりしないという意味ではありません。


私はこの質問を、あなたが好まない標準を乗り越える方法の精神で尋ねることに決めました、それをどのように変更することができるかをよりよく議論する方法の助けを得ることはしません(この最後の部分に関するコメントは高く評価されます)。その上、私は大企業で働いているので、長い間生きていて、それほど重要ではない何かのそのような変化はありそうもありません。

標準は、開始線中括弧専用線の標準です。

somefunction()
{
    //...
}

*明らかに優れた*の代わりに(冗談/フラストレーションのトーンに注意):

somefunction() {
    //...
}

標準に対する私の個人的な議論:

  • コードが膨らむ:余分な不要な行
  • 入力するのが難しい:これはおそらく私が標準と格闘しているだけのことですが、1つの余分なキーストロークはそれほど悪くないことを知っています。
  • 読みやすくありません:関数の宣言、ifステートメント、またはその他のスコープスタッキングステートメントの読み取りを開始しましたが、既に左中かっこを探す必要はありません。この標準のネストされたブロックは、何らかの理由で私を怒らせます。
  • Microsoftの出身の人が使用IDE背景:パラダイムでそれを受け入れるだけでなく、標準の背後に議論の理由(またはそれ以上)があるはずだと思う。

彼らの議論(そして彼らに内部的に語りかける私の方法):

  • ブロックの開始位置と終了位置がすぐにわかるので読みやすくなります:これが理解できません。ブロックの所有者がわからない場合、ブロックはどのように役立つのかを読んでください。後方。
  • Microsoftで使用しましたIDEそして私はそれが好きでした:ええと...わかりましたか?
  • これは標準です* cringes *

私は特定の標準に対して独断的なスタンスで闘っている唯一の人ですか?どのようにしてこれらを克服しましたか?この特別な標準がどうあるべきかについてのあなたの意見は何ですか?

18
dukeofgaming

あなたがこれを乗り越えたいなら、トーバルズによる引用がありました:

悪いプログラマはコードを心配します。優れたプログラマーは、データ構造とそれらの関係について心配しています。

ここで、コード標準によって強制されるブレーススタイルのようなマイナーなことを心配するプログラマーをどこに置くのでしょうか。あなたのコードベースはさもなければ、ブレースが論議する価値のある唯一の問題であるほど原始的ですか?

47
scrwtp

好きな人もいれば嫌いな人もいます。いずれにせよ、誰かが迷惑になるでしょう。今回はあなたの番です。それを吸い上げて、仕事を続けます。

67
Cromulent

チームの標準は文書化されていますか?もしそうなら、スタイルガイドに理由はありますか?正直なところ、私は何十回もそれを吸い取って、実際の仕事をしなければなりませんでした。深刻な問題がありますが、私はあなたを感じています—ランク付けされたままです(ところで、スタイルについては同意します)。

私がそれを乗り越えるのを助けたもの:

  1. (それが何であるかに関係なく)単一のスタイルには本当のメリットがあることを認識した。 または、少なくとも多くの人がそう思う
  2. 正確に何をしたのか、なぜそれが間違っていると感じているのかを書き出してください。そうすれば、将来の議論をうまく進めることができます。
  3. 神のためにスタイリングツールを使用してください、正気を保存します。 ResharperCodeMaidStyleCopJSLintCheckStyleetc 。... Visual Studioでも自動的に実行されます
  4. このプロジェクトに積極的に取り組み、基準を設定できるようになったときに、次の準備をします。
27
Zachary Yates

ある規則が他の規則よりも優れているのは*明らかに明らかに任意*です。

あなたが直面する可読性の問題、またはあなたのチームメイトがあなたの標準と直面することになるのは、変化に対する心理的な抵抗です。

客観的な可読性の引数は、コードベース全体よりも* consistency *を支持しています。

16
mouviciel

シュアあなたが何かについて正しかったこと、ある期間にわたってあなたが間違っていたことに気づいたこと、少なくとも少なくとも何年も前に過剰反応していたことを思い出してください。あなたが再び間違っている可能性を考慮し、あなたを説得するために新しいコーディング標準またはプロセス時間を与えてください。

私がコーディングにかなり慣れていなかったとき(たとえば、私のキャリアの5年後)に、マルチワード識別子をWrittenLikeThisにするかwritten_like_this。私はどちらが悪かったのかさえ言うつもりはありませんが、ポイントは、しばらくしてから私は側を変え、しばらくしてからどちらの方法も気にしなかったということです。

8
Kyle Jones

中括弧で説明する標準的な違いは、ほとんど任意です。どちらの方法も同等に良い方法であり、企業にとっても、誰もが同じことをする限り、それはすべて良いことです。

あなたが話している「明らかに優れている」とは、人々が「慣れている」ことについて話すときに人々が話す一種の優れていることです。

あなたはすぐにそれに慣れるでしょう、そして1年かそこらで、他の方法は「明らかに優れている」でしょう。

要するに、それに対処してください。

8
Pieter B

この特定の主題は、あるスタイルを他のスタイルよりも好む人々の間の宗教戦争に相当します。あいまいな人はほとんどいません...

最終的に、どちらも正しくなく、どちらも間違っていません。

スタイルガイドとコーディング標準が存在する理由はいくつかあります。重要な側面の1つは、レイアウトの均一性を確保することです。これにより、明らかなエラーの数を減らし、保守性を向上させます。

特定の基準に対して独断的な立場で闘っているのは私だけですか?

短い答えは「いいえ」です。あなただけではありません。しかし、心配するべきより重要な事柄があります。私たちが入力した標準であっても、常に妥協が存在します。C99とC12に採用されたいくつかの側面で、私には意味がありません。

MISRA-C(私が直接影響力を持っている)でさえ、個人的には同意しない項目が含まれていますが、他の人が正当化を感じる理由は理解できます。

これらをどうやって乗り越えましたか?

そして、そこに答えがあります。個人的に好きではない理由に焦点を当てるのではなく、同意した人/人がそうした理由を理解してください。

以前の問題に対処するために、通常、ルールが導入されています(馬が一種の方法でボルトで固定された後の安定したドアの閉鎖)。ルールがまだ無意味な場合は、標準の所有者に相談して、それらを「教育」してみてください。

5
Andrew

あなたはそれを続ける必要があると思います。私は自分の意見であなたのノートに対処しようとします:

  • 膨張コード

    単一のクラスで数百のメソッドを記述しない限り、コードの1行の追加はコードの肥大化にはなりません。繰り返しになりますが、1つのクラスに何百ものメソッドがある場合、まったく別の問題があります。

  • タイプするのが難しい

    私はこれについてあなたにこれ以上同意できません。とにかく次の行に戻るにはリターンキーを押す必要があります。タイプするのが難しいのはどうですか?

  • 読みにくい

    コードの各行には特定の機能が必要だと思います。これに続いて、メソッド名を1行で定義してから、開き括弧と閉じ括弧をそれぞれ別の行に定義する必要があります。

  • MSから来た人が使用IDE背景

    うーん..... ok?

要約すると、IDEがデフォルトでこの標準になっているため、他のタイプの開発者と比較して、.Net開発者であることに劣等感を抱いているようです。

4
stuartmclark

特定の基準に対して独断的な立場で闘っているのは私だけですか?

もちろん違います。コーディング標準を決定するための会議は恐ろしいです!彼らは何時間も引きずり続け、参加者は自分のお気に入り(そして私のものを除いて常に間違っている)の特異性を得るために個人的に投資されるようになります。結局、誰も結果に満足していません。何かがコーディング標準会議よりも悪い場合は、標準の決定に続く数か月間の正式なコードレビュー会議です:一部の人々は標準を採用しようとしますが、他の人は(意図的かどうかにかかわらず)それを無視し、あなたは次のようなフィードバックの時間:SillyFileConverter.cppの132、142、145、181、195、および221行で、コーディング標準が明確にそれをすべきであると明記している場合、同じ行に左中かっこを置きます以下行にいる!

これらをどうやって乗り越えましたか?

彼ら自身の方法で、会議は役立ちます。開始ブレースを条件付きと同じ行に残した男に完全に同情したとしても、それを吸い込んで愚かな標準に従うだけではなく、時間を無駄にしたことで彼に腹を立てることになります。男が殺し屋で同じことを何度も繰り返していると、さらに面倒になります。その振る舞いに悩まされていると、あなたが望むものとは少し異なるスタイルで書くことを正当化するのがはるかに簡単になります-あなたは確かにその人になりたくない結局のところ。

限りのない正式なコードレビューを受けていなくても、独自のコードをレビューして、標準に準拠しているかどうかを確認することができます。それはあなたが標準をどう思うかは関係ありません、あなたはあなたが書いたものと標準が言うことを単に比較しているだけです。順守に失敗するたびに自分自身で対応する場合は、基準を採用するのに役立つ否定的なフィードバックの一部が提供される可能性があります。

4
Caleb

このようなことで、リリパットのガリバーを覚えています。リリプティア人はゆでた卵を開くための終戦を戦い続けていました。 (元のビッグエンディアン、リトルエンディアンの戦い)。

それをあなた自身を笑う機会ととらえなさい、彼らは実際にビジネスで十分に頻繁に来ない。

3
Jaydee

あなたの特定の例は、一部は同意し、一部は同意しないものであるため、残念です。他の多くの人がそれに同意することを確信しているのと同じように、私は例えばあなたの議論に反対します。質問はとても主観的であるので、私はそれを締めくくるべきだと私に思わせます。

しかし、あなたが同意しない標準にどう対処するかという質問は、もっと答えられる可能性があります。答えは、スタイリングガイドラインが存在し、合意され、使用されている場合、答えは、にやにや笑い、耐え、対処することです。一貫性を持つことがより重要であることを考慮してください。ガイドラインが不正確または間違っている場合、変更を求める議論がある可能性がありますが、これは文体的であるため、個人的な好み以外に議論はありません。

私はJavaバックグラウンドから生まれたので、あなたが言及した標準に従いました。次に、嫌いなスタイルが使用されているC++とC#に移動しました。しかし、正しい答えや間違った答えはありません。より重要なのは、すべての人が従う標準を持つことです。コーディング標準がこのような文体であり、明らかに間違っていない場合、それを主張しようとすると、チームに摩擦が生じるだけです。

2
Firedragon

フォーマッタ+チェックインフックから始めるのがよいでしょう。しかし、あなたが書くことはあなたが一日中見つめるものほど重要ではないので、それは十分ではありません。いくつかの状況では、 EmacsのGlassesモード -ファイルを自分のスタイルに保ちながら、自分のスタイルに近づけて表示するアプローチが魅力的です。

私の経験-CamelCapsunderscore_separated-で書かれた問題に正確に直面していた-それはすぐに役に立たないよりも迷惑になったということでしたが、数週間の間、それは私の(スムーズな)移行をスムーズにしました会社のスタイルを受け入れ、怒りを流すための出口を提供しました(「ああ、私はそれが嫌いです。設定をもう一度調整させてください...少なくとも、私は何かをしました ");-)

とにかく、Glassモードはブレースの配置を処理せず、Emacsを使用せず、エディターでコードを排他的に読み取らない:-(
しかし、最後のポイントは機会でもあります。別のツールでreadコーディングすることがほとんどの場合、それをハックしてラウンドトリップの再フォーマットノイズを心配せずにスタイルを変換します。これは読み取り専用だからです。特に、一部のWebインターフェースでコードを読み取る場合は、Greasemonkeyを使用してください。

穏やかな緩和のためのいくつかの簡単なアイデアを以下に示します。

  • 失われた画面の線を取り戻すには、幅は広くてもそれほど大きくないフォントを選択します。

    • 可能であれば、フルスクリーンをより頻繁に使用します。
  • 中かっこを淡い色(および小さいフォント?)で強調表示するように設定して、他のコードよりも目立たなくします。インデントは、特に読むには十分です。 {行の空のスペースで...

  • }を過ぎたら、エディタが一致する開始中括弧を強調表示するようにしてください。目が本能的に間違った場所に移動したときに少し役立つかもしれません。

  • 「入力するのが難しい」の場合:実際のエディターを取得し、{を押すと自動的に新しい行を開くように設定します。

それと一緒に生きる。

これは明らかに化粧品であり、コードの品質や開発者としての生産性について何も変更しません。議論を始める価値はありません。

この種のコーディング標準については、コードベース全体の一貫性と、特定の(理由のある)どんな「宗教的」アプローチでも、いつでも読みやすくすることにしました。

それをそれほど重要ではない問題に関するチームメンバーの過半数の民主的な決定と考えると、それを乗り越えるのに役立つでしょう。

0
guillaume31