web-dev-qa-db-ja.com

「コードサンプル」はどのように見えますか?

私は電話での面接を非常によく受けました(CakePHP関連の立場については、質問にとって特に重要ではありません)。面接官は私の履歴書と個性に感銘を受けたようです。けれども最後に、彼は私に彼に私の既存の作業プロジェクトからのコードサンプルを彼にメールで送るように頼んだ、「あなたがひどくプログラマーであることにひそかにチェックしていないことを確認するために!」

私はあまりにもコードが自分の足で立つことができないのではないかと心配していますが、私は専門家というよりは中級プログラマです。彼らがその場で私を除外する場合に備えて、コードサンプルしないでくださいに該当することを確認する必要がある明らかな落とし穴は何ですか?次に、これはおそらく回答するのが難しい部分です。コードサンプルのどの機能が非常に印象的で、すぐにプログラマーにはるかに好意的になるのでしょうか?

すべてのアイデアや提案を歓迎します!

24
thesunneversets

見たい クリーンコード

クリーンコード:別のコーダーが簡単に読み取ったり修正したりできるように、正しく整理された方法でフォーマットされたソフトウェアコード。

つまり:

  • 機能-自明ではないいくつかの単純な機能(ゲッター/セッターの束は、あなたが何かを知っていることを示しません)
  • 一貫性のあるクリーンなスタイル-人気のある、または少なくとも一般的なケーシング、インデント、間隔、およびブラケットスタイル
  • 適切なネーミング-品質名-唯一の増分値でない限り、iを使用しないでください。意味のない変数名は使用しないでください。
  • Clean codeの他の属性-エラーチェック、条件、ループ、便利なメソッドまたはユーティリティメソッド、および適切な separation-of -懸念事項 (メソッド間)。そして、これは100%になるのに良い時です [〜#〜] dry [〜#〜] -繰り返しなし!

興味深いであるように十分に複雑であるが、優れた開発者がすぐにそれが何であるかを理解できるほど十分にクリーンなものを送信したいやっている。

上記のコメントの一部は、これがいかに簡単に偽造される可能性があるかを懸念しているようです。*これから保護したい場合は、コードの目的と履歴の簡単な説明を電子メールで送信してください。


*少なくとも、インタビュアーが過去のプロジェクトについて前もって質問した場合、次にがこのプロジェクトのサンプルを要求し、それを記述するために何が必要か、またはそれがどのように発展したかを尋ねました私はそのプロセスがかなり嘘つきであると思います。とにかく嘘をつくとなるほとんどの候補者は、他の分野で問題を示すと思います。

17
Nicole

仕事を探していたときに、ACMプログラミングコンテストの質問をいくつかの異なる言語で解決し、それ以降、コードサンプルにそれらを使用しました。私は彼らが良いコード例を作ったと思います:

  • 彼らは困難な問題を解決しました
  • 問題は大量のコンテキストを必要とせず、質問を簡単に取得できました
  • 記述されたコードには、それに関連するIPリスクはありません。
  • 各問題は1つのファイルに合理的に存在することがあり、極端に長くはないことが多いため、ソリューションのコンパイルとテストを簡単に実行でき、質問のテストデータを使用できます。
  • 複雑な問題をより小さな部分に分解できることを示しています。
  • ソリューションのどの部分がどのように機能するかについて尋ねられた場合、特に何年も経過しているが、何が起こっているのかをすばやく解読できる場合は特に、話していることを知っていることを実証する絶好の機会になります。

そして、作成するコードは、明確で一貫性があり、読みやすく、理解しやすいものにする必要があります。

そして最後に:

  • 単に楽しみのためにそれらを解決する価値があり、良い習慣です。
9
whatsisname
  • 最高の厳格性レベルでエラーと警告をコンパイル/解釈する必要があります。
  • 毎日書く定型コードであってはなりません。ユニークで面白くして、コピー/貼り付けをしなかったことが明らかです。
  • どのようにして/なぜあなたがそれらを作ったのかを説明するコメントを含む、いくつかの興味深い設計上の決定があるはずです。
  • 2〜3ページしか印刷しないようにしてください。
  • 申請する言語である必要があります。
  • 初めて読んでも頭が痛くならないはずです。友人にそれを見てもらうか、codereviewに投稿してもらいます。
6
Karl Bielefeldt

さて、私があなたにインタビューしているなら、私はyourコードを見たいです。

クリーンは良いですが、問題解決は良いですが、真のコードの方が優れています。優れたプログラマーは、他のプログラマーにだまされたときを知っているので、信頼が低下する可能性があります。

他の人のコードを読むのは ダンシング セックスをしている:あなたはそれが本物であるときを知っています、そして、他の人がそれを偽っていれば、結局災害が起こります。 (本当のオタクが踊る方法を知らないだけで気づいた)

あなた自身とあなたのコーディング能力を信頼してください。あなたが面接官を本当に知っているのでなければ、あなたが彼のコーディングスタイル/スキルから彼が期待することを期待することはできません。

3
Machado

また、それが現在の雇用主からのコードではないことにも十分注意してください(所有者が所有していないコードを所有しており、共有したくないことを保証します)。あなたが誇りに思っているものを取り、それを自分で作り直して、雇用者固有ではないようにします(データベーステーブルやサーバー名などへの参照をすべて削除します)。間違いがあるか、コードの種類に適さないコードを送信しない場合は、何でも(SQLコードを確認すると、セットベースの操作が単純でパフォーマンスが良い場合に、カーソルを送信した人を拒否するでしょう。他のより一般的な問題に使用できる比較的まれな問題の問題を解決するために他の言語にも同様の手法がありますが、他の問題には最適ではありません。その文は意味がありましたか?)

2
HLGEM

候補者を評価するときにコードサンプルを要求する人からの意見の1つとして、いくつかの高レベルの機能(コードのコンテンツ)といくつかの低レベルの機能(コードの構造)があります。高レベルの機能:

  1. Identity:コードのフレーバー。あなたがUI/HCIコーダーとして自分に請求しているなら、私はそれを実行するときに何かの視覚的な見栄えをよくしたいと思います。あなたがDBビルダーなら、データの表現や分析で興味深いものを見たいと思います。サンプルは、あなたがproudのようなものである必要があります。あなたがそれらの少なくとも1つを持っていない場合、あなたはアイデンティティを持っていません。
  2. 成熟度:さまざまな問題の戦略を変えていますか?興味深い問題を解決していますか?コードまたはアプローチを同様の問題に拡張するのは簡単でしょうか?逆に、カーゴカルトコミューンのメンバーを見ているような気がしますか?
  3. 通信:コードはそれが何をしていて、なぜそれを説明するのですか?これは、コードが単純である必要があるという意味ではありません。実際、複雑なコードを理解しやすくすることはおまけです。

低レベルの側面はより単純です:

  1. スタイル:コードはクリーンで一貫性があり(確立されたいくつかのガイドラインに従って)、十分に文書化されている必要があります。
  2. Packaging:少なくとも、短いreadme、実行可能なバージョン、実行可能なテストが必要です。 readmeには、後者の2つを実行する方法と、この特定のコードサンプルをデモする理由が記載されています。
  3. Language(s):私は通常、そのポジションの言語のサンプルと、彼らが最も強く感じるサンプルを誰かに尋ねます。その人の現在の天井の良い考えを与えます。

良い候補としては、サンプルが次のいずれかであると想定しています:A)防弾小型サンプルまたはB)大きな興味深いプロジェクト(Github個人リポジトリのモジュールなど)の良い部分。私はそれらが個人的なプロジェクトまたは学術的なプロジェクトであることを期待しています。有料のプロジェクトから送信する場合は、使用許可をいただいていることを期待しています。そのメモが届かない場合は、候補者から除外するか(弱い候補者)、面接中にそれらについて尋ねます(有力な候補者)。許可がないことは大きな危険信号です(おそらく乗り越えられないでしょう)。上級候補の場合、私は免責事項として、彼らの仕事の一環として行われたため、彼らの最高のソースサンプルの一部を表示できないことに注意してください。しかし、私はそれから、なぜ彼らがその見せられないデザインに誇りを持っているのか、そして彼らが子供のようにそれをどのように愛しているのかについての噴出する証言を期待しています。

最後に、一部の人々は「ああ、誰かがインターネットからコードサンプルを取得するだけだ」と非難しますが、反対の意見は、優れた本番品質のコードを理解していないほとんどの人は、それを見ても理解できないということです。その上、いつでもコードをチェックするための独特の行をグーグルできます。また、せいぜい、コードを盗むことは候補者を面接に連れて行き、彼らは彼ら自身を困惑させます(「それでなぜあなたはそれをこのようにしたのですか...?」)。

以前の雇用からのコードに関する最後の注記として:しないでください。人事の観点からは、以前の雇用からコードを要求することは不適切であり、会社についての危険信号です。あなたは両方とも法的責任を負うことになります(つまり、両方が訴えられる可能性があります)。以前の雇用主のために行われたコードは、コードがすでに公開されているか、その雇用主から明示的な許可を得ていない限り、決して与えてはなりません。さらに悪いことに、大企業では、直属の上司があなたに許可を与える権限を持っていない可能性があるので、その場合は法務部門で楽しんでください。既存の従業員に自分のIPを公開することは、彼らにとって大いに喜ばれることでしょう。

0
Namey

私はクリーンなコードについてRenesisからの投稿を2番目にしますが、提出するコードに品質と十分に文書化されたユニットテストを提供するリストに追加します。優れたプログラマーは、コードの単体テストを作成する必要があります。

0
Chris Knight