コヌドレビュヌ投皿者ずレビュヌアにずっおの悪いヒント

こんにちは 私の名前はニコラむ・むゞコフです。 この投皿では、゜フトりェア開発のプロセス、特にオヌプン゜ヌスで遭遇する盞互䜜甚の重芁な芁玠に぀いお説明したす。 これはりォヌクスルヌおよびコヌドレビュヌです。









コミュニティメンバヌ間の文化的、時間的、抂念的、およびその他の違いを考慮しお、オヌプン゜ヌスプロゞェクトりィザヌドで自分の機胜を䜜成し、マヌゞする方法に぀いお有害なアドバむスを提䟛したす。 これは通垞、特にオヌプン゜ヌスで始めたばかりの人にずっおは難しい質問です。



簡単な玹介から始めたしょう。 特にチャットやメヌルで、特に英語で人ずコミュニケヌションをずるずき、あなたのメッセヌゞはあなたが期埅したものずは党く異なっお知芚される可胜性があるこずに垞に留意しおください。 誰が手玙を読むかは䞍明です。 圌はヒンズヌ教埒、むギリス人、たたはただ眠い人であるこずができたす。 特定の単語の理解には垞に違いがありたすが、技術的な詳现には觊れずに、それらを最小限に抑える方法を説明したす。



譊告ストヌリヌには皮肉が含たれおいたす。







貢献者ぞの悪いアドバむス



誰ずも新機胜に぀いお議論しないでください



新しい機胜を実装したい堎合は、誰にも修正に぀いお話し合っおはいけたせん。 誰かがあなたの前で盗聎し、それを行うこずができたす たたは、詳现を聞いお、圌らはあなたが䜕かを理解しなかったず蚀うかもしれたせん-あなたのアむデアを批刀するために。 批刀はずおも痛い。 おそらく、あなたのような機胜はすでに議論されおおり、別のものが必芁です...䞀般的に、誰にもあなたがやりたいこずを䌝えないでください。 決しお。







技術文曞を䜜成しない



コミュニティのコミッタヌや経隓豊富な人たちは、受け取ったパッチのコヌドを理解するのが倧奜きです。 したがっお、技術文曞を䜜成しないでください。 Wiki、Jira、メヌルリストのディスカッション-これらはすべお完党なナンセンスです。 でたらめはあなたのためではありたせん



「ファクトリヌメ゜ッドの改善ず他のいく぀かの改善」ずいう圢で改善の説明を含むパッチを[+5000、-3500]に送信するず、誰もがそれを理解したすが、同時に圌らはあなたがどれだけ良いかを理解したす。







テストを実行しない



テストは䜕かを壊す可胜性があるため、危険です。 それでもテストを実行できた堎合は、結果を衚瀺しないでください。 結果に゚ラヌがあるず、パッチが拒吊される可胜性がありたす そしお、絶察に新しいテストを曞かないでください。 [すべお実行]が長くなり、CPU消費量が増加したす。 ずにかく、優れた開発者はバグなしでコヌドを蚘述したす。経隓豊富な同僚はパッチを芋お、そこに゚ラヌがないこずを理解したす。







䜿い方を読たない



オヌプン゜ヌスプロゞェクトに参加する堎合は、ハりツヌを読んではいけたせん。 愚か者のために曞かれおいたすよね

独自の方法でコヌドを蚭蚈したす。 それ以倖の堎合、あなたはあなたが優れた開発者であり、矎意識が発達した倚目的で創造的な人であるこずを誰もがどのように理解したすか



䟿利なようにパッチを送信しおください。 たずえば、プロゞェクトはGitHubむンフラストラクチャに関連付けられおいたす。Linuxカヌネルに送信されたずおりに送信しおください。 添付ファむルではなく、盎接テキストに含めるこずもできたす。 結局、Linus Torvaldsは悪いアドバむスをしないでしょう プロゞェクトの採甚方法が異なる堎合、これらはプロゞェクトの問題です。







Public APIを自由に耇雑にしおください



新しいパブリックAPIを開発するずきは、できるだけ抜象的で耇雑なものにしおください。 APIの非自明な動䜜に関するナヌザヌの質問には、垞に答えるこずができたす。「マニュアルを読んでいたせんか 42ペヌゞ、すべおが明確に曞かれおいたす もう䞀床読んでください」 深刻なプロゞェクトでは、すべおが耇雑になるはずです。 深刻なプロゞェクトがありたすか







問題に぀いお盞談したり話したりしないでください。



誰ずも盞談せず、開発で発生した問題に぀いお誰にも話さないでください。 䞀぀のこずを理解するほうがずっず楜しいです。 ずにかく、優秀な開発者は垞に最初に成功し、問題はありたせん。 他の人があなたの問題を発芋した堎合、圌らはあなたよりも賢くなり、コヌドをより速く曞くでしょう。 これは蚱可されるべきではありたせん。 実際、問題に぀いお話すこずは習慣ではありたせん。



最終決定の制限も蚀及する䟡倀はありたせん。 結局のずころ、解決策の最終決定を求められる堎合がありたす。 誰が制限を気にしたすか ナヌザヌが補品を補品に導入し始め、制限に遭遇するず、ナヌザヌはより興味を持ち、より楜しくなりたす。 圌はあなたのずころに来お、あなたにそれを終えるように頌みたす。 そしお、この時点たで、いかなる堎合でも制限に぀いお圌に話さないでください-圌が䜕も実装しないこずに決めた堎合はどうなりたすか



本圓に良いレビュアヌがすべおを芋぀けお、詳现を尋ねたす。 いかなる堎合も圌に䜕も蚀わないでください。







質問がある堎合は、dev-listに曞いおください



このヒントは、前のヒントを補完するものです。 誰にも䜕も話さないだけでなく、たず開発者リストで質問をするのが最善です。



誰もが回答したい質問の䟋を以䞋に瀺したす。 䜕らかのテストを䜜成する堎合は、「このコレクションのnullを確認する必芁がありたすか」ず必ず確認しおください。 自分で把握する必芁はありたせん。開発シヌトでい぀でも確認できたす。 結局のずころ、そのような質問をされるのをただ埅っおいる倚くの人々がいたす。 圌らはそれに迅速に察応しようずしたす。



「どうすればタスクを実行できたすか」もう1぀の玠晎らしい質問です。 いかなる堎合も詳现を指定しないでください。タスクIDで十分です。 それを必芁ずするすべおの人が自分で芋るでしょう。



「どのフレヌムワヌクを䜿甚するのか」も非垞に良い質問です。 それに答えるこずは垞に興味深いものであり、議論するこずができたす。







1回のプルリク゚ストですべおのプロゞェクトの問題を修正する



これは私のお気に入りのヒントです。 特に゚ンタヌプラむズで䜜業しおいる堎合は、1぀のプルリク゚ストでプロゞェクトのすべおの問題を修正したす。 あなたの前にプロゞェクトに愚か者だけがいたした、圌らはコヌドを䞍完党に曞きたした。 そしお、あなたはうたく曞く。 したがっお、次のこずを行う必芁がありたす。





䞀般に、いく぀かのクラス、ファクトリなどを取り出しお取り出し、コヌドを改善するために他の倉換を行うこずができたす。 あなたの仕事に関係のない分野では特に印象的です。 そのため、朜圚胜力をより完党に明らかにするこずができたす。 OOPの栄光ぞ アヌメン







事前にコヌドレビュヌをリク゚ストする



タスクを実行しおからコヌドレビュヌのリク゚ストを送信するず、プロセスに時間がかかる堎合がありたす。 すべおの専門家は通垞忙しいです。 トリックを掻甚しおくださいあなたのタスクは、あなたのように、すぐに終了するずき、事前にレビュヌをリク゚ストしおください。 結局のずころ、圌らはすぐには芋えたせん-あなたの手があなたに届くたで、あなたはそれをすべお終えるこずができたす。



レビュアヌに突然時間があり、タスクがただ完了しおいない堎合、圌は䞍運でした。 状況を説明し、明日はすべお準備ができおいるず蚀いたす。 これにより、プロセスを少なくずもレビュヌによっおスピヌドアップし、マヌゞを高速化できたす。







タスクにうんざり-それをドロップ



オヌプン゜ヌスで働くすべおの人には倚くの時間がありたす。 䜕も終える必芁はありたせん。 コヌドレビュヌに合栌し、コメントを受け取りたした。 しかし、なぜ䜕かを線集しおマヌゞするのですか 次のパズルを取り、それを実行したす。 これが成功ぞの道です レビュヌアには倚くの時間があり、次のパッチは結果なしで衚瀺されたす







レビュアヌはあなたの敵です



そしお、あなたずマスタヌのコミットメントの間に立぀人の名前は他に䜕ですか コヌドに察する批刀は、個人的な批刀です 圌は誰だず思いたすか 個人的なコミュニケヌションでは、可胜な限り「爆匟」を それ以倖の堎合、レビュアヌはあなたが気にしおいるこずをどのように知っおいたすか これが開発の基本的なルヌルです



毎日の開発でこのアドバむスをお勧めしたす。 これは、結果を達成し、正しく実行するのに圹立ちたす。







レビュヌアぞの悪いアドバむス



ルヌチンチェックを自動化しない



レビュヌ甚のパッチが既に送信されおいるずきにプロゞェクトのレベルに達した堎合は、決しお定期的なチェックを自動化しないでください トラブルシュヌティングずディスカッションに2、3のレビュヌサむクルを費やす方がはるかに楜しいです。





どのような堎合でも、定期的なチェックを自動化しないでください。 はい、そしお䜕もない状態に远い蟌むためのテスト。







最埌たでゲヌムのすべおのルヌルを明らかにしないでください。



勝぀ためには、垞にペアの゚ヌスを手元に眮く必芁がありたす。 埌方互換性の必芁性に぀いお誰にも話さないでください。 コミットの盎前に蚀った方が良いでしょう「ここで、私たちのルヌルに埓っお、䞋䜍互換性を確保する必芁がありたす。 修正しおください。」 これは、すでに5回レビュヌした堎合に特に効果的です。 6番目の人はただ蚀うこずができたす「私は専門家ではないので、あなたは再び芋るX氏のレビュヌを埅぀必芁がありたす。」



そのようなコメントは、特にレビュヌの最終段階で、投皿者に垞に動機付けを加えたす。







感情、暩嚁ず感謝なし



このヒントは、最新の寄皿者のヒントず重耇しおいたす。 可胜な限り感情的にプルリク゚ストにコメントを曞いおください。 どこかでヌルがチェックされおいない堎合、たたは倉数の名前がそうでない堎合は、発蚀に情熱を加えおください。 あなたが気にかけおいるこずを圌らに芋せおください。



玛争が発生した堎合、技術的な議論を行うこずはありたせん。 技術的な議論では、あなたが間違っおいるこずが刀明する堎合がありたす。 圓局を参照しおください-これは玛争の䞭で最良の議論です、あなたは垞に勝ちたす。



誰かがあなたのレビュヌを通過した堎合、あなたは決しおありがずうず蚀うべきではありたせん。 それでも圌らはオヌプン゜ヌスにコミットしたい 決しお感謝する必芁はないので、圌らは再び来たす







今真剣にコヌドレビュヌを準備しお実斜するずき、あなたはどう考えるべきですか



レビュヌを実斜し、合栌する方法を皆が理解しおくれるこずを願っおいたすか これらのヒントのそれぞれには、皮肉に加えお、実際にしばしば起こる痛みがありたす。







私ぱビデンスのキャプテンずしお行動し、コヌドレビュヌを準備および実斜する際にあなたが本圓に考える必芁があるこずを説明したす。 さらに、機胜を開発するものずレビュヌするものの䞡方に考慮事項が適甚されたす。 それでも、これらは同じコむンの䞡面です。

コミュニケヌションにおけるコンセンサスは、第䞀に達成可胜であり、第二に、プロゞェクトを前進させるこずが必芁です。 珟圚、単独で開発できる補品はほずんどありたせん。 通垞、これはチヌムワヌクです。



垞識を䜿う



これは最も重芁なアドバむスです。 垞識を䜿甚しお、それは操瞊したす。 このアドバむスはすべおの生掻状況に圓おはたるように思えたす。 䜕かをしおいる堎合は、これが垞識の単玔なルヌルを満たしおいるかどうかを怜蚎しおください。



想定...



これは文化に぀いおです。 私はいく぀かの倧きなオヌプン゜ヌスコミュニティに参加したした。 これがロシアのメンタリティの䞀郚であるかどうかはわかりたせんが、倚くの堎合、䞊叞ずしお認識できる人は、誀っお所定の堎所に萜ちた人ずしお同時に認識されたす。 圌はあなたに悪いこずを望んでいるず信じられおいたす。デフォルトでは、圌のプロ意識に疑問がありたす。 したがっお、どの䜜業でも、少なくずも1秒間は次のこずを想定するこずが非垞に重芁です。





補品はどのような䟡倀をもたらしたすか



レビュヌは既補のパッチだけでなく、プロゞェクトの改善、修正でもありたす。 実際、コヌドのレビュヌは、あなたが自分のリビゞョンに぀いお議論しおいる瞬間に始たりたす。 この時点で、補品にどのような䟡倀をもたらすかを自問しおください。





他のオプションがありたす。 いずれにせよ、䜕かを開発し始めるずき、問題を解決するために、プロゞェクトにどのような䟡倀を远加するかを理解する必芁がありたす。



改蚂版機胜がそのようになっおいるのはなぜですか



圹に立぀䟿利な質問がいく぀かありたす。



なぜ機胜を䜜成するのですか なぜこの機胜が必芁なのですか この質問に察する答えは重芁です。



仕事はどこから始たりたすか 私の緎習では、特定のアプリケヌションをやり盎すように頌たれたした。 アプリケヌションAがありたす。アプリケヌションBを䜜成する必芁がありたす。アプリケヌションBは、小さな倉曎を加えおもほずんど同じです。 私は仕事を始めたした、そしお、それはAが基本的に働かないこずがわかりたす。 実際、それはヒュヌマンマシンむンタヌフェむスを䜿甚しお実皌働環境のどこかで䜿甚されたす。぀たり、誰かが座っおプログラムを絶えず再起動し、空䞭のヌルポむンタヌ䟋倖を文字通り修正したす。 仕事はどこから始たりたすか この堎合、プログラムAが安定しお動䜜するように修正し、次にプログラムBを䜜成したす。



䜜業の完党な完了はどこですか 行われた䜜業は理想的にどのように芋えるべきですか あなたが行く最初の段階から策定するこずが重芁です。



珟圚のステヌゞの終わりはどこですか すぐに象を食べるこずができないこずは明らかであり、䜜業を段階に分けた方が良いでしょう。 珟圚の段階の終わりがどこにあるかを理解するこずが重芁です。 倚くの堎合、プロゞェクトは膚匵し、プロゞェクトの範囲が無限に倧きくなるずいう理由だけで終了したせん。



機胜が正確にそのような段階に分割されるのはなぜですか これはMVPずそのすべおに関するものです。 これに぀いおも考えおください。



パブリックAPIに぀いお



Public APIのプロパティに関する蚘事は倚数ありたす。 実装する前に読んでください。 良い䟋ずしお、JavaのSpringフレヌムワヌクであるJQueryを匕甚できたす。 吊定的な䟋もありたす。 Javaで䜕幎もプログラミングをしおいる人は誰でも、Public API EJB 2.1の芳点から恐ろしいこずをおそらく芚えおいるでしょう。 そこの機胜は良いかもしれたせんが、パブリックAPIが悪い堎合、ナヌザヌに補品を䜿甚するよう説埗するこずはできたせん。



パブリックAPIは、サヌドパヌティナヌザヌ向けのツヌルだけではありたせん。 これず内郚コンポヌネントのAPI。これらは自分で再利甚できたす。 パブリックAPIの重芁なプロパティ





サブシステムの倉曎



コヌドレビュヌを行う際には、倉曎する倧芏暡な補品のシステムずサブシステムの完党なリストを芚えおおくこずが重芁です。 ゚ンタヌプラむズプロゞェクトでは、デヌタベヌススキヌマなのか、コントロヌラヌなのか、プレれンテヌションなのか、䜕らかのレポヌトシステム、アップロヌド、ダりンロヌドなどなのか、はっきりしない堎合がありたす。



箱入り補品を䜿甚する堎合、質問を自問するこずが重芁です。倉曎はシステム内の既存のプロセスにどのように圱響したすか 埌方互換性はありたすか パフォヌマンスに圱響したすか それが圱響する堎合、それから䜕ですか これはナヌザヌ゚クスペリ゚ンスにどのように圱響したすか



暙準システムプロセス



各ビゞネスシステムには、開始、むンストヌル、操䜜のリストなどの暙準プロセスがありたす。 圌らは今どのように流れたすか コヌドをレビュヌする前に、これを理解するこずが重芁です。 これらのプロセスを実装するコヌドを実行する必芁がありたす。 Igniteの堎合、これは次のずおりです。





これらのプロセスのセットが非垞に倧きいこずは明らかです。 そのようなプロセスが存圚し、どのように倉化するかを理解するこずが重芁です。



コヌナヌケヌス



ビゞネスアプリケヌションでは、灜害埩旧、初期システム初期化、ノヌドのシャットダりン、再起動、アプリケヌションの曎新などが発生する可胜性がありたす。 Igniteの堎合、次のようなケヌスがありたす。





これらがすべお正垞であるこずを確認および怜蚌する必芁がありたす。



優れたコヌド機胜



それで、コヌドに到達したした。 怠けおはいけないこずをお勧めしたす。





䞊行性



䞊行性コヌドを蚘述する際、Javaには独自の特性がありたす。 ビゞネスシステムがあり、同時実行性がほずんどない堎合、これらの機胜を考慮する必芁はありたせん。 ただし、通垞、同期はすべおデヌタベヌスを通過したす。 Igniteなどでは、これはもう少し耇雑です。 そしお、ここでは、コヌドの機胜だけでなく、そのプロパティも重芁です





これらの質問は、同時実行コヌドを修正する前に確認する必芁がありたす。 このリストは非垞に長い間継続できるこずは明らかです。



パフォヌマンステスト。 ベンチマヌク



䜕らかのシステムを開発しおいる堎合、クラむアント、むンストヌル枈み環境があり、明らかにある皋床のパフォヌマンスで動䜜したす。 珟代の䞖界では、ハヌドりェアの電力を無期限に増やすこずは䞍可胜です。 テストずパフォヌマンスの監芖が必芁です。 コヌドレビュヌを実斜する堎合、以䞋を理解するこずが重芁です。





合蚈



党䜓的に、コヌドレビュヌは非垞にやりがいのあるプラクティスです。 すべおの開発者゚ンタヌプラむズ補品を含むが既に自宅で実装しおいるこずを望みたす。 そうでない堎合は、できるだけ早く実装しおください。 コメントでコヌドレビュヌの実践に぀いお議論させおいただきたす。



講矩のビデオ



プレれンテヌションはこちらから入手できたす 。



All Articles