言語に慣れていないときにコードの品質を評価する方法は?[閉まっている]


10

仮説として、私の経験が.NETであるときに誰かに新しいPHP開発者の面接を依頼した場合、彼らが提供したコードサンプルが効率的で質が良いかどうかをどのように判断できますか?

言い換えれば、言語に慣れていない場合にプログラマーのコードを評価するための最良の方法は何ですか?


1
私はあなたにそれを壊すのが嫌いですが、あなたはそうではありません:-)言語を知っているか自分でそれを学ぶ人をインタビューに含めてください。
Joppe

2
これが、面接がチームの努力である理由です。評価できることを評価し、この種のものをそれに精通している技術チームのリーダーに任せます。
Kaz

私にとって最良の測定基準は、関数(ここではネストの深さを含む)のサイズであり、その後にクラス/ファイルのサイズが続きます。
m3th0dman

回答:


20

彼らから提供されたコードサンプルが効率的で品質が良いかどうかをどのように判断できますか?

評価できないものは、言語イディオムの正しい使い方とライブラリの使用法です。したがって、これらはあなたが見ようとするべきものではありません。

評価できるものは次のとおりです。

  • コードがどのように適切に構成されているか
  • よく名前が付けられた変数(意味がわかりますか)
  • よく構成された関数/コードの単位
  • コードベースの一貫性

上記のポイント(網羅的ではありません)は、コードの匂いがするかどうかを示し、経験豊富なプログラマーが良いか悪いかを識別できるものでなければなりません。

つまり、言語に関係なく、適切なコードを示すものを探します。


5
もう1つ重要なのは、「コメントは明確で、意味があり、理解しやすいか」です。言語にほとんど触れていなくても、コメントからコードの一部が何をするかについて少し学ぶことができますか?
FrustratedWithFormsDesigner

2
@FrustratedWithFormsDesigner-コメント?それらは何ですか?しかし真剣に、コードは自己コメントでなければなりません。コメントは、不正なコードの理由または理由を説明するためにのみ存在する必要があります。
2012

6
私は極度の注意を促します。あなたが慣れ親しんでいるようなコードを誰が書くかに基づいて最終的に選択するのは非常に簡単です。
Jerry Coffin

@FrustratedWithFormsDesignerオデッドは、おそらくあなたはこの読むべきと考えelegantcode.com/2010/04/18/...を
ジョエル・

4

フローチャートの作成を依頼するか、インタビューの一部として説明してもらいます。あなたが尋ねるのに最適な言い訳があり、それは彼らが彼らがどのように説明するかを見るために彼らがどのように考えるかをかなりビットに伝えます。

彼らがあなたの好みの言語にジャンプしようとしているなら、あなたはたくさんのメンタリングが来ていることを知っているので、とにかく何よりも優れた論理/推論スキルを探すべきです。

彼らが優先言語で作業を続ける場合、他の誰かがとにかくスピードアップするまで、細かい言語固有の詳細についていくらか自己管理してくれることを受け入れる必要があります。とは、デザイン面でもあります。


1
候補者がコードを説明して、背後にある意図と目的が明確になり、視覚的に、組織と一般的な構造が合理的に見える場合、おそらくコードが何を表しているかを合理的に把握しています。そして、おそらく同様のクリーンな再現を繰り返すことができます。特定の部分が「特定の参照資料がそれを行う方法を示したものであるため」で説明されている場合でも、参照資料に名前を付けている間、少なくとも「コード」だけでなく見つける機能の適度な表現がありますそして、彼らが日常的に直面していない問題に解決策を適用します。
JustinC

1

骨のある/明らかに間違ったコードは別として、効率は主に問題の言語のコンパイラ/インタープリターに依存し、実際にコードサンプルからそれを見ることはできません。コードサンプルは、ドイリーのファインチャイナのように美しく書かれ、エレガントですが、コンパイル/解釈が不十分な場合、実行が遅くなります。

ある程度の知識がなければ、言語機能/構文糖/慣習の慣用的な使用法を評価することはできません。

整頓、制御フロー、変数の命名、操作の順序などの一般的な考慮事項に基づいて、一般的に適切に記述されているかどうかを判断できるはずです。

ただし、より実用的には、プロセスに使用される言語がわかっている場合は、その言語のスタイルガイドを1つ以上見つけて、書店に行き、その言語の本をいくつか読んでみてください。選択した言語でおなじみの類似物を探してコード例をざっと読み、その言語を使用する1つ以上のオープンソースプロジェクトをチェックしてください。

時間に余裕があり、コストの障壁がない場合は、その言語の開発環境をセットアップして、Hello Worldアプリを作成したり、コードカタを実行したり、その他の単純な小さなアプリを作成したりすることもできます。初期化。基本的なリファレンスフレームをすばやく作成することができます。これにより、問題のコードを確認するという特定の目的のための足がかりが得られるだけでなく、言語に強いられて少し分岐してしまうかもしれません。


1

言語に関係なく:

  • 懸念事項の明確な分離、クラスの適切な使用(オブジェクト指向言語の場合)、またはコードを再利用可能なモジュール式の「チャンク」に分解する意図的な試みの兆候はありますか?
  • 同様に、テストの証拠-単体テストなど
  • プロダクションコードの場合、開発とデプロイメントの分離がほとんどない可能性があるデバッグ文字列が散在していますか?
  • コードはなんらかの命名規則に従っていますか(その規則が好きかどうかは重要ではありません!)?
  • プリントアウトではなくファイルがある場合、ファイル内のすべての関数/クラスはに関連していますか(それがdata_access_layerというファイルの場合、画像を処理する関数の証拠はおそらく不適切です)。
  • 特にPHPのようなWebベースの言語では、ユーザー入力に対する信頼の欠如を示す兆候もすべて良好です。したがって、input = escape(input)のような構造は、少なくとも問題を認識していることを示します。
  • コメントや自己記述コードは常に良いです。存在するべきコメントの量については、いくつかの考え方がありますが、コメントは完全にありません。
  • 皮肉なことを犠牲にして、インタビューの前にいくつかのコードをグーグルで書きます。悲しいことに、それは簡単にコピーアンドペーストのジョブになり得ます。

これらすべてを備えていないコードはすべて自動的に貧弱であると言っているわけではありませんが、私はこれらを彼らの実践を反映し、検討した誰かの指標であると考えます。

ただし、これらすべてのインジケーターについて、コードがそのようなものである理由は何であるかを尋ねる必要があります。彼らの選択には、言語固有の適切な理由がある可能性があります...その後、彼らと他の候補者が去ったとき、Googleはあなたの友達です。

幸運、良い人を雇うことはあなたの組織で最も重要な役割の1つです;)


後から考えると、これは@Oded(およびコメント)が言ったことの多くを複製します。
frackham

0

問題の言語を知っている人に面接に来るか、サンプルを見てもらうよう依頼する必要があります。そのような人は、もしあれば悪いスポットを見つける可能性がはるかに高くなります。

候補者はチームで働く予定ですか?チームメンバーに彼と会ってもらい、彼のスキルについて質問します。


-2

言語の使用中に遭遇した制限について質問します。簡単なSQLクエリを見せてもらいます。ちょっとした価値のあるPhp開発者は、あまり労力をかけずに基本的な選択/更新/削除クエリを実行できるはずです。

ダグ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.