14

将来の従業員に、Java や C# などの特定のプログラミング言語で生涯に書かれたコードの行数を提供するよう要求した企業の 1 つ。私たちのほとんどは、複数の言語でのさまざまなプロジェクトで長年の経験があり、これをほとんど記録していないため、この指標を計算するための最良の方法は何でしょうか. stackoverlow.com の賢明なメンバーには、いくつかのアイデアがあると確信しています。

これはその分野で非常に尊敬されている会社であり、この質問をする非常に正当な理由があると確信しています. しかし、答えを難しくしているのは、考慮すべきコードの種類です。私が実装した難しいアルゴリズムや、たとえば 300 個のプロパティを持ち、ゲッター/セッターが IDE を使用して生成された POJO 用に書いたコードだけを含める必要があります。

4

15 に答える 15

20

このような質問に対する最良の回答は、次のいずれかです。

  • 何故、知りたいの?
  • そのような数字にどのような意味があると思いますか?
  • さっさと起きて出て行ってもいいですか?

現在または将来の従業員にそのような質問をする人の背後にある動機を真剣に疑問視します. 入力するコードの行数に焦点を当てたコードレビューを開始するのは、おそらく同じタイプの会社です。

さて、コードの行数がプログラマーの経験の尺度であると彼らが主張するなら、私は間違いなくその時点でインタビューを終了します.

複雑な問題に対しては単純な解決策を見つけることができます。通常は、問題に十分な数のコード行を投げるだけで解決するよりも優れています。生成されたバグの数は、ステートメントの数に比例して増加するため、対処した問題の数と合わせて、逆数の方がおそらく優れていると言えます。

テスト応答として、私はこれを尋ねます:

プログラムで、私が 1000 行のコードで問題 A、B、および C を解決でき、別のプログラマーが 500 行のコードで同じ問題を解決できる場合、どちらが最適であるか (そして答えは: 十分な情報がありません)判断する)


それでも行数を推定したい場合は、その人が書いたプロジェクトについて考え始め、そのサイズを既知の量と比較します。たとえば、現在約 130,000 行のコードに及ぶクラス ライブラリがあり、Delphi や他の言語で同様のものを作成したり、いくつかのかなり大きなアプリケーション プロジェクトを作成したりしているため、1,000 万行のコードがあると見積もることができます。少なくとも自分では。数字に意味はありますか?少しもありません。

于 2008-11-09T23:29:32.513 に答える
18

これは DE Shaw のアンケートのようですね。

于 2009-12-01T08:02:57.053 に答える
11

これは、「ボーイング 747 にピンポン玉をいくつ入れることができますか?」のような質問の 1 つに思えます。その場合、質問者は、あなたが実際に書いたコードの行数を知ることよりも、あなたの問題解決能力を示すことを望んでいます。私は質問に対する批判に応じないように注意し、代わりに正直に問題を解決しようとします。)

于 2008-11-09T23:49:00.760 に答える
7

ohlohを見てください。このサイトには、オープン ソース プロジェクトの指標が表示されます。

このサイトでは、107,187 行のコードが 27 人年 (年間 4,000 行のコード) の作業に相当すると見積もっています。

このようなメトリックのばかげた例として、この数値が、私が 2 年間外部の仕事でいじっていたプロジェクトからのものであることが挙げられます。

于 2008-11-09T23:44:58.770 に答える
6

無意味なメトリクスに対するばかげた要求に対処するには、基本的に 3 つの方法があります。

  1. 回答を拒否し、質問者の理由に異議を唱え、その理由がばかげている理由を説明します。

  2. 可能な限りすべての情報を収集し、可能な限り答えを計算することに時間を費やしてください。

  3. もっともらしい答えを作り、できるだけ愚かなことに感情的な関与をできるだけ少なくして先に進みます。

私が目にする最初の答えは、最初の行を取っているようです。彼らの要求がばかげているにもかかわらず、あなたがまだその仕事を望んでいるかどうかを考えてください。答えがまだ「はい」の場合は、番号 1 を避けてください。

2 番目の方法では、古いプロジェクトの古いコード リポジトリを確認します。

この場合、私は 3 番目の方法を使用します。

言語に取り組んできた年数に、年間 200 労働日、1 日 20 行のコードを掛けて、それを使用します。

1 年に複数の言語を申請している場合は、言語間で配分してください。

分析、設計、または管理にもっと取り組んでいる場合は、数字を 4 分の 3 減らしてください。

儀式の多い環境(防衛、医療)で働いている場合は、数字を1桁落としてください.

特にセレモニーの少ない環境で作業している場合は、それを 1 桁増やします。

それから愚かさを忘れて、できるだけ早く自分の人生をやり直してください

于 2008-11-09T23:43:32.877 に答える
4

彼らが答えをどうするかにもよりますが、これは悪い質問ではないと思います。たとえば、候補者が履歴書に JavaScript を書いている場合、実際にどれだけ JavaScript を書いたか知りたいです。たとえば、彼らが書いた最大の JavaScript プロジェクトの行数を尋ねるかもしれません。しかし、私が求めているのはスケール感だけであり、実際の数ではありません。10、100、1000、または 10,000 行ですか?

私が尋ねると、私はプロジェクトの規模を測るための大まかな数字を探しているだけであることを明確にします. 質問者さんの場合の雇用主も同じだといいのですが。

于 2008-11-09T23:56:18.450 に答える
2

正直に言うと、それを有効な指標と見なしたことがないため、わからないと言うでしょう。インタビュアーが合理的/合理的な人である場合、これは彼らが探している答えです.

知らないと言う以外の唯一の選択肢は推測することであり、それは実際には問題解決能力を示すものではありません。

于 2009-07-25T08:22:12.347 に答える
2

ほんの数行のスマートなコードを書く代わりに、何行もの悪いコードを書くことができることを考えると、これは興味深い指標です。

私は彼らがより多くの行が少ないよりも優れていると考えているとしか思えません. まったく計画せずにコードを書き始めたほうがよいでしょうか。それは、より多くのコード行を書くのに最適な方法です。少なくともそうすると、通常、すべてを少なくとも 2 回書くことになるからです。

于 2008-11-09T23:25:08.840 に答える
2

スタック オーバーフローの賢い人は、通常、この種の質問をする組織を避けます。正解が「え、なんだ??」でない限り

于 2008-11-09T23:43:03.313 に答える
1

正当な理由もなく、わざわざこの指標を計算するのはなぜですか? そして、ランダムな会社がメトリックを要求するのは、本当に正当な理由ではありません.

会社の質問が実際に深刻で、面接が何か面白いことにつながると思われる場合は、それがどこにつながるかを確認するために乱数を選択します:-)

于 2008-11-09T23:31:08.110 に答える
1

ハ、Cベースのテストフレームワークを引き継いだときのことを思い出してください.20K +行として始まり、元の作者によって最初に書かれた20K行のdiarreaコードではなく、サブルーチンに分解することで最終的に1K LOCに崩壊しました。残念ながら、私の KLOC の記述が実際にマイナスになったため、コードのエラーに対してさらに激しく叩かれました... メトリクス主導の組織でコードベースを縮小することについて、私は長い間懸命に考えていました....

于 2008-11-10T03:40:08.843 に答える
0

そして、誰もビル・アトキンソン-2000行の話をまだ引用していません...

私の金曜日の午後(月に約1金曜日)に、過去1年間に行われた自己開発の演習で、テスト、プロトタイプ、インフラストラクチャを含めて、おそらく約5klocを作成しました。ただし、1つのプロジェクトは既存の25kloc C / C ++アプリケーションを取得して1100行のErlangとして再実装し、別のプロジェクトは15klocの既存のCライブラリを取得して1klocのC ++に変換したため、ネットは非常にネガティブです。そして、私がそれらの数字を持っている唯一の理由は、私がどれほど否定的であるかを見ようとしていたということでした。

于 2009-07-25T08:50:40.930 に答える
0

これは古い投稿であることは知っていますが、とにかく誰かに役立つかもしれません...

私は最近、Java 開発者として約 9 年半勤務した会社から引っ越しました。私たちのコードはすべて CVS、次に SVN にあり、Atlassian Fisheye がそのビューを提供していました。

私が去ったとき、Fisheye は私の個人的な合計 LOC を +-250,000 と報告していました。これは、各 SVN ユーザーの個人的な LOC がどのように計算されるかについての議論を含む、そのLOC メトリックの Fisheye の説明です。SVN での分岐とマージに関する問題と、LOC は通常 TRUNK のみに基づく必要があることに注意してください。

于 2011-09-01T07:51:01.143 に答える
0

これが本当に良い指標ではないという点で私が大多数に同意するとしても、あなたが言うようにそれが真面目な会社であれば、彼らはこれを尋ねる理由があるかもしれません..これは私がおそらくすることです:

既存のプロジェクトの 1 つを取り、行数を取得して、それをコーディングするのにかかった時間で割ります。これにより、1 時間あたりの行数のメトリックが得られます。次に、その特定の言語で作業した回数を推定し、すでに計算されたメトリックを掛けてみてください。正直なところ、それが素晴らしい方法だとは思いません..しかし、正直なところ、これも素晴らしい質問ではありません..また、この数字を出すために使用した戦略を会社に伝えます..多分、多分、これはこの質問に対するあなたの意見と、どのように答えるかを知りたいですか? :p

または、彼らはあなたが経験を持っているかどうかを知りたいだけです..だから、印象的な数字を推測して書き留めてください:D

于 2008-11-10T00:00:05.213 に答える
0

「これはその分野で非常に尊敬されている会社であり、この質問をする非常に正当な理由があると確信しています。」

なぜなら、「尊敬される」ということは「彼らがすべてを正しく行う」という意味ではないからです。

「コード行数」とは何ですか? 私は約 250.000 行の C# コードを書いたと推定しています。問題?95% は使い捨てコードで、すべてが学習用ではありませんでした。既存のプログラムを検索するよりも、これらの 3 行を再度作成する (およびパラメーターを変更する) 方が簡単だからという理由だけで、10 回目の小さな 3 行のプログラムを作成していることに今でも気付きます。

また、コード行はの意味もありません。1 人はもう 1 人よりも 20% 多い行を書きましたが、それらの 20% 多い行は、不要で複雑な行、「ループ展開」、およびリファクタリングされたはずの役に立たないものでした。

尊敬されている会社であろうとなかろうと、申し訳ありませんが、コードの行数を尋ねることは、プログラマーの効率を測定する手がかりがないことの確かな兆候です。つまり、LoC を測定するなどの石器時代の手法に頼らなければなりません石器時代のカレンダーとして。つまり、たまに数値を緩めて膨らませるのが好きな場合は、作業するのに適した場所になる可能性があります.

わかりました、それは答えというよりも暴言でしたが、この数字にはまったく正当な理由がまったくありません.

于 2008-11-10T00:06:35.357 に答える