2009-06-06 2 views
6

G'day、私のプログラムに自分のモッズが良くないと誰かに伝えるには?

これはmy question on star developersthis question regarding telling someone that they're writing bad codeに関連していますが、より具体的な状況を見ています。

つまり、私が書いたプログラムの変更は、「自分のものを使って遊んでいる」人に迷惑をかけているように聞こえることなく、貧弱なやり方で実装されていることを「星」にどのように伝えますか?

追加された新しい機能は、このシェルスクリプトの元のバージョンから慎重に除外され、負荷のかかったシステムで表示されるエラーを知るまで簡単に保持されます。

基本的には、すべてのエラー状況を試してみるのは不可能だと主張していましたが、実際には多くの作業を行った後、完全に間違った方向に向かう可能性があります。

追加するために必要なものを見た後、誰かが中に潜っや追加をしたが、残念ながら:

  1. ロジックは、変数名は、もはや彼らはそこ
  2. が含まれているデータを記述
  3. 一貫していないではありません
  4. 変数が使用される方法は従うのが容易ではなく、可読性が損なわれ、保守性が大幅に低下します。

「お使いのシステムは、あなたが住んでいる場所を知っている精神病質者によって維持されようとしているかのようにコードを必ず。」私は常にビューのダミアン・コンウェイポイントから試してみて、アプローチコーディングつまり、私は自分の輝きのための広告としてではなく、それをフォローしやすくしています。 "このコードは何をするのですか?"エクササイズは楽しく、難読化コンテストIMHOに任せられるのが最善です。

非常に参考になりました。あなたがプロジェクトのために明確に定義されたコーディング標準を持っている場合は

歓声、

+2

良いコーディング慣行に関する本で彼を殴ることはどうですか? ;-) –

答えて

10

私はそれについて正直である。ちょっとした細かい点を必ずしも指摘する必要はありませんが、あなたが作成しようとしている一般的な点の例がいくつかあることは価値があります。 があなたの推論に挑戦する場合に備えて、最初の簡単なフィードバックでを呼び出さない他の例についてメモを付けることができます。

フィードバックは人物ではなくコードであることを確認してください。例:

いいえ:foo()の引数の検証はbar()のものと矛盾しているようです。 foo()では、nullを渡した場合はNullPointerExceptionがスローされますが、bar()の場合はIllegalArgumentExceptionがスローされます。

悪い:あなたの議論の妥当性はどこにでもあります。 NullPointerExceptionfoo()に投げ、IllegalArgumentExceptionbar()に投げます。一貫性を持たせてください。

「してください」の場合でも、2番目のフォームはコードではなくデベロッパーです。

もちろん、多くの場合、慎重であることを心配する必要はありませんが、彼らがそれについて非常に敏感になると思うなら、努力する価値があります。 (フィードバックが書かれている場合は、慎重に書いた内容を読んでください:私は誤って最初のバージョンに "you"を含めて始めました:)

私は、ほとんどの開発者が「いいえ、問題Xがあるため、その機能を実装しませんでした。私は幸運だった可能性があります。

+0

フィードバックは、何が必要なのか、何が間違っているのか、ということについて完全に述べるべきだと私はさらに語ります。変数名が悪いのでこのコードを受け入れることはできません。 「あなたのやったことが好きですが、編集内容を含めるには変数名を改善する必要があります。また、その機能をまったく必要としない場合は、プロジェクトをフォークすることをお勧めします。 –

1

は、コードがこれらの基準を満たすように変更する必要があると指摘します。あなたが持っているリストは非常に合理的なフィードバックのように思えます(#3は多く議論されていますが、他の3つの点を修正して本当に混乱している部分を文書化するだけです。

1

この開発者のリポジトリに数か月前の例がある場合は、その1つを提示して、何をしているのかを尋ねてください。 (彼に数ヶ月でこれを示す)。彼が実際に自分の変数にあるものを見つけ出し、それが何をしているのかを理解するためにコードのすべての行を解体する必要があるとき。コードレビュー/ペアプログラミングセッションに入る。リファクタリングして名前を変更すると、彼はうまくいけばこれらのことが重要である理由を自分自身で正確に見始めることができます。

6

他の観点からは、私はあなたの靴の中でそれについて考えることをお勧めします。私は、「仮説的な」経験について説明します。心に留めておくべき

いくつかの点:

  • 男が何か 良いを行うにしようとしていました。
  • プログラマーは マインドリーディングでひどいです。彼らは彼らが何を読むのかを知る傾向があります。
  • 実行する必要があるもの(または実行する必要がないもの)として完全な指導を与えられていない可能性があります。
  • 彼はおそらく最善を尽くしています。

これを念頭に置き、話してください。それらを教えてください。叫び声や大騒ぎのコンテストは必要ありません。彼らはあなたの人生を困難にしようと意図的に努力していないことを覚えておいてください。

3

特定の種類の開発者に対処する方法について多くの質問がありました。それはあなたのための共通のスレッドのようです。あなたは、あなたの周りの人を変える方法を尋ね続けます。これがあなたにとって一定の問題であれば、おそらくあなたは問題です。

難しいと思う人に対処する方法を学ぶために質問していることは分かりましたが、それは良いことですが、人を変える方法について質問し続けています。

あなたは変更する必要があるようです。これらの人々と協力して、コードをあなたが望むものに変えてください。彼らと一緒に。彼らにそれをさせようとしないでください。ちょうどそれを行い、あなたが何をしたのか、そしてなぜそれを伝え、さらなる改善のための提案を求め、お互いに学びます。お互いの経験と強みを見せつけてください。ちょうど私の2セント。

+0

@リチャード、フィードバックに感謝します。私はこの問題を捜し求める魂をしてきました。実際に面白いのは、私が同じ人物について尋ねたすべての質問についてです! ( - : –

1

率直に言えば、これはコーディングの問題ではなく政治的な問題だと私は思う。具体的には...

  1. WHOはこの人物が「スター」だったと言っていますか?これがあなたの他の質問に記載されている人と同じ人物である場合は、すでにあなたの答えがあります。この人物はです。 "STAR"です。

それでは、あなたはスターになるこの人を主張している政治の他の効果...

  1. に入りますか?なぜ、これは人に「これはいたずらだ」と言うだけではないのですか?誰がそれを守っているのですか/防衛しているのですか?あなたはそれをすることができますか、あなたは爆破されるか、降格されるでしょうか?「解雇される」パイルに置かれますか?

あなたは本当に孤立して答えることができない質問をしています。コードが駄目なら、それを投げ捨てて自分で正しくやってください。 理由がある場合は、この場所の利点がネガティブを上回るかどうかを自問する必要があります。

乾杯、プログラムの作成

-R

1

、その後、他の開発者が作業するためにそれを解放することは難しいです。

コーディングが悪いと言っている開発者には、コードが入っていることを伝えておくのが最も難しい作業の1つです。コードで作業を始める前に、懸念事項に対処することをお勧めします。これは2つの方法で行うことができます:詳細なコーディング標準の維持、提出されたコードの遵守と開発ロードマップの維持、新しいフィーチャーがいつ登場するかの概要だけでなく、こうした事故を避けるための依存関係の作成。

さらに状況を批判しないこと、または敵意とコードが悪化する可能性があります。おそらく、その開発者と協力して標準化文書を作成することができます。あなたは、標準がどんなものであるべきかについてあなたのアイデアを表現することができ、どんなハードな気持ちもせずに彼らの意見を得るでしょう。

コード内の良いことを常に指摘し、誰も(開発者を含む)恩恵を受ける理由を指摘し、批判しないという弱点について話し合うときは必ず確認してください。

幸運。

1

私は、次の操作を行います:

  • 彼はいくつかの変更を加える気になる場合作り、彼に依頼
  • (好ましくは、これは真実でなければなりません)、彼は彼のハードワークが評価されていることを知っていることを確認してください大したことではなく、簡単に修正するように聞こえます
  • 問題がなぜ発生するのかを含めて、問題を説明し、正しい道筋で彼を設定するための具体的な変更を提案します。

練習は、彼が文化プロジェクトにもっとよく統合するのに役立ちます。

1

私たちは、これらの潜在的な「問題」積極的に解決しよう:人々が一緒に仕事

  • ごとに「大きな」プロジェクトはプロジェクトのcodelead '(開発者の一人)が割り当てられます。これは、すべてのプロジェクトを(好みに基づいて、特定のタスクの経験に基づいて...)循環させるので、誰もが「寄稿」と「コード・プロジェクト・リード」の役割を果たすことがあります。 、変更 が、それは、提案を行い に人々を尋ねる:
  • は、我々は明示的に これらのプロジェクトは、彼らは一時的な独裁のような の他の 貢献(ソートコード付きにしたいものは何でも を決めることができます「つながる」がいることを合意をしましたやり直しなど)。プロジェクトコード 'リード'は、集約された コードが機能するための完全な 責任を負います。

これらの公式化された「リード」(そして変化する役割)では、人々は貢献する部分の(建設的な)批判にそれほど問題がないと思います。

1

はい、感謝して、プロフェッショナルで、技術的に可能な限りフィードバックを残してください。可能性のある「最悪の場合」のシナリオをバックアップして、これらの機能やこの特定の実装の欠点をはっきりと明らかにする。これは非常に特異的であり、ほとんどのユーザーへの使用のない機能/コードについてであれば

また、コード/使用率に関するあなたの懸念を表明 - 増加したコードベースの複雑さについて懸念を示すなど

理想的には、オープンエンドの質問として、あなたの懸念を提示することが理想的です。「しかし、この方法が長期的にはうまくいくのかどうかは疑問です...」あなたが実際に寄稿者間の活発な対話を実際に奨励するように。

あなたの仲間の貢献者とユーザーにこれらの懸念事項に関する意見を述べてもらい、実際に他の人/投稿者にこの追加について考えていることを尋ねます(賛否両論、条件、コード品質の面で&)他のコントリビューター/ユーザーが対応する洞察を提供できる場合は、現在の位置を再検討してください。

基本的には、非公式のレビューをそのように奨励しています。提案された追加情報を検討し、利点と欠点を議論できるようコミュニティに依頼してください。

だから、決定はどんなものであれ、それは単にあなたが作っただけでなく、コミュニティが支援するものになります。

あなたは元のデザインのアーキテクトであり、組み込み/展開に適していないアーキテクチャ上の理由を提供するための優れた立場にあります。

安定性、複雑さ、またはコードの品質が本当に懸念される場合は、他の寄付も受け入れられるように特定のレビュープロセスをどのように通過しなければならなかったかを示してください。

また、特定のコードが現在のデザインと実際にどのように釣り合っていないのか、また現在のデザインに拡張することができない場合もあります。

あなたが実際に機能やコアアイデアのように、適切に実装およびを統合した場合、これらの機能がになるだろう優れた追加を強調するようにしてください、だけでなく、既存の実装が原因に本当に適切ではないことを強調するならば理由の数

可能な場合は、改善のための具体的な提案を行い、より良いやり方の例を提示し、避けるべきことを明示してください。これを修正してプロジェクトのコミュニティの助けを借りて追加できます。

理想的には、この貢献を実際に受け入れるための要件を提示し、要件の背景について言及してください。実際には、これらの要件のいくつかを自分で嫌うと言えます。

好ましくは、あなた自身が類似のコード(または悪いコード)を投稿し、独自のコードに起因する巨大な問題に直面して、そのような問題を防ぐためにこれらのポリシーが現在実施されている場合について説明します。あなた自身の悪いコードについて実際に話すことによって、あなたは実際に非常に主観的になります。

あなたは一般的に努力自体に感謝し、問題のコードをより良い形と形にするために必要な助けと指針を用意していることを強調してください。また、同様の問題を回避するために、今後も同様の貢献がコミュニティ内で適切に調整されるべきであることを奨励してください。

コードではなく、常にコードとは別に、機能や面で考える(投稿者に同じことを思い出させる) - 徹底的なコードレビュープロセスのように想像してください。最終的なコードはコミット/元の実装と共通するもの

これは、大部分が再加工されたコードを自分で開発した例を提示するための良い可能性であり、その多くは今よりはるかに優れた実装に置き換えられています。

同様に、アクティブなメンテナーがいないコードには常に問題があります。したがって、メンテナンスされなくなる可能性のあるコードについて心配するように簡単に示唆することもできます。可能であれば別のブランチにそのコードを保持するのに役立ちます。

同じ意味で、常に適切なコメント、ドキュメント、およびその他の更新を伴う新しいコードが必要です。言い換えると、新しい機能を追加したり、既存の機能を変更したりするコードには、常に関連するすべてのドキュメントの更新が伴います。

最終的に、近いうちにそのコードを受け入れることができない、あるいは受け入れないことを知っている場合は、開発者を少なくともリポジトリとヘルプあなたのプロジェクトに感謝​​の気持ちを伝えることができます。

関連する問題