タグ付けされた質問 「language-agnostic」

このタグは、プログラミング言語または環境に固有ではない質問用です。

4
どのアルゴリズム/データ構造を「認識」して名前で知る必要がありますか?[閉まっている]
私はかなり経験豊富なプログラマーだと思っています。私はもう5年以上プログラミングを続けています。しかし、私の弱点は用語です。私は独学なので、プログラミングの方法は知っていますが、コンピューターサイエンスのより正式な側面のいくつかは知りません。それで、名前で認識して知ることができる実用的なアルゴリズム/データ構造は何ですか? アルゴリズムの実装に関する本の推奨を求めているのではないことに注意してください。私はそれらを実装することを気にせず、アルゴリズム/データ構造が問題の良い解決策になるときを認識できるようにしたいだけです。「認識」するアルゴリズム/データ構造のリストをもっと求めています。たとえば、私はこのような問題の解決策を知っています: 0〜999というラベルの付いた一連のロッカーを管理します。人々はロッカーを借りに来て、ロッカーキーを返すために戻ってきます。どのロッカーが無料で、どのロッカーが使用されているかを管理するソフトウェアをどのように構築しますか? ソリューションは、キューまたはスタックになります。 私が探しているのは、「どのような状況でBツリーを使用すべきか-ここでどの検索アルゴリズムを使用すべきか」などです。そして、より複雑な(しかし一般的に使用される)データ構造/アルゴリズムが機能します。 ウィキペディアのデータ構造とアルゴリズムのリストを見てみましたが、それはちょっとやり過ぎだと思います。それで、私が認識すべき重要なものは何かをもっと探していますか?

16
boolean_variable == falseよりも!boolean_variableを使用する理由
この質問に対するコメント:メソッドがfalseを返すかどうかを確認する:結果を一時変数に割り当てるか、メソッド呼び出しを条件に直接入れますか?条件をテストするときの!boolean代わりに使用する必要があると述べていますboolean == false。どうして?私にとってboolean == falseは、英語ではもっと自然で、より明確です。これが単なるスタイルの問題である場合は謝罪しますが、この好みに他の理由があるかどうか疑問に思っていましたか!boolean?


17
コメントでトートロジーに対処する方法は?[閉まっている]
時々、私が書いているコードの一部が、その名前が基本的にコメントとして繰り返されることを自明である(またはそうであるように思われる)状況に自分自身を見つけます: class Example { /// <summary> /// The location of the update. /// </summary> public Uri UpdateLocation { get; set; }; } (C#の例ですが、質問は言語に依存しないようにしてください)。 そのようなコメントは無意味です。私は何を間違えていますか?間違っているのは名前の選択ですか?このような部分をより良くコメントするにはどうすればよいですか?このようなことに対するコメントをスキップする必要がありますか?

4
言語に依存しないようにするにはどうすればよいですか?
今ではasp.netとC#を使用しています。私もJavaでまともな仕事をしました。私はいつか言語にとらわれないように自分のキャリアを計画しています。私が学ぶ必要があることは何ですか? 最初に、OOPはクラスの設計について述べているようにパラダイムになります。他に何かありますか?

12
オブジェクトのすべての作業をコンストラクターで行う理由はありますか?
これは私のコードでも同僚のコードでもないということで、これを序文にしましょう。数年前、私たちの会社が小さかったとき、私たちには必要なプロジェクトがいくつかありましたが、その能力はありませんでしたので、それらは外部委託されました。今、私は一般的にアウトソーシングや請負業者に対して何もありませんが、彼らが生産したコードベースは大量のWTFです。とはいえ、(ほとんど)動作するので、私が見た外部委託プロジェクトの上位10%にあると思います。 会社の成長に伴い、社内での開発をさらに進めようとしました。この特定のプロジェクトは私の膝に着地したので、私はそれを調べ、掃除し、テストを追加するなどしてきました。 繰り返し見られるパターンが1つありますが、非常に驚​​くほどひどいので、理由があるのではないかと思って、見ないだけです。パターンは、パブリックメソッドやメンバーを持たないオブジェクトであり、オブジェクトのすべての作業を行うパブリックコンストラクターにすぎません。 たとえば、(コードがJavaである場合、それが重要ですが、これがより一般的な質問であることを願っています): public class Foo { private int bar; private String baz; public Foo(File f) { execute(f); } private void execute(File f) { // FTP the file to some hardcoded location, // or parse the file and commit to the database, or whatever } } 疑問に思っているなら、このタイプのコードはしばしば次のように呼ばれます: for(File f …

3
クラスベースのOOPよりもプロトタイプベースのOOPの利点は何ですか?
主にクラスベースの言語のコンテキストでOOPを扱った後にJavascriptのプログラミングを始めたとき、プロトタイプベースのOOPがクラスベースのOOPよりも優先される理由について混乱していました。 プロトタイプベースのOOPを使用する場合、構造的な利点はありますか?(たとえば、特定のアプリケーションでより高速であるか、メモリ集約度が低いと予想されますか?) コーダーの観点からの利点は何ですか?(たとえば、特定のアプリケーションをコーディングしたり、プロトタイピングを使用して他の人のコードを拡張したりするのは簡単ですか?) この質問を特にJavascriptに関する質問と見なさないでください(長年にわたってプロトタイプ作成とはまったく関係のない多くの欠点がありました)。代わりに、プロトタイピングとクラスの理論的な利点のコンテキストで見てください。 ありがとうございました。

9
真に乱数を生成することが不可能なのはなぜですか?
私は、100万個の乱数を生成する必要がある趣味の問題を解決しようとしていました。しかし、私はすぐに気付きました、それらをユニークにするのは難しくなっています。乱数生成について読むために、アルゴリズム設計マニュアルを取り上げました。 次の段落があり、私には完全に理解できません。 残念ながら、乱数の生成は実際よりもずっと簡単に見えます。実際、決定論的なデバイスで真に乱数を生成することは基本的に不可能です。フォン・ノイマン[Neu63]は、「ランダムな数字を生成する算術的方法を検討する人は、もちろん罪の状態にあります。」と言っています。ランダムに生成された場合。 決定論的なデバイスで真の乱数を生成することが不可能なのはなぜですか?この文はどういう意味ですか?

8
getterおよびsetter内で許可されるものは何ですか?
私は、ゲッターとセッターのメソッドとカプセル化に関する興味深いインターネットの議論に入りました。誰かがすべきことは、それらを「純粋」に保ち、カプセル化を確保するための割り当て(セッター)または変数アクセス(ゲッター)だけだと言いました。 これは、最初にゲッターとセッターを持つという目的を完全に無効にし、検証と他のロジック(もちろん、奇妙な副作用なし)を許可する必要があると思いますか? 検証はいつ行われますか? セッター内で値を設定するとき(オブジェクトが無効な状態になるのを防ぐため-私の意見) 値を設定する前、セッターの外側 オブジェクト内で、値が使用されるたびに セッターは値の変更を許可されていますか(有効な値を標準的な内部表現に変換する可能性があります)?

8
locごとのバグの平均数は、異なるプログラミング言語で同じですか?[閉まっている]
コード行ごとのバグ/欠陥の平均数は、さまざまなプログラミング言語で「一定」であると言われています。Rubyの10 KLOCには、c ++の10 KLOCと同じ数のバグがあります。同じ機能を記述する行の数が少なくなるため、引数は通常、表現力のある言語の使用を促進するために使用されます(python / ruby​​ over c ++ / assemblyなど)。 誰がこの主張がどこから来たのか知っていますか?高レベルの言語はバグの減少につながりますか?

15
未使用の変数に単一のアンダースコアを付けるのは悪い習慣ですか?
多くの場合、言語の構文で使用されない変数に名前を付ける必要がある場合は、名前を付け_ます。 私の考えでは、これにより混乱が減り、コード内の意味のある変数に集中できます。「目立たない、気にしない」効果を生み出すように、目立たないことがわかりました。 私がこれを行う場所の一般的な例は、SQLでサブクエリに名前を付けることです。 SELECT * FROM ( SELECT * FROM TableA JOIN TableB ON TableA.ColumnB = TableB.ColumnB WHERE [ColumnA] > 10 ) _ --This name is required, but never used here ORDER BY ColumnC 別の例は、使用されないループ変数です。 array = [[] for _ in range(n)] # Defines a list of n empty lists …

13
候補者にリンクリストの実装を作成させるのは面接の習慣として悪いですか?[閉まっている]
このサイトを読んで、候補者がリンクリストを最初から実装しなければならないと言ったインタビューの質問と回答の多くの物語を見てきました。通常、これはFizzBu​​zzを書くようなロール候補者をプログラミングするための「ギミー」演習です。候補者がこれを行うことができない場合、彼らはプログラムすることができず、ほぼすぐに拒否されるべきであるという考えです。 ただし、次の理由から、これは悪い練習になると思わずにはいられません。 C#やPythonなどの最新の高レベル言語は、ネイティブでリストを広く使用しています。独自のリンクリストオブジェクトの作成は、通常とは異なる状況でのみ必要であり、それでもおそらく不適切です。 C ++のような低レベル言語には、イテレータ/リストコンテナとオブジェクトを備えた標準ライブラリがあります。 最初の2つのポイントに照らして、コーダーはリスト(リンク、二重リンクなど)を実装することさえ考えずに何年も行くことができます。大学時代からそのようなものを見ることさえない人もいます。 コンピューティング能力も数年前の要因ではないため、ポインターを介した効率は以前の問題ではありません(一般的に)。 「リンクリストの例」のような単純なWeb検索では、多くのコード例が表示されますが、それらは暗記し、吐き出すだけで、申請者の真の能力を示すものではありません。 リンクされたリストを使用して、自由回答形式の質問/候補者の問題解決/批判的思考能力の議論につながることは、ほとんどの場合、非常に優れた面接の練習です。面接担当者は、応募者がどのようなもので、どのように考えると非常に有益であるかを実際に見ることができます。 デスクトップまたはWebアプリケーションで作業するプログラマーのための「リンクリストコードも仕事もない」というこのバイナリアプローチは少し時代遅れだと思います。また、非常に有害な場合もあります。リストの先頭で適切に作業する方法を覚えていない候補者は、そうでなければ優れたコーダーおよび同僚であり、ミックスで失われる可能性があります。考え? 編集:これが尋ねるべき良い質問か悪い質問かは、仕事の文脈に依存することを示唆する多くの(良い)コメントがあります。私は強く同意するので、この質問を言い換えてみましょう:リンクリストの実装は、FizzBu​​zzや階乗を計算するための再帰関数を書くような質問に似た、幅広いコーディングジョブの一般的なインタビューの質問です。この質問には、プログラミングの候補を全面的に評価するために一般的に使用するのに十分なユーティリティがありますか?または、「シニア開発者、埋め込みリンクリストチーム」の職を除いて、尋ねるべき悪い質問を検討すべきですか?

7
プロジェクトの開発中に頻繁に再設計しているのは悪い兆候ですか?
私が最初にプログラミングを始めたとき、私はいつか座ってすべてのクラスのUML図をスケッチすることでプロジェクトを開始するポイントに到達し、それに固執するだろうと思いました。私は数年前からプログラミングをしていますが、そのようにはなりません。プロジェクトを進めていくと、よくこう言っています 「ねえ、そうするためにクラスが必要です_ _。それまでは考えていませんでした。」 「待って、この関数は本当にこのクラスではなくそのクラスにあるはずです。私はそれを移動します。」 「これは実際には1つではなく2つのクラスになります。分割します。」 「これら3つのスタンドアロンクラスをすべて1つの抽象クラスから継承する必要があります。」 等、その他。 このようにデザインをやり直しているのは悪い兆候ですか?これは私が貧しいプログラマーであることを意味しますか、それとも普通ですか?

7
エラー抑制に対する引数
私たちのプロジェクトの1つで、次のようなコードを見つけました。 SomeClass QueryServer(string args) { try { return SomeClass.Parse(_server.Query(args)); } catch (Exception) { return null; } } 私の知る限り、このようなエラーを抑制することは、元のサーバーの例外から有用な情報を破壊し、実際に終了する必要があるときにコードを継続させるため、悪い習慣です。 このようなすべてのエラーを完全に抑制するのが適切なのはいつですか?

16
プログラミング時に他の数値ベースを使用する理由
同僚と私は、10以外のベースで数字をプログラムするために誰かが邪魔にならない理由を考え出すことに心を曲げてきました。 私はおそらくあなたが作業している正しいベースに変数を置くことでより長い方程式を最適化できることを提案しました(たとえば、残りのない何かの5つのセットしか持っていない場合はベース5を使用できます)が、私はわからないそれが本当なら。 何かご意見は?

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