web-dev-qa-db-ja.com

わからない言語でコードをレビューすることは効果的ですか?

私は経験豊富な開発者ですが、コードレビューをあまり行っていません。 Pythonで書かれたコードをレビューするように求められていますが、Pythonがわかりません。

知らない言語でコードをレビューすることは、まったく意味がありませんか?

109
Heather Smith

任意意味?はい。プログラミング言語のsemanticsについて何も知らなくても、文字を読み取って、一貫性のない書式設定、コメントの欠落、不適切に選択された識別子、明らかな重複などに気付くことができます。

多くの意味、またはあなたの時間の費用を返済するのに十分な意味?よく分かりません。これは、あなたの立場、チームのワークフローにおけるコードレビューの重要性、および十分に定量化できないその他のいくつかの要因によって異なります。

118
Kilian Foth

Code Review Stack Exchange での定期的な寄稿者として、言語にとらわれない問題に悩まされている多くの質問に遭遇します。たとえば、

  • 書式設定、インデント
  • 範囲
  • ループ
  • タイプ操作

そしてリストは続く。ただし、言語を知る必要はありませんが、これらの問題やポイントを確認することはできます。

一部のトップユーザーは、積極的に使用していない、または知らない言語で上位の回答を得ています。私のトップ10のうちの2つでさえ、私のマシンでコンパイルしたり実行したりできない言語です。

それは誰かの疑似コードをレビューすることと同じだとさえ言うでしょう。あなたが理解しているものに関連するものを観察してコメントすることができる限り、あなたは大丈夫です、そしてそれは関連しています。

57
Quill

一般的なアドバイス

私の意見では、これが一番下の行です。

  • 機能と共通イディオムを理解するのに十分なほど言語を理解していない場合、おそらくレビューにあまり貢献しないでしょう。
  • 言語の特徴や慣用句を学習したい場合は、レビューに参加できます。あなたの焦点はイディオムを観察し、あなたにとって意味のないパターンや組織について質問することです。これはmay問題のある領域を特定するのに役立ちますが、開発者に彼らがしたことを守るように強制するという意味でのみです。知識にギャップがある余地を残す方法で質問してください。これはレビュー自体では最終的にコストになる可能性がありますが、そのコストは知識への投資です。
  • 言語の機能、慣用句、標準に慣れるまで貢献する能力は制限されます。あなたが実際に言語でかなりの量のコードを書いたまでは、これが変わるとは思いません。

Python固有の考慮事項と例

Pythonを知らないという特定の状況では、私は特にこれに注意します。 Pythonには多くのイディオムと標準的な慣習があり、最終的には優れていますPythonは、他の言語で期待されるものとは非常に異なって見えます。(確かに、 Python強調することで、コードが(= /// =)その他言語でbetterに見えるようになり、他の方法で回避できます。) PEP8を超えて は、マインドセットを完全に見逃してしまう可能性がある良い例ですPython推奨します。

簡単な例を見てみましょう。このコードを取る:

f = open('/home/me/something.txt')
try:
    content = f.read()
finally:
    f.close()

このコードの問題をご覧ください。 Pythonを使用したことがない場合は、おそらく使用しないでしょう。問題は、Pythonがとまったく同じmuch優先スタイルがあることです。事:

with open('/home/me/something.txt') as f:
    content = f.read()

これはコンテキストマネージャーです。彼らが何のために良いのか知っていますか?いつ使用するのが適切かわかりますか?いつ自分で作成するのが適切かわかりますか?番号?その後、おそらくPythonを確認する準備ができていません。

別の例を見てみましょう。

def add_fifty(other_list):
   result = list()
   for i in other_list:
       result.append(i + 50)
   return result

x = range(10)
y = add_fifty(x)

問題がわかりましたか?問題は、このメソッドが完全に不要であることです。操作が次のように単純な場合は、おそらく単に内包表記を使用する必要があります。

x = range(10)
y = [i + 50 for i in x]

それが見当たらない場合は、Pythonの機能や慣用句に慣れていません。

44
jpmc26

コードレビューは、無効なスペルと誤ったフォーマットの変数を検索することではありません。コードレビューを使用してそのようなものを見つける場合は、時間の浪費をやめてツールを使用してください。

コードレビューは、設計を改善し、初心者プログラマによる一般的な間違いを検出することです。

私は C++ でプログラムしているので、Pythonよく分からないので、Pythonコードを確認することはしません。ただし、Javaコードレビューを支援できます。

プログラムする言語を言っていませんが、プログラムの言語がわからない場合、コードレビューで何を提供できるかわかりません。

21
BЈовић

Pythonがわからないため、Pythonコードを正確に確認するように求められた可能性があります管理理論 チームに「ばか」を置くことは有用です。私はあなたに悪い名前を付けていません:)アイデアは、チームがグループの思考に苦しみ、トンネルのビジョンを発達させる可能性があるということです。これを打開する1つの方法は、他のチームメンバーが「ばか」と考えるチームの誰か、つまり主題を知らない誰かを含めることです。あなたは自分自身に知らせるために質問をします。そして、質問は他のチームメンバーがおそらく考えたことのない視点から来ます。

あなたはPythonを知らないので、Pythonコーダーにとっては普通に見えるかもしれませんが、奇妙に思えるかもしれません。チームが考慮しなかった改善を提案するかもしれません。

21
user2023861

コードレビュー(実際に欠陥を探すことに加えて)は、コードが追加または変更されるための1つのチームメンバーから他のメンバーへの良い導入です。あなたが経験豊富な開発者であれば、何が起こっているのかをほとんど理解するのに十分に読めるはずです。

チームリーダーの観点からコードレビューを見てください。アプリケーションの内容を理解している人がいますすべきこと(ビジネスロジック)、コードがしていることを理解している人(実装ロジック) )、そしておそらくそれらすべてがどのように組み合わさるかについての考えを持つ必要がある他の数人の人々。

10
Adam Zuckerman

あなたは間違いなくonlyレビューアであってはなりませんが、あなたがoneレビューアの。言語を知らなくても、コードレビューで回答する必要のある多くの質問の妨げにはなりません。例として、私はこのサイトの C#タグトップ20の回答者 の1人であり、C#でコンパイルされたhello worldほどではありません。

言語を知らなくても共有できる専門知識:

  • 領域知識。
  • 一般的なオブジェクト指向設計。
  • 一般的なプログラミング方法:命名、明快さなど。

また、新製品のスピードを上げる良い方法でもあります。私はちょうど新しい言語に参加しました。言語はかなりよく使用されていますが、ドメインはわかりません。コードレビューに参加することで、ドメインの側面をよりよく学ぶことができました。ただし、これらのラインに沿ってまだ多くのことを貢献することはできません。

あなたの場合、他のレビュアーが残したコメントを見れば、それは新しい言語のイディオムを学ぶ良い方法になるでしょう。これらは、コードがPythonicかどうかに関係なくインタプリタが気にしないため、他の方法で学ぶのが非常に難しい種類のことです。

7
Karl Bielefeldt

これは双方に有利な状況になる可能性があります。私はあなたが特に価値のある査読者になる可能性があると言っています理由あなたはPython処女です 呪い知識の

このように考えてください。Python virginでも理解できるほどコードが明確である場合、それは優れたコードである必要があります。理解が難しい部分は、やり直しの候補またはより良いものになる可能性があります。コメント。

明らかに、あなたが行くにつれて新しい言語を習得するので、それはあなたにとっても有益です。 (うまくいけば、与えられたコードは学ぶべき良い例です。)この配置は、「実行可能な疑似コード」であるという評判がある言語であるPythonで特にうまく機能するはずです。あなたが経験豊富な開発者であれば、Pythonプログラムの要点を理解するのにそれほど難しくはないはずです。

警告は、 言語固有の問題点 から発生するバグを見つけることは期待されないということです。しかし、バグレビューはコードレビューの唯一の目的ではありません。他に何もない場合は、同僚のコードでどのようなことが起こっているかを知るだけで、知識の伝達に参加することになります。

5
200_success

下請け業者が請け負っているプロジェクトに監査を依頼されたところ、パフォーマンスに重大な問題があるように見えました。私はかなり重要な要素が単一のPerlモジュールであることをすぐに確立しました。私はこれまでPerlに出くわしたことはありませんでしたし、それを知っている組織の誰もいなかったので、自分で理解しようと試みました。詳細を理解することはできませんでしたが、使用しているアルゴリズムのデータサイズが2次であることは明らかであり、これがすべての問題の原因でした。だから、はい、あなたが完全に理解していない言語でコードを読むことは間違いなく生産的です。ボーナスは、あなたがそれについている間に新しいトリックを学ぶことです。

2
Michael Kay

いくつかの観察:

1)あなたが経験豊富な開発者であれば、それを扱うだけでPython(または少なくともあなたが知る必要がある限り))を手に入れます。最初は難しいでしょうが、言語を習得するにつれて簡単になります。これは別の言語を学ぶ機会と考えてください(人々は「没入」によって「外国語」言語を学ぶことがよくあります)。

2)SEサイトには、「非技術的」であるが、文法、通信、論理に熟練している多くの貴重な人々がいます。そのような人々は、対象に「新鮮な目」をもたらし、他の人が見逃してしまう多くの「簡単な」修正を行います。おそらく、ロジックやプログラミング全般に精通しているなど、「技術的」ではない(つまりPython以外の)スキルについて相談を受けています。

また、コードレビューをあまり行っていない場合は、ほとんどすべてのコードレビューの経験が開発者として役立ちます。これは、あなたのスキルとニーズとチームのスキルがうまく調和しているように見えます。

0
Tom Au

それはレビューの目的が何であるかに依存します。つまり、あなたが意味すること有効

あなたはまだいくつかの問題を検出することができるでしょう。あなたが彼らと一緒にレビューする必要があるすべてであり、彼らがあなたがそれを調べてみることがいくつかを助け、おそらく何かを捕まえることを望んでいるなら、確かに。構造の多くの概念は言語間で類似しています。 1つは特にコメントを確認できることです。その特定の言語を使用していないプログラマでも、何が起こっているのかをよく理解できるように十分にコメントする必要があります。そうでない場合...彼らのコメントが不足している場所を彼らに伝えることができます。それが十分にコメントされている場合...実際に起こっていることのコードを実際に読むのではなく、起こっていることの注釈を通してそれらの構造のかなりの部分をレビューできるはずです。

しかし、他の多くの問題を検出することはおそらくありません。したがって、あなたのレビューがこれがよくできた/実行可能なプログラムであるかどうかを徹底的に判断することを意図している場合、彼らは失望します。

その結果があなたが時間をかける価値があるかどうかは、プロジェクトに大きく依存します。

0
Jimbo Jonny