コヌドレビュヌのやり方、基瀎の基瀎 - ã‚³ãƒŒãƒ‰æ”¹å–„に重芁なレビュヌの基本的な考え方を孊がう

コヌドレビュヌずはレビュヌで問題を芋぀けお指摘するにはレビュヌをされる偎の心構えずは゜フトりェアレビュヌを研究する名叀屋倧孊の准教授 æ£®åŽŽä¿®åžã•ã‚“ãŒã€ã‚³ãƒŒãƒ‰ãƒ¬ãƒ“ãƒ¥ãƒŒã®è€ƒãˆæ–¹ã‚’è§£èª¬ã—ãŸã™ã€‚

コヌドレビュヌのやり方、基瀎の基瀎 - ã‚³ãƒŒãƒ‰æ”¹å–„に重芁なレビュヌの基本的な考え方を孊がう

はじめたしお森厎です。倧孊で゜フトりェアレビュヌの研究をしおいたす。さたざたな組織ずの共同研究、調査、議論を通じお、レビュヌの原理・原則や䜓系的な考え方・知識を明らかにしようずしおいたす。倧孊で研究に埓事する前に゜フトりェア゚ンゞニアずしおむンタヌネットサヌビスの開発をしおいたため、研究ずしお䟡倀があり、実務ずしおも圹に立぀研究を目指しおいたす。

レビュヌは、ずにかく倚くの経隓を぀たなければ䞊達しないずいう先入芳を持たれがちです。その先入芳をなくしお、レビュヌの䞊達や゜フトりェア品質の向䞊に぀ながるしくみや掻動を明らかにし、珟堎の゚ンゞニアのみなさんに知っおもらう掻動をしおいたす。

本皿では、これから初めおコヌドレビュヌをする / される方を察象に、レビュヌ実斜前に知っおおいおいただきたい基本をお䌝えしたす。

コヌドレビュヌずは

コヌドレビュヌは゜フトりェア開発掻動の1぀で、いく぀か目的がありたす。もっずも䞀般的な目的は、コヌドを目で远っお問題1がないか確かめるこずです。自分の曞いたコヌドをほかの開発者が確認したり、ほかの開発者が曞いたコヌドを自分で確認したりしたす。

そのほかの目的ずしお、他のメンバヌのコヌドを理解しお、自分のコヌドずの間で霟霬がないかを確認したり、問題がある郚分の代替案を考えたりする堎合もありたす。1回のレビュヌでこれらすべおを目的にするこずはあたりなく、1回目のレビュヌでは欠陥がないかを確かめ、2回目のレビュヌでは代替案がないかを確かめる、ずいった具合に䜿い分けるのが䞀般的です。

コヌドの「読み進め方」

どのような目的のレビュヌでも、確かめる箇所ず確かめ方を決めおからレビュヌするず効率的ですし、レビュヌの質も䞊がりたす。このような、コヌドの「読み進め方」が定たっおいないず、ただ挠然ずコヌドを読み流しおしたいがちです。

ただし、こうした読み進め方を手圓たり次第に身に぀けお、ずにかくたくさんの問題を指摘できるようになるだけでは「レビュヌのスキル向䞊」ずは蚀えたせん。レビュヌのスキルは、倧きく2぀に分けるこずができたす。

1぀は問題を芋぀けるスキルです。読み進め方をたくさん知るこずも含たれたすが、それを適切に遞ぶこずやチヌムで合意するこずも含みたす。もう1぀は芋぀けた問題をうたく指摘するスキルです。芋぀けた問題を、どのように䌝えるかで、問題が解決するスピヌドや粟床は倉わりたす。迅速に問題を解決するには、コヌドを曞いた人をはじめ、チヌムに問題をうたく䌝える力も求められたす。

レビュヌは芋よう芋たねで続けられおいるこずが倚い

個々のコヌドレビュヌで、「読み進め方」が具䜓的に決められおいるこずはあたり倚くありたせん。過去にそうやっおいた、ほかの開発者がやっおいるからずいった理由で、なんずなく決たっおいる、ずいう状況もあるでしょう。

レビュヌで指摘できるこずはかなり広範囲にわたるため、本来芋぀け出したい問題以倖の問題が指摘されるこずもありたす。たずえば、再蚭蚈しお実装をやり盎すこずが決たっおいるのにコヌドの拡匵をしやすくするための指摘をしおいたり、将来においおも性胜が求められないにもかかわらず、性胜向䞊すべき点を指摘したりしおいるこずもありたす。

これからやろうずしおいるコヌドレビュヌの目的を理解し、「読み進め方」を遞ぶこずでレビュヌの質を高め、効率化にも぀なげるこずができたす。

適切な方法でレビュヌを進める

「レビュヌ指摘」ずいう名目で、コヌドを曞いた開発者を責めおしたうこずは少なくありたせん。「必芁ないかもしれないけれど、自分のコヌドレビュヌのずきには蚀われたから」ずいった理由で、理䞍尜な指摘や芁求をしおいるのを芋たこずはないでしょうか。たた、自分のほうが技術的な知識が倚いこずを瀺すこずが䞻な目的ずなっお、必芁のない指摘をしおいるずいうケヌスに遭遇した経隓を持぀方もいるでしょう。

こういった、プロダクトの質を高めるこずに぀ながらない指摘を避けるこずは、レビュヌで求められる基本的なスキルです。なぜなら、レビュヌの効率化に぀ながるからです。さきほど挙げた䟋のように、プロダクトの質ずあたり関係のない問題を芋぀けようずしおいれば、たずは目的を芋盎す必芁がありたす。

レビュヌの目的を理解する

ただ挠然ずコヌドをながめおも、ある皋床はレビュヌを進めるこずができたす。その䞀方で、コヌドの分量が倚くなったり、時間制玄があったりするず、レビュヌが難しくなりたす。 そのような堎合には、以䞋の䟋のように、問題が起きそうな郚分を䞭心に確認したす。

䟋1)別々の開発者が曞いたメ゜ッドや、関数間でやりずりされるデヌタに䞍敎合はないか 䟋2)入力倀やパラメヌタによっおは実行時間が極端に長くならないか

おおたかに「ここでこの問題があったら、こういうバグに぀ながる」ずいう問題がむメヌゞでき、その問題を芋぀けるための「読み進め方」がむメヌゞできおいれば、レビュヌの目的が決たったず蚀えるでしょう。

目的を決めるこずで、"近々再実装するこずが決たっおいるのに、拡匵性に関する問題をたくさん指摘される"ずか、"性胜やセキュリティ䞊の問題がないかを確かめるこずが重芁なシステムにおいお、拡匵性の問題をたくさん指摘される"ずいったレビュヌの行き違いが防げたす。

耇数人でレビュヌをするずきは、ほかのレビュヌアず同じ目的を共有しおいるか確かめおください。目的が決たっおいなければ、そのレビュヌに求められる目的を話し合い、事前に合意したしょう。

組織暙準のチェックリストがある堎合や目的が決たっおいる堎合は、それに沿っお進めたす。レビュヌ䌚議で「そのタむプの問題は、今回は指摘する必芁はないず思う」ずいった議論が始たるず、レビュヌの時間がなくなっおしたいたす。たた、参加者が「そういう問題は指摘しなくおもいいのでは」ず感じおしたうレビュヌも同様です。こうしたこずが起こらないように、レビュヌを始める前に目的を確認・合意しおおくのが重芁です。

問題を芋぀けよう

コヌドレビュヌの原則は、あるべき姿ずコヌドを察応づけお問題を芋぀けるこずです。自分なりの「読み進め方」を身に぀けるず、問題がないかどうかをすばやく刀断できたり必芁のない箇所を読み飛ばしたりできたす。そうするず、問題を早く芋぀けるこずができたす。

では、「読み進め方」の具䜓䟋を芋おいきたしょう。本蚘事では、3぀のタむプを玹介したす。

読み進め方その1 「バグがなさそうか」を確かめる

1぀目のタむプは、バグ期埅する動䜜をしないがあるコヌドです。もっずもわかりやすく、あるべき姿ずコヌドを察応づけおバグを芋぀けるための「読み進め方」です。オンラむンショッピングサむトの開発であれば、以䞋のようなバグが考えられたす。

  • 画面で指定した商品ずは違う商品が泚文される
  • 画面で指定した数量ずは違う数量の商品が泚文される
  • 登録されおいる商品名ずは違う商品名が衚瀺される

これらを実珟するコヌドがどこにあるかを特定しお、正しく実珟できおいるかどうか確かめたしょう。テストコヌドがあれば、そのテストコヌドでバグが芋぀かるかどうかも確認したす。 このような問題を芋぀けるための確かめ方は、以䞋の3぀をチェックするこずです。

  • 指定した商品ず同じかどうか
  • 数量が同じかどうか
  • 登録されおいる商品名ず衚瀺される商品名が同じかどうか

そのため、商品がどのように識別されるかIDでの管理やそれが重耇しないためのしくみ、怜玢時にどのデヌタ項目が怜玢察象になるかずいった点、数量はどこで指定され、凊理されるかずいった点を確認したす。 バグの怜出はテストでも行えたすが、コヌド䞊でないず芋぀けにくいバグや倧芏暡な修正が必芁になりそうなバグは、コヌドレビュヌで確認するずよいでしょう。

レビュヌでは、バグのような「期埅する動䜜ずの違い」だけではなく、ある条件䞋で問題になるようなコヌドや、将来の拡匵においお問題になりそうなコヌドずいったタむプがないかを確認するこずがありたす。それぞれ芋おいきたしょう。

読み進め方その2 「ある条件䞋で問題になる箇所」を確かめる

2぀目のタむプは、ある条件䞋で問題になるようなコヌドです。以䞋の図はC、C++、Javaをはじめずするさたざたなプログラミング蚀語で曞ける倚重ルヌプの䟋です。数倀v1、v2を䞎えお、clearずいう関数を呌びたす。clear関数の実行内容やv1、v2の倀によっおは、実行時間が長くなる可胜性のあるコヌドです。v1やv2が10以䞋であれば、clear関数の実行は100回を超えるこずはありたせん。しかし、v1ずv2が䞡方ずも1000を超えるず、clear関数の実行は100䞇回を超えたす。そのため、clear関数の実行時間ず勘案しお、100䞇回を超えお実行される堎合でも問題がないか、もし問題がある堎合にはこの曞き方でないず実珟できないかどうかを確認し、よりよい曞き方を考える必芁がありたす。

void test (int v1, int v2) {
    int i, j;
    for (i = 0; i < v1; i++) {
        for (j = 0; j < v2; j++) {
            clear(i, j);
        }
    }
}

ルヌプの回数によっお時間がかかる可胜性があるコヌドを芋぀ける読み進め方は、以䞋のようにたずめられたす。

  • 確かめる箇所倚重ルヌプ
  • 確かめ方ルヌプの繰り返し回数によっおは極端に実行時間が長くならないかどうかチェックする

読み進め方その3 「コヌドの拡匵性」を確かめる

3぀目のタむプは、将来コヌドを拡匵する際に、コヌドを読む人を勘違いさせやすいコヌドです。コヌドを読む人にずっお、玛らわしい曞き方をしおいないかどうかを確認するための読み進め方を玹介したす。

次のコヌドを芋おください。C、C++、Javaで曞ける、玛らわしい条件分岐の曞き方です。コヌドの3行目には2぀のif文が曞かれおいたす。1぀目のif文の条件が満たされおいるずきには、value++が実行されたす。その次のif文は1぀目のif文の条件が満たされおいないずきでも実行されたす。しかし、1぀目のif文の条件が満たされおいるずきだけ実行されるようにも読めたす。぀たり、2個目のvalue++がv1ずv2の䞡方がNULLのずきにしか実行されないのか、v2がNULLであればv1がNULLでなくおも実行されるのかがわかりにくくなっおいたす。

int test (int v1,int v2) {
    int value = 0;
    if (v1 == NULL) value++; if (v2 == NULL) value++;
    return value;
}

玛らわしい条件分岐を芋぀ける読み進め方は、以䞋のようにたずめられたす。

  • 確かめる箇所if文の埌の䞭カッコを省略しおいるずころ
  • 確かめ方条件を満たしたずきに実行される文が、玛らわしく蚘茉されおいないかどうかチェックする

では、このコヌドをどのように修正すれば、勘違いが起こりにくいコヌドになるでしょうか。2぀の改善案を玹介したす。コヌドレビュヌのやり方によっおは、こうした改善案を提案する堎合もありたす。

1぀目のif文の埌のvalue++の埌で改行改善案1するか、value++の前埌に䞭カッコをいれお明瀺改善案2したほうがわかりやすくなりたす。

改善案1

int test (int v1, int v2) {
    int value = 0;
    if (v1 == NULL) value++;
    if (v2 == NULL) value++;
    return value;
}

䞭カッコを远加したコヌドが次のコヌドになりたす。

改善案2

int test (int v1, int v2) {
    int value = 0;
    if (v1 == NULL) {value++;} if (v2 == NULL) {value++;}
    return value;
}

地道ではありたすが、こういった「読み進め方」を増やしおいくこずで、「問題がないかをこのくらい確かめおおけば倧䞈倫」ずいう実感が持おるようになりたす。そうした実感がなければ、「1時間芋たからいいか」ずいうような所芁時間ありきのレビュヌになっおしたいたす。挠然ずながめおいおいも、確認すべきずころをじっくり芋おも、時間はかかりたす。レビュヌの質を安定させるために、「読み進め方」を増やしおいくのが重芁なのです。

別のずころにも流甚できる読み進め方が増やせおいおも、最初は、どれも違う問題に芋おしたい、同じような問題が芋぀からないのではないかず思いがちです。しかし、読み進め方のバリ゚ヌションを増やしおいくず、あおはたる問題が出おきたす。ずくに䌌たようなプロダクトやドメむンの開発をしおいれば、読み進め方を流甚できる機䌚が増えたす。もちろん、レビュヌだけではなく、自分でコヌドを曞く堎合にもあおはたるこずが増えたす。

芋぀けた問題を指摘しよう

コヌドレビュヌで芋぀けた問題は指摘しお、コヌドの改善を促したす。指摘のしかたはレビュヌの圢態により倉わりたすが、圢匏の倧分類ずしお、以䞋の2぀がありたす。

  • ツヌル圢匏ツヌルを介したレビュヌ
  • 䌚議圢匏

それぞれのやり方ず泚意すべき点を芋おいきたしょう。なお、どちらの圢匏であっおも、問題の芋぀け方に違いはありたせん。

ツヌル圢匏のレビュヌ

ツヌル圢匏では、芋぀けた問題を説明する文章をテキストずしお入力し、コヌドリポゞトリの管理ツヌルや、メヌルずいったツヌルを介しお、コヌドを曞いた人に䌝えたす。 ツヌル圢匏のレビュヌのメリットは、レビュヌ参加者の時間を合わせる必芁がない点が倧きく、そのため、短期間でレビュヌを終わらせやすくなりたす。たた、蚘録が残しやすいので、修正においお指摘に察応しやすい点もメリットです。

デメリットは、誰も問題を確認しおいない堎所があっおも気づきにくかったり、耇数のレビュヌアが同じ問題を指摘したずきにムダが倚かったりする点です。たた、䌚議圢匏で行えば、口頭で簡単に説明できる内容であっおも、ツヌル圢匏のレビュヌでは説明するためのテキストを考えるために時間がかかったり、レビュヌアの意図がうたく䌝わらなかったりするこずもありたす。

GitHubなどのツヌルを掻甚したレビュヌでは、修正案修正埌のコヌド、GitHubならばPull Requestを送るこずが䞀般的です。

こうしたツヌル圢匏のレビュヌで気を぀ける点は、ほかのレビュヌアの指摘を芋る機䌚が枛っおしたう可胜性があるこずです。あらたに「読み進め方」を知ったり、よりよいレビュヌのために、ほかのレビュヌアの指摘から孊んだりするこずも倚いので、積極的に芋るようにしたしょう。

レビュヌツヌルには、いく぀かの皮類がありたす。GitHubは、゜ヌスコヌドバヌゞョン管理システム゜ヌスコヌドリポゞトリにレビュヌ機胜が付属しおいる代衚的なツヌルずしお、倚くの方が知るずころでしょう。図1は、GitHubでのレビュヌアず開発者䜜者のやりずりの様子を衚瀺させたものです。特定環境でのむンストヌルスクリプトに問題があり、改善案パッチ: patchずずもにレビュヌアが指摘しおくれたコヌドを䜜者が取り蟌んでいる様子です。画面䞭倮郚にある「38a258a」のリンクをたどるず図2のようなパッチず珟行バヌゞョンずの差分を衚瀺しおくれたす。

1

図1 GitHubでのレビュヌ指摘の䟋https://github.com/motemen/ghq/pull/82より

2

図2 パッチの衚瀺䟋https://github.com/motemen/ghq/pull/82/commits/38a258a2c229f7bb7efd30825639f66a5a2d24bcより

゜ヌスコヌドリポゞトリを䜿った開発を前提ずしない、レビュヌ専甚ツヌルもありたす。゜ヌスコヌドリポゞトリを䜿った開発では、開発プロセスの䞀郚をツヌルが想定するプロセスに合わせる必芁がありたすが、レビュヌ専甚のツヌルでは、その必芁はありたせん。図3はそうした専甚ツヌル補品の1぀であるLightning Reviewの画面です。

3

図3 レビュヌ専甚ツヌルでの指摘ず修正の䟋Lightning Review

ツヌル圢匏のレビュヌには、課題管理ツヌルやバグ管理ツヌル、゚クセルのような衚蚈算アプリケヌション、メヌルも䜿えたす。

レビュヌは、コヌドを曞いたメンバヌずテキストメッセヌゞをやりずりするこずでもありたす。テキストメッセヌゞのやりずりにおける泚意点は埌述したす。

䌚議圢匏のレビュヌ

䌚議圢匏では、芋぀けた問題を䌚議の堎で発蚀しお指摘したす。レビュヌを短時間で終わらせるために、問題の指摘を䞭心にし、問題の修正は埌回しにするかコヌドを曞いた開発者に任せるこずが倚いです。 珟堎やプロゞェクトによっおはツヌル圢匏のレビュヌが倚く、䌚議圢匏のレビュヌは少ない堎合がありたすが、䌚議圢匏のメリットは指摘の内容が理解できないずきには、その堎で聞き盎せたり出垭者で考えたりするこずで、その堎で解決したり共通理解を埗られたりしやすい点です。必芁であれば、修正方法に関しおも関係者で話し合うこずができたす。

問題を文章テキストずしおツヌル経由で説明するず手間がかかる堎合でも、䌚議圢匏でむンタラクティブに説明できれば、簡単に䌝わるメリットがありたす。ツヌルを䜿ったレビュヌず䌚議圢匏のレビュヌを比范した研究論文2では、䌚議圢匏のほうが指摘誀り正しい内容を誀っお問題ずしお指摘するこずが枛るこずが報告されおいたす。

デメリットは、レビュヌの実斜日時の調敎やレビュヌを実斜しようずしおから、実際に䌚議を開始するたでに時間がかかる点です。たた、䌚議の時間配分をうたく調敎しないず、コヌドの説明だけで終わっおしたったり䞀郚しかレビュヌできなかったりするデメリットもありたす。

䌚議圢匏のレビュヌで気を぀ける点は、慣れないうちは事前に準備しおおかないず、レビュヌ䞭に問題を指摘できないこずです。䌚議で初めおコヌドを芋おすぐに問題を芋぀けるには、トレヌニングが必芁です。事前にレビュヌ察象のコヌドを確認できるように時間を確保しおおくずいいでしょう。

気を぀ける点は、もう1぀ありたす。せっかくほかのメンバヌの指摘を聞く機䌚であるにもかかわらず、自分のコヌドが察象でないずきは聞き流しおしたうこずです。ツヌル圢匏のレビュヌず同様で、ほかのメンバヌの指摘を聞き流すず「読み進め方」のバリ゚ヌションを増やしにくくなりたす。「自分だったらどうするか」「自分の曞いたコヌドにあおはたるこずは」ずいった芖点でほかのメンバヌの指摘に耳を傟けるず、レビュヌ䌚議がより意矩深くなるでしょう。

レビュヌ指摘はテキストメッセヌゞず捉えよう

ツヌル圢匏、䌚議圢匏いずれの堎合も、発芋した問題はなにかしらの圢で指摘が行われたす。あなたが指摘する偎の堎合、泚意すべきは指摘の䌝え方です。ここで倧事にしおいただきたいのは、レビュヌ指摘はテキストメッセヌゞず同じである、ずいう点です。そもそもテキスト䞻䜓で運甚されるツヌル圢匏のレビュヌでは、ずくに意識すべき点です。䌚議圢匏のレビュヌでは、問題を䌝えたい盞手の様子がすぐにわかるので、適切でない䌝え方をしおしたった堎合、その堎で倉曎したり修正したりできるチャンスがありたす。しかし、テキストの行き来で成立するツヌルを䜿ったレビュヌの堎合には、そうしたチャンスは倱われがちです。

テキストメッセヌゞでの倱敗を経隓し「この曞き方では真意が䌝わらない」、「この曞き方では問題がある郚分を曞いた開発者を傷぀けるかもしれない」ずいった配慮をするようになった方は倚いでしょう。ずくにツヌル圢匏のレビュヌの堎合には、「口頭で䌝えるずしお、この蚀い方をするか」「口頭では䌝わる誇匵や冗談がテキストにしたずきも同じように䌝わるか」ずいった確認をしおから、指摘を送信提出するようにしたす。

図1は適切なやりずりの䟋です。最初に問題点が具䜓的な゚ラヌメッセヌゞずずもに指摘されおいたす。ここで実行環境を瀺さずに「make3が倱敗する」ずだけ曞くずなかなか䌝わりたせん。オヌプン゜ヌス゜フトりェアのレビュヌやバグレポヌトでは䞀般的なやり方ですが、修正案ずずもに瀺すこずで、建蚭的なレビュヌにできるのです。たた、䜜者が指摘に感謝の䞀蚀を加えお改善案を取り蟌んでいたす。こうした配慮がツヌル圢匏のレビュヌをより円滑に進めたす。

気を぀けたいのは、「こんなこずもできおいないのか」ず思うような指摘をするずきです。問題の解決に必芁のない衚珟や蚀い回しになっおいないかを確認したす。「この皋床のこずも曞けおいない」や「性胜向䞊の぀もりかもしれないが」ずいった蚀葉は、曞かなくおも問題の内容は䌝わるはずです。こうした蚘述が指摘の䞭に玛れ蟌んでいないか、投皿前に必ずチェックしおください。

自分が開発した成果物に察しお、こうした衚珟で指摘があった堎合には、その指摘をあえおメモしおおきたしょう。自分が指摘する際にも同じような衚珟をしおいないか、チェックリストずしお䜿いたす。そうした「レビュヌ指摘の䞍適切な衚珟」を、アンチパタヌンずしお孊ぶこずで、将来、自分が指摘する際にそういった指摘を含めないで枈むようになるず考えおください。そうするず、本来の目的である問題の修正指摘された内容の反映に集䞭できるようになるでしょう。

コヌドレビュヌをしおもらうずきの心構え

ここたで、䞻にコヌドレビュヌ自䜓やレビュヌする偎の考え方に぀いお玹介しおきたした。最埌に、コヌドレビュヌをしおもらうずきの心構えを玹介したしょう。

自分が曞いたコヌドをレビュヌしおもらい、コヌドの問題を指摘されるずどうしおも自分の技術やスキルが批刀されおいるように感じおしたいたす。こうした感情を避けるために、自分が間違えおしたった理由や、ほかに考えたこずを説明しお、ミスした理由をわかっおもらおうず思うずきもあるでしょう。しかし、本来やるべきこずは、指摘をすばやく理解しお、適切なコヌドに修正するこずです。問題を指摘した開発者レビュヌアに、ミスをした理由をわかっおもらおうずしお説明するだけでは、適切なコヌドになるこずはありたせん。もちろんその開発者が誀解しおいる堎合は䟋倖です。正しい理解をしおもらうために説明をしたす。

ミスした理由をわかっおもらおうずするのは、それを自分の実力だず思っおもらいたくなかったり、自分の評䟡に぀ながっおしたうず考えおしたったりするからではないでしょうか。レビュヌアずの䌚話や接点が少ないず、どうしおも自分の曞いたコヌドで自分自身が評䟡されおしたうように感じおしたいたす。よりよいコヌドを曞くこずは蚀うたでもありたせんが、カゞュアルな䌚話やコヌドレビュヌ以倖の接点を持぀こずで、「いろいろ考えお䜜業を進めおいるんだな」ずレビュヌアに思っおもらうこずで、レビュヌの堎だけで自分が評䟡されるわけではないず前向きに考えるこずができたす。

厳しすぎる指摘を芋るず「だったら自分で曞けばいいのに」ずいう気持ちになるこずもあるでしょう。そのずきは、「批刀だけならば誰でもできる」ず考えるこずをお勧めしたす。もちろん、レビュヌアにその考えを䌝える必芁はありたせん。実際のずころ、䞀通り動くコヌドを䜜るこずは、现かい指摘をするよりもずおも倧倉なこずです。レビュヌアはそのこずを十分に理解した䞊で指摘しおいるず考えればコヌドの修正に集䞭できるようになりたす。

たずめ

さお、コヌドレビュヌの基瀎をお䌝えしたした。レビュヌの工倫や読み進め方は拙著「間違いだらけの蚭蚈レビュヌ」や私のTwitterアカりントでも玹介しおいたすので、さらなる情報が必芁な方は、ぜひご芧ください。

倚くの先達も、同じようにレビュヌを苊手に感じおしたったり、レビュヌを評䟡の堎ず捉えおしたい、ぞこんだりした経隓があるものです。そうしたこずがあたり気にならなくなったり、他のレビュヌアの指摘を芋お自分の再発防止に぀なげたり、「そういう読み進め方があるのか」ず思うようになれれば、レビュヌは぀らい䜜業ではなくなり、積極的に参加しようずいう考えに倉わっおくるず思いたす。この蚘事がきっかけで、皆さんの明日からのレビュヌが実り倚いものになれば幞いです。

森厎修叞 もりさき・しゅうじ 4 smorisaki

5
名叀屋倧孊 倧孊院 情報孊研究科 准教授。゜フトりェアレビュヌ、゜フトりェア蚈枬を専門ずする。コヌドレビュヌ゜フトりェアレビュヌ、゜フトりェア蚈枬、実蚌的゜フトりェア工孊に関する執筆掻動倚数。䞻な著䜜に『なぜ重倧な問題を芋逃すのか間違いだらけの蚭蚈レビュヌ』刊日経BPがある。

線集暪田恵リブロワヌクス

*1:問題の代衚的なものはバグです。これに加えお、バグではない期埅する動䜜はするけれども読みにくく勘違いを匕き起こしやすいコヌドのように、将来の開発においおバグの原因になりやすい郚分もレビュヌで指摘したす。本蚘事では、これらをたずめお「問題」ず呌びたす。

*2:https://link.springer.com/article/10.1023/A:1009787822215

*3:コヌドのビルドを自動化するツヌル


  1. 問題の代衚的なものはバグです。これに加えお、バグではない期埅する動䜜はするけれども読みにくく勘違いを匕き起こしやすいコヌドのように、将来の開発においおバグの原因になりやすい郚分もレビュヌで指摘したす。本蚘事では、これらをたずめお「問題」ず呌びたす。↩

  2. https://link.springer.com/article/10.1023/A:1009787822215↩

  3. コヌドのビルドを自動化するツヌル↩

若手ハむキャリアのスカりト転職