language-agnostic 意味




あなたの仲間の開発者に短い方法を書くように納得させるには? (15)

"Clean Code"という本を読むように強制してください。他にもたくさんのものがありますが、これは新しいもの、良いもの、そして読みやすいものです。

長い方法はいくつかの理由から悪いです:

  • 彼らは理解するのが難しい
  • 彼らは変えがたい
  • 彼らは再利用するのが難しい
  • 彼らはテストするのが難しい
  • 彼らは結束力が低い
  • 彼らは高いカップリングを持つかもしれません
  • 彼らは過度に複雑な傾向があります

あなたの仲間の開発者に短い方法を書くように納得させるには? (武器は=禁止されている)

agiledeveloperからのagiledeveloper


1つのメソッドの下に100行のコードをすべて渡し、次に100行のコードをいくつかの方法の間で分割し、それぞれが何をするのか説明を書き留めてもらいます。

両方の段落を書いて結果を表示するのにかかる時間。

...すべてが1つのメソッドの下にあるかどうかを理解するために、2〜3倍かかるコードを選んでください。Main() -

例で学ぶよりも優れたものはありません。


コードレビュー!

私は、コードレビューを試してみることをお勧めします。 このようにして、ベストプラクティスと企業が従うフォーマットを少しワークショップすることができます。 これにより、短いメソッドは、コードをより読みやすく分かりやすくし、SRPにも準拠させることができるというコンテキストが追加されます。


あなたが良いデザインを説明しようとしていて、人々がそれを手に入れていない、または単にそれを取得することを拒否している場合は、試してみてください。 努力する価値はありません。 あなたが得るのはあなた自身のための悪い担当者です。 一部の人々は絶望的です。

基本的には、一部のプログラマーだけが開発のために切り捨てられていないということです。 すでに書かれているコードは理解できますが、自分で作成することはできません。

これらの人々はサポートの役割に向かって操作されるべきですが、新しいものに取り組むべきではありません。 サポートはさまざまなコードを見るのに適しているので、数年後には良いデザインのメリットが見えます。

私は他の誰かが示唆したコードレビューのアイデアが気に入っています。 これらのちょっとしたプログラマーは、独自のコードをレビューするだけでなく、良いコードのレビューにも参加する必要があります。 そうすれば、良いコードが何であるかを知る機会が与えられます。 おそらく彼らは良いコードを見たことがないでしょう。


この偉大な引用がどこから来るかわからないが、

「デバッグは、最初にコードを書くほど2倍の難しさがあります。したがって、できるだけ巧みにコードを書くと、定義上、デバッグするほどスマートではありません」


それはあなたの「短い」と「長い」という定義に依存します。

誰かが「ショート・メソッドを書く」と聞くと、理想的な方法が2行であると思う人々によって書かれたスパゲッティが多すぎるため、即座に反応します。できるだけ小さな作業単位を1行に1行別のメソッドを呼び出す。 (あなたが "理解しづらい"ために、長いメソッドが悪いと言っていますか?すべての簡単なアクションがコールスタックを50個生成するプロジェクトに歩み寄り、50個のレイヤーのうちどれを変更する必要があるか把握しようとします。 ...)

一方、「短い」とは、「自己完結型であり、単一の概念的機能に限定されている」という意味であれば、私はそれだけです。 しかし、これは単にコード行では測定できないことに注意してください。

そして、チョークが指摘したように、あなたは酢よりも蜂蜜で多くのハエを捕まえます。 彼らの方法が悪いのではなく、あなたの方法が良い理由を彼らに伝えてみてください。 彼らがあなたのアイデアが自分がやっていることにどのように関係するかを具体的に尋ねない限り、彼らやその習慣に対する明確な比較や言及をせずにこれを行うことができれば、さらにうまくいくでしょう。


彼にメソッドの単体テストを書くよう依頼してください。


彼は本当に良い記憶を持っているかもしれないと言いたいかもしれませんが、そうではありません。 ある人は他の人よりもずっと長い方法を扱うことができます。 両方ともコードを維持できる必要がある場合は、メソッドが小さい場合にのみ実行できます。

彼が優位複合体を持っていない場合にのみこれを行う

なぜこれが否定的な得点を集めているのですか?


彼を酔っ払う? :-)

この答えの深刻な点は、「なぜ私は一貫して短い機能を書いていますか?私がいないときには自分を憎むのですか?」という質問です。

その理由は、複雑なコードを理解することが難しく、長い関数であること、多くの状態を維持し操作すること、またはそのようなことであるということです。 私は何年も前に、この種の複雑さに対処するのにかなり優れている人がかなり多いということに気付いていました。 皮肉なことに、おそらくそれは私が多くのプログラマーよりも優れたプログラマーである傾向があるからです。自分の限界によって、私はそのようなコードに直面して取り除かなければなりません。

申し訳ありませんが、私は本当にここで実際の答えを提供することはできませんが、おそらくこれは私たちを解答に導く助けとなるいくつかの洞察を提供することができます。


歌うために豚を教える使用はありません。 それはあなたの時間を無駄にし、豚を悩ます。

誰かをより明るくする。

5000行のルーチンでバグを修正する時が来たら、10行のルーチンと4990行のルーチンがあります。 これをゆっくりと行い、誰もが突然の変化に気づくことはありません。


私の経験では、これらのケースでピアを納得させる最善の方法は例です。 あなたのコードを示す機会を見つけて、短い機能と長い機能の利点を彼らと話し合いましょう。 最終的に、彼らは「悪い」プログラマを感じさせる必要なしに、自発的に優れたものを実現します。


私はこの引用をどこかから読んだ。

あたかもそれを維持しなければならない人があなたがどこに住んでいるかを知っている暴力的なサイコです。


複雑なコードの単体テストを書くように頼むことは、良い方法です。 この人は、メンテナンスや分析を行う際に複雑さがもたらす負債を自分自身で見極める必要があります。

私はいつも私のチームに尋ねる質問は:「それは午後11時です。あなたはこのコードを読んでおく必要がありますか?あなたは圧力の下で理解していますか?電話では、リモートログインはできません。エラー?" 答えが「いいえ」の場合、フォローアップは「複雑さを分離できるか」です。

あなたが代償を得た場合、それは失われた原因です。 その後何かを投げる。


長いメソッドは、通常、オブジェクトモデルに欠陥があることを意味します。つまり、1つのクラスには責任が多すぎます。 たぶん、同じクラスのほうが、機能がほんの少しずつ短くても、それぞれのクラスに適切に割り当てられた機能がほしいとは限りません。


  • 短い方法をテストすることがどれほど簡単かを示します。 短いメソッドを書くことで、彼のメソッドのテストを簡単かつ迅速に作成できることを証明してください(彼これらのメソッドをテストしていますよね?)

  • 彼のコードを見ているときにそれを持ってきてください。 "この方法はかなり複雑で、4つの異なることをしているようです。 ここでここここで抽出する方法。"







metrics