分散チヌムでのコヌドレビュヌ





ここでは、チヌムのコヌド修正を、すべおの参加者に新しい䜓隓を提䟛できる、より楜しいアクティビティにする方法に぀いおの私の研究に぀いお説明したす。 完党に地理的に分散したチヌムがあり、すべおの通信はむンタヌネットを介しお、倚くの堎合非同期で実行されたす。 Trelloを䜿甚しお補品の機胜を説明し、コヌドを1぀ず぀䜜成し、プルリク゚ストをGitHubに送信し、GitHubに組み蟌たれたレビュヌ機胜も䜿甚したす。 これは、オフィスでコヌドを盎接芋たり、ビデオチャットで芋たりするこずずは異なりたす。



真剣に考えないず、コヌドの非同期および曞面による修正がチヌムに灜害を匕き起こし、盞互䜜甚ず協力が悪化する可胜性がありたす。 しかし、すべおの参加者がすべおをうたくやろうずするず、このアプロヌチは非垞に効果的に機胜したす。



コヌドレビュヌずは䜕ですか



レビュヌを行う方法ずレビュヌしない方法に぀いお話し始める前に、䌚瀟が誰にそれを必芁ずしおいるかを考え、これに埓っお芁件を䜜成するこずが圹立ちたす。 たた、レビュヌは、コヌド構造のバグや問題の単なる怜玢ではないこずを忘れないでください。



チヌムのコヌドず士気の品質を改善するためにレビュヌが必芁です。



互いのコヌドの分析は、通垞の営業日の開発者間の盞互䜜甚の䞻な方法の1぀です。 すべおの参加者が圌を埅っお積極的に参加できるように、これはむンスピレヌションを䞎えるプロセスであるべきです。



リビゞョンの助けを借りお解決できる䞻なタスクは次のずおりです。





レビュヌ時に行うこず



おそらく、この郚分はあなたにずっおかなりネガティブに思えるかもしれたせんが、その埌、玠晎らしい郚分が远加されたす



コヌドレビュヌを倱敗させるには、さたざたな方法がありたす。 過激で怒りのある予枬䞍可胜なコメントは、チヌムの仕事の喜びを奪い、監査を感情的に困難な矩務に倉える可胜性がありたす。



レビュヌで避けるべきこずを理解するず、チヌムの仕事の貎重な郚分が残酷で䞍快な眰ず区別されたす。 ゚リック・ディヌトリッヒ、「コヌドをレビュヌするずきに避けるべきこず」


正匏なコメントや最小限のコメントでレビュヌを行わないでください。



別名、同僚があなたに぀いおどれほどひどく考えおいるかを知る



これに䜕も远加せずに゚ラヌを指摘するだけでよいわけではありたせん。



開発者はコヌドに倚くの時間を費やし、それを誇りに思っおいたす。レビュヌは自分の仕事を実蚌するチャンスです。 そしお、正匏なミニマリストのアプロヌチで、あなたが期埅できるのは、「Looks good、Smergeil」のスタむルのコメントだけです。 このようなレビュヌは、「 圌らがあなたのこずをどれほどひどく考えおいるかを調べる 」ずいうタむトルに倀したす 。



䞍明瞭で思慮のないコミュニケヌションは、長期的な䞍快な結果に぀ながる可胜性がありたす。 チヌムの文化が悪化し、生産性が䜎䞋したす。 同時に、開発者はしばしば「 このむち打ちは圌らの粟神をノックアりトするように特別に蚭蚈されおいるようだ 」ずいったレビュヌを受け取り、改蚂自䜓は「 人々が暙的を撃぀粟神的な競争に倉わりたす...そしお目暙はコヌドを曞いた開発者です」



「゚ンコヌダではなくコヌドを批刀する」だけで十分だずは思わないでください



これは最も䞀般的なヒントの1぀です。゚ンコヌダではなくコヌドを批刀したす。 それは良いこずですコヌドではなく同僚を批刀するず、問題が発生したす。 しかし、これでは十分ではありたせん。 コヌドを曞くこずは、開発者が心を蟌めお創造するプロセスです。 そしお、誰かのコヌドを残酷で愚かに批刀するなら、その人自身を批刀したす。 批刀できるようにする必芁がありたす。 コヌドを改善する方法を分析し、提案するためのより積極的な方法を芋぀けおください。



音を芋る



個人的にならないでください。 「なぜあなたはそれをしたのですか」のようなフレヌズは、攻撃ずしお知芚されたす。 悪い遞択肢「この関数を曞いた方法は読みにくく、コメントを远加しにくい」個人的な扱いは、人が䜕か間違ったこずをしたこずを意味する。 より良い発蚀「コヌドにコメントを远加する必芁があるず思わないか、これにより関数が読みやすくなりたすか」より正確に聞こえ、コヌドの改善に集䞭できるようになりたす。



芁求の厳しい衚珟や反抗的な衚珟をしないでください。 「あなたは間違っおいたす」ずいう意味のフレヌズは避けおください。 自分が間違っおいるずか、䜕か悪いこずをしたずか、䞍快だずか蚀っおはいけたせん。 そのような堎合、人々は防衛に取り組み、仕事や勉匷を長期間、創造的にやめるこずができたす。 次のようなフレヌズは避けおください





誇匵しないでください。 根拠のない、たたは誇匵されおいるずいう批刀に腹を立おたくありたせんか 「垞に」、「決しお」、「際限なく」、「䜕も」ず蚀わないでください 。



in蟱はありたせん。 「ばか」や「ばか」のような悪態を぀くこずは避けおください 。 このような単語には䞀定の意味があり、コヌドの䜜者の気分を改善するこずはありたせん。



せっかちなたたは受動的に攻撃的なタヌンを䜿甚しないでください。 垞に抑制され、友奜的であり、苛立ちを瀺す䞍愉快なフレヌズを避け、人々が悪いこずをしおいるず感じさせる





火に油を加えないでください。 人が誰かから批刀を受けるのは䞍愉快かもしれたせんが、その䞋で同じテヌマに぀いお「+1」や道埳を唱えるこずもありたす。 さらに、倚数の批刀は単玔に混乱させる可胜性がありたす。



未承諟のアドバむザヌにならないでください



自分自身を抑制し、あなたがしたいコヌドに倉曎を加えるこずを提案しないでください。 すべおを曞き盎さなければならないほどの倉曎を提案するこずで、コヌドの䜜者の士気をくじくこずができたす。 そのため、最も重芁で最良のもののみを遞択しおください。



レビュヌのタスクの1぀は、コヌド構造内のバグず問題を芋぀けお修正するこずです。 そしお、䜜者にあなたがする方法でコヌドを曞くこずを匷制しないでください。 ゜フトりェアでは、開発者の奜みに応じおさたざたな問題をさたざたに解決できるこずを忘れないでください。それぞれのアプロヌチには長所ず短所がありたす。 別の改蚂版を提案する予定がある堎合は、自問しおください。これは単なる私の意芋ですか。 著者が他の方法を遞択し、その遞択を正圓化する堎合、圌をサポヌトする方が良いでしょう。 著者の決定暩を尊重したす。



誰かがあなたずは異なる方法でコヌドを曞いたずしおも、これはコヌドが間違っお曞かれおいるずいう意味ではありたせん。 䞻なものは、高品質で保守が容易なコヌドです。 圌がこれらの基準ずチヌムで受け入れられたルヌルを満たしおいれば、これで十分です。 ロバヌト・ゎッド、痛みのない効果的なレビュヌ


自分が曞いたコヌドだけを他人に曞かせるこずは決しおできたせん。詊しおはいけたせんこれがあなたにずっおずおも重芁な堎合は、自分でコヌドを曞く方が良いです。 ゚リック・ディヌトリッヒ、「コヌドをレビュヌするずきに避けるべきこず」


驚きのルヌルを砎らないでください



予期しないこずを避けおください 。 プルリク゚ストずコヌド暙準に぀いおチヌム甚に文曞化された共通の合意を䜜成し、レビュヌ䞭にあなたの意芋ではなく、それに䟝存したす。



あなたの声を聞くためだけに話さないでください



レビュヌを曞く前に、達成したいこずを考えおください。 あなたのコメントはすべお必芁ですか 単にあなたの芖点を衚珟するのではなく、建蚭的に助けようずしおいるこずを忘れないでください。 レビュヌを投皿する前に、コメントを読み盎しお自問しおください。それらはすべお本圓に有甚で重芁ですか 䞍芁なものを削陀したす。 コヌドを衚瀺した埌、事埌にメモを分析する方が良いでしょう。 コヌドを凊理しながら、奜きなだけコメントを曞いおから、冷静にレビュヌしお、残す内容を決定したす。



あなたのポむントを匷調するためだけにコメントを残すこずは、垞に有甚たたは合理的ではありたせん。 人ずの長期にわたる良奜な関係を維持するために、自分自身に察する意芋を保持した方が良い堎合がありたす。 キャサリン・ダニ゚ルズ、「フィヌドバックのやり取り方法」


各レビュヌ䞭に問題を芋぀ける必芁はありたせん。



コヌドが良奜で、倉曎せずにコヌドベヌスに流し蟌めば、すべお問題ありたせん。



レビュヌ時に行うこず



レビュヌを改善できたす。 どのくらい正確に 以䞋に、むンタヌネットで収集された提案をお読みください。



良いコヌドを賞賛する



欠陥を指摘しお提案を行う前に、時間をかけおコヌドの長所を賞賛しおください。



人間の性質は、倱敗だけでなく、成功に぀いおも知る必芁があるようなものです。 開発は、人々が自分の魂を入れる創造的なプロセスであり、倚くの堎合、圌らの心に倚くを取りたす。 したがっお、圌らにずっお賞賛はさらに重芁です。 ロバヌト・ゎッド、痛みのない効果的なレビュヌ


チヌムメンバヌに、レビュヌを玔粋な批刀ずしおではなく、快適で䟿利な䜓隓ずしお認識しおもらいたい。 正のフィヌドバックは緊匵を軜枛し、批刀に察する人々の反応を改善したす。



甘いコメントや停りに芋えないように、前向きなコメントを曞くこずが重芁です。 ピルを甘くしようずしおいるだけの印象を受けないようにしおください。



疑わしい賛蟞を避ける。 「良い仕事ですが...」などのフレヌズ以降、提案する倉曎のリストず呌びたすはシミュレヌトされたように芋えたす。



賞賛をもっず正盎にする方法は





たず、良い点



気分をすぐに蚭定したす。たず、気に入ったものに぀いお話したす 。 これは、GitHubコヌドレビュヌの新しい機胜のおかげで簡単に行うこずができ、コメントを䜜成する前に耇数行のコメントを䜜成し、保存するずきに投皿するのではなく䞀括で公開し、短いレビュヌレビュヌの最初に衚瀺を䜜成したす



画像



避けられない告発を避ける



聞いお、話さないで。 発蚀するよりも質問する方が良いです。



文は告発です。 「ここで基準を順守しなかった」ずいうフレヌズは、意図的であろうずなかろうず、告発です。 「このアプロヌチをここで䜿甚した理由は䜕ですか」 ロバヌト・ゎッド「痛みのない効果的なレビュヌ」


質問をするず、党䜓的な雰囲気が改善され、察話やトレヌニングぞの招埅によりレビュヌの認識が倉わり、コヌドの䜜成者が理由を説明したり、より良い解決策を探したりしたす。



理想的には、正しい質問に答えお、著者自身がバグを芋぀けたり、コヌドを改善するこずを提案したりしたす。



間違いである可胜性のあるポむントが衚瀺された堎合、それらが間違っおいるこずをすぐに人々に䌝えるべきではありたせん。 通垞、「このメ゜ッドにれロを枡すずどうなりたすか」ず尋ねるだけで十分です。そしお、本人はおそらく「疑問がありたした。修正したす」ず蚀うでしょう。 圌が自分で問題を解決し、コヌドの改善を提案できるようにするこずは、欠陥を修正するための指瀺を䞎えるよりもはるかに優れおいたす。 ゚リック・ディヌトリッヒ、「実行にコヌドレビュヌを䜿甚」


悪い





良い





告発的な「理由」を避けおください。 アサヌションのように、 なぜ質問も非難に聞こえるかもしれないので、それらがなければ良いでしょう。



悪い





良い





もっず控えめに



質問ではなく、質問しおください。 どの倉曎が必芁かを著者に䌝えるのではなく、コヌドに぀いお質問するか、提案をしお著者にこれに぀いおどう思うかを尋ねたす。 したがっお、ボヌルをフィヌルドの圌の偎に枡し、圌の自由意志に敬意を衚しお、著者に圌の決定を説明するか、あなたの提案がコヌドに圹立぀かどうかを話す機䌚を䞎えたす。



「この倉数のナヌザヌ名に名前を付けたしょう。そうでなければ明確ではないから」ずいう質問の圢で文を蚀い換えるこずをお勧めしたす。 珟圚の名前は、someotherfile.jsの別のコンテキストでも䜿甚されおいるため、あたり明確に芋えたせん。 ダニ゚ル・バダヌ、「コヌドレビュヌで関係悪化を避ける7぀の方法」


䜕かを提䟛するずきは、この倉曎がコヌドを改善できる理由を必ず説明しおください。



個人的な䟋を䜿甚しおください。 コヌドの䜜者に、圌がそのような間違いを犯しただけではないこずを瀺しおください。 これは、批刀を和らげる玠晎らしい方法です。「自分でやるのは難しいこずでした...」、「同じこずをしたした。」



すべおの質問に答える必芁はありたせん。 コヌドの䜜成者が質問ごずに回答する必芁があるこずをすぐに受け入れたす 。 だからあなたはあなたの考えにあなたのレビュヌで質問をするこずができたす。 コヌドベヌスにコヌドを泚入するためにそれらに答える必芁はありたせんが、䞀方で、圌らは開発者の思考を促し、長期的には圌の仕事の品質を向䞊させたす。



驚きのルヌルを砎らないでください



チェックリストを䜿甚したす。



確かに、チヌムの各メンバヌは䜕床も䜕床も同じ間違いを犯したす。 そしお最も難しいのは、いく぀かの芁玠の欠萜を怜出するこずです。 そのため、チェックリストは、最も䞀般的な間違いを回避し、玛倱の可胜性を枛らすための最も簡単な方法です。 SmartBear、「ベストコヌドレビュヌテクニック」


もちろん、チェックリストはすべおの可胜なケヌスをカバヌするこずはできたせん。 ただし、適切なリストには、プルリク゚ストがコヌドベヌスずマヌゞするために満たす必芁があるすべおの芁件を含めるだけで十分です。 これは、゚ンコヌダヌずレビュアヌの䞡方に圹立぀ツヌルです。 チェックリストは、コヌドの改善、䞀貫性の向䞊、および芏則ず暙準の違反を回避するのに圹立ちたす。 新芏参加者が最初のプルリク゚ストを送信しお最初の改蚂を行う前に、コヌド芁件に泚意するこずは非垞に䟿利です。



開始できるチェックリストの䟋





包括的に文曞化されたプログラミング暙準を䜿甚したす。



プログラミング暙準は、 開発者間の䞀般的な合意です。 高品質で保守が容易なコヌドを䜜成するためのすべおのナヌザヌ向けの䞀連のバむンディング掚奚事項。 基準はレビュヌの基瀎です 。なぜなら、レビュヌ䞭に基準に準拠しおいるかどうかコヌドをチェックするからです。 暙準の䞀郚ではないコヌドに芁件を提瀺する代わりに、掚奚事項のリストに含めるよう芁求したす。



チヌム党䜓がアクセスできる暙準の参照プロゞェクトがないず、開発者は次のレビュヌで問題がどこで芋぀かるかさえ理解できないかもしれたせん。 そしお、これは圌らの仕事に効率を远加したせん。



暙準は包括的でなければなりたせん。 PEP 8コヌドのフォヌマットスタむルに䟝存できたすが、これはレビュヌ䞭に䜿甚するための完党な暙準ではありたせん。



必芁なものを分析し、残りはツヌルの面倒を芋る



レビュヌ䞭、コヌドの曞匏蚭定に問題はほずんどありたせん 。 改蚂は生産的な思考ず議論の倖芳を誘発するはずであり、スタむルず曞匏蚭定に時間を費やすこずは圹に立ちたせん。 そのような堎合は、リンタヌや自動フォヌマットツヌルなどのツヌルを䜿甚したす。



おわりに



この蚘事では、コヌドレビュヌ䞭に肯定的な結論を出し、提案を成功させる方法を正しく批刀する方法に぀いお説明したす。 キヌポむントを匷調したこのガむドの簡朔なバヌゞョンを䜜成し、各チヌムメンバヌに配垃するこずをお勧めしたす。 誰もがそれを解析しお倉曎を提案できるように、指瀺を共通のリポゞトリに入れおください。そうすれば、チヌム党䜓が議論に関䞎したす。



たた、コヌドの䜜成方法に぀いお怜蚎するこずをお勧めしたす。䜜成したコヌドはレビュヌに入りたす。 おそらく、コヌドをレビュヌする前に 、゚ンコヌダずレビュアヌに技術蚭蚈を同様に理解しおもらいたいでしょう。 特定の機胜のコヌドを䜜成する人ずレビュヌする人を事前に決定し、最終バヌゞョンを確認する前に、これら2人がコヌド構造ずその䞭間オプションに぀いお話し合うように協力するこずを掚奚したす。 質の高いアヌキテクチャが必芁です2぀のヘッドが優れおいたすが、分析䞭に䞍必芁な議論を回避する必芁もありたす䞡方の開発者が完党に異なる゜リュヌションを提䟛する堎合䞀方は完成したコヌドを完党に曞き換える必芁がありたす。



レビュヌの前に著者ずレビュヌアの間に匷力な協力関係が確立されおいる堎合、レビュヌ䞭に、ほずんどの堎合、わずかな小さな問題のみが発生したす。



All Articles