ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

7
JavaScriptで==を使用するのは理にかなっていますか?
でJavaScriptの、良い部品、ダグラス・クロックフォードは書きました: JavaScriptには、2つのセットの等値演算子があります:===と!==、およびそれらの邪悪な双子==と!=。良いものはあなたが期待する方法で動作します。2つのオペランドが同じ型で同じ値を持つ場合、を===生成しtrue、!==生成しfalseます。悪魔の双子は、オペランドが同じタイプの場合は正しいことをしますが、異なるタイプの場合、値を強制しようとします。彼らがそれを行うルールは複雑で記憶に残りません。これらは興味深いケースの一部です: '' == '0' // false 0 == '' // true 0 == '0' // true false == 'false' // false false == '0' // true false == undefined // false false == null // false null == undefined // true ' \t\r\n ' == 0 // true 推移性の欠如は憂慮すべきです。私のアドバイスは、邪悪な双子を決して使わないことです。代わりに、常に===and …

30
中括弧は独自の行に表示する必要がありますか?[閉まっている]
中かっこは独自の行にあるべきですか?あなたはそれについてどう思いますか? if (you.hasAnswer()) { you.postAnswer(); } else { you.doSomething(); } またはそれがあるべき if (you.hasAnswer()) { you.postAnswer(); } else { you.doSomething(); } あるいは if (you.hasAnswer()) you.postAnswer(); else you.doSomething(); 建設的にしてください!理由を説明し、経験を共有し、事実と参考文献でバックアップします。

8
なぜ人々はdivでテーブルを作っているのですか?
現代のWeb開発では、このパターンに頻繁に出くわします。次のようになります。 <div class="table"> <div class="row"> <div class="cell"></div> <div class="cell"></div> <div class="cell"></div> </div> </div> CSSには次のようなものがあります。 .table { display: table; } .row { display: table-row; } .cell { display: table-cell; } *(クラス名は例示のみです。実際には、これらは要素の内容を反映した通常のクラス名です) 私も最近自分でこれを試してみました。なぜなら、みんながそれをやっているからです。 しかし、まだわかりません。なぜこれを行うのですか?テーブルが必要な場合は、ブラスト<table>を作成して完了です。はい、レイアウト用であっても。それがテーブルの目的です-ものを表形式でレイアウトします。 私が持っている最も良い説明は、今では誰もが「レイアウトにテーブルを使用しない」というマントラを聞いているので、彼らは盲目的にそれに従うということです。しかし、彼らはまだレイアウト用のテーブルを必要とします(他にテーブルの拡張機能がないため)、彼らは<div>(テーブルではないので!)作成し、とにかくそれをテーブルにするCSSを追加します。 すべての世界にとって、これはあなたのやり方で任意の不必要な障害物を置き、それらを回避するために余分な仕事をするようなものです。 レイアウトのためにテーブルから移動するための元の引数は、後で表形式のレイアウトを変更するのは難しいということでした。しかし、「フェイクテーブル」レイアウトの変更も同じ理由で同じくらい難しいです。実際、実際にはレイアウトの変更は常に困難であり、マイナーな調整よりも深刻なことをしたい場合は、CSSを変更するだけでは十分ではありません。あなたはします深刻な設計変更のためのHTMLの構造を理解し、変更する必要があります。そして、テーブルはdivよりも仕事を難しくしたり簡単にしたりしません。 実際、テーブルを使用してレイアウトを変更するのが困難になる可能性があると私が思う唯一の方法は、abを使用して、邪悪な混乱を作成した場合です。divでも同様です。 だから...これを暴言から首尾一貫した質問に変える試みで:私は何が欠けていますか?実際のテーブルよりも「偽物のテーブル」を使用する実際の利点は何ですか? 重複リンクについて:これは、別のタグなどを使用するための提案ではありません。これは<table>vsの使用に関する質問display:tableです。
269 html  css 

21
テスターが見つけるためのコードに意図的なバグを残す
弊社ではこれを行っていませんが、友人の一人が、プロジェクトマネージャーがすべての開発者に、製品がQAに移行する直前に意図的なバグを追加するように依頼したと言います。これがどのように機能するかです: 製品がQAに移行する直前に、開発チームはコードのランダムな場所に意図的なバグを追加します。これらのバグが最終製品に付属していないことを確認するために、元の動作中のコードを適切にバックアップします。 テスターに​​もこのことが通知されます。バグが存在し、それらを見つけられないことは無能の兆候と見なされる可能性があることを知っているため、彼らは一生懸命テストします。 バグ(意図的またはその他)が見つかった場合、それらは開発チームが修正するために報告されます。開発チームは、製品が第2レベルのQAに移行する直前に、コードの関連セクションに別の意図的なバグを追加します。プロジェクトマネージャーは、テスターは開発者のように考えるべきであり、変更が行われたセクションに新しいバグがあることを期待すべきだと言います。 まあ、これはそれがどのように行くかです。彼らは、このアプローチには次の利点があると言っています。 テスターは常につま先を向いており、狂ったようにテストします。これは、開発者が修正できるように、隠れた(意図しない)バグを見つけるのにも役立ちます。 テスターはバグをフィードします。バグを見つけられないと、彼らの士気に影響します。ですから、彼らに見つけやすいものを与えることは彼らの士気を助けるでしょう。 これらの意図的なバグの1つが最終製品に同梱されるシナリオを無視する場合、このアプローチの採用を検討する前に考慮すべきその他の欠点は何ですか? いくつかの説明: ソース管理で元のコードを適切にバックアップします。 テスターが意図的なバグを見つけると、開発チームはそれを無視します。テスターが意図しない(元の)バグを見つけた場合、開発チームは最初に意図的なバグが原因かどうかを確認します。つまり、開発チームは最初に元の作業コードでそれを再現しようとし、可能な場合は修正しようとします。 QAと開発チームの関係の問題を無視してください。私は、ワークプレイスではなくプログラマーにこの質問を具体的に尋ねました。QAと開発チームの間には良好な関係があり、勤務時間後には一緒にパーティーを行うことを考慮してください。プロジェクトマネージャーは、両方のチーム(Godsend)をサポートする準備が常にできている、素晴らしく、年配の紳士です。

30
上級開発者からのアドバイスが悪い場合、どのように伝えますか?[閉まっている]
最近、私はジュニア開発者として最初の仕事を始め、この小さな会社で私を指導する上級開発者がいます。しかし、彼が私がちょうど同意できないことについて私にアドバイスをすることが何度かあります(専門家によって書かれたトピックに関するいくつかの良い本で学んだことに反し、いくつかのQ&Aサイトで尋ねた質問も同意します忙しいスケジュールを考えると、おそらく長い議論の時間はないでしょう。 これまでのところ、私は彼の話を聞いて問題を回避しようとしており、現在の優れた実践として学んだことに基づいて対抗点を上げています。彼は再び元のポイントを上げます(ほとんどの場合、彼はベストプラクティスと言いますが、より保守性がありますが、それ以上先には進みませんでした)。それと自宅で研究していますが、変更を加えないでください(私はまだ確信していません)。しかし最近、彼は再び私に近づき、私のコードを見て、なぜ彼の提案に変えないのかと尋ねました。これは2〜3週間で3回目です。 ジュニア開発者として、私は彼を尊敬すべきだと知っていますが、同時に彼のアドバイスのいくつかに同意することはできません。それでも、私はプロジェクトを悪化させると思われる変更を加えるよう圧力を受けています。もちろん、経験の浅い開発者として、私は間違っている可能性があり、彼のやり方はより良いかもしれません。それはそれらの例外事例の1つかもしれません。 私の質問は次のとおりです。上級開発者のアドバイスが良いか、悪いか、それとも良いかもしれませんが、今日の文脈では時代遅れであるかどうかを判断するにはどうすればよいですか?そして、それが悪い/時代遅れの場合、私は彼が「プレッシャー」にもかかわらず彼を先輩として尊敬しているという事実を維持しながら彼の方法でそれを実装しないためにどのような戦術を使用できますか?


17
なぜプライベートフィールドがあるのか​​、十分に保護されていないのですか?
privateクラスのフィールド/プロパティ/属性の可視性は有用ですか?OOPでは、遅かれ早かれ、クラスのサブクラスを作成することになります。その場合は、実装を完全に修正し、理解できると便利です。 クラスをサブクラス化するときに最初に行うことの1つは、多数のprivateメソッドをに変更することprotectedです。ただし、外界から詳細を隠すことは重要です。そのため、必要なのprotectedは単なるではなく、ですpublic。 私の質問は:privateではなくprotected、優れたツールである重要なユースケースについて知っていますか、または2つのオプション " protected&public"でOOP言語に十分でしょうか?

19
#regionsはアンチパターンまたはコードの匂いですか?
C#では、#region/ #endregionキーワードを使用して、エディターでコードの領域を折りたたみ可能にすることができます。これを行うたびに、おそらく他のクラスやメソッドにリファクタリングされる可能性のある大きなコードの塊を隠すためにそれを行います。たとえば、管理しやすくするために、3つまたは4つの領域を持つ500行のコードを含むメソッドを見てきました。 地域の賢明な使用は問題の兆候でしょうか?私にはそう思われます。
265 c#  code-smell 

5
ES6で「var」キーワードを使用する理由はありますか?
ES6に対する Babelのガイドによると: let新しいvarです。 明らかに唯一の違いは、現在のブロックにスコープされるのvarに対して、現在の関数にletスコープされるということです。この答えにはいくつかの良い例があり ます。 varES6コードで使用する理由がわかりません。与えられた変数のスコープを関数全体にしたい場合でもlet、関数ブロックの先頭に宣言を置くことでそれを行うことができますvar。また、forブロックなどでより細かくスコープを設定する場合は、それも実行できます。 ですから、私の本能は、varES6コードを書くときは完全に使用をやめることです。 私の質問は、これについて間違っていますか?よりvarも望ましい合法的なケースはありますletか?
261 javascript  es6 

30
カーゴカルトプログラミングの態度にどのように対処できますか?
必須の入門プログラミングコースにコンピューターサイエンスの学生がいて、プログラミング言語を魔法の呪文のセットと見なします。これは、何らかの効果を得るためにキャストする必要があります(ソリューションのアイデアを表現するための柔軟な媒体と見なすのではなく) 。 問題の本質を考慮せずに、以前の似たような割り当てからコードをコピーアンドペーストする傾向があります。 これらの学生が、書くコードの各部分の構造と意味を理解することができ、また理解する必要があるという自信を高めるための演習や類推はありますか?
257 teaching 

30
新しいプログラマーの特典
私は、大学からすぐに2-3人のジュニアプログラマーを採用するつもりです。現金以外に、若いプログラマーにとって最も重要な特典は何ですか?仕事でゲームですか?クリエイティブになりたい...いいアイデアが欲しい

22
グローバルとデータベースとの違いは何ですか?
私はちょうどこの古い質問に出くわして、グローバル状態の悪さを問いかけました。トップ投票で受け入れられた答えは、グローバル変数で動作するコードを信頼できないと断言しています。その後、値とデータが異なるため、あなたのコードの動作がどうなるか分かりません! しかし、それを見たとき、私はそれが本当に弱い説明だと思わざるを得ません。データベースに保存されたデータを操作するのとはどう違うのですか? プログラムがデータベースのデータを処理しているとき、システムの他のコードがそれを変更しているのか、まったく別のプログラムがそれを変更しているのかは関係ありません。データが何であるかは気にしません。それが全体のポイントです。重要なのは、コードが遭遇するデータを正しく処理することです。(明らかに、私はここでしばしば厄介なキャッシングの問題を明らかにしていますが、今のところそれを無視しましょう。) ただし、使用しているデータが、データベース(またはユーザー入力、ネットワークソケット、ファイルなど)など、コードで制御できない外部ソースからのものであり、何も問題がない場合それで、コード自体のグローバルデータはどうですか?あなたのプログラムはそれをはるかに高度に制御していますが、誰も問題とみなさない完全に通常のものより明らかに悪いものではない場合、悪いことですか?
250 state  globals 

23
不変オブジェクトが良い場合、なぜ人々は可変オブジェクトを作成し続けるのですか?[閉まっている]
不変オブジェクト¹が優れたシンプルなものであり、並行プログラミングでメリットがある場合、プログラマーはなぜ可変オブジェクトを作成し続けるのですか? 私はJavaプログラミングで4年の経験があり、それを見ると、クラスを作成した後に最初に行うことは、IDEでゲッターとセッターを生成することです(したがって、変更可能になります)。認識不足がありますか、ほとんどのシナリオで可変オブジェクトを使用しても問題ありませんか? ¹ 不変オブジェクトとは、作成後に状態を変更できないオブジェクトです。 ² 可変オブジェクトは、作成後に変更できるオブジェクトです。

30
すべてのプログラマが知っておくべきことは何ですか?
使用するプログラミング言語、オペレーティングシステム、またはそれらが開発する環境に関係なく、すべてのプログラマは何を知っておくべきですか? 背景: できる限り最高のプログラマになることに興味があります。このプロセスの一環として、私はわからないことを理解しようとしています。「[プログラミング言語を挿入]開発者が知っておくべきこと」という行に沿ってたくさんのリストがありますが、特定の言語に限定されない類似したものをまだ見つけていません。 また、この情報は他の人にとっても有益であると期待しています。

14
Javaでのオブジェクト作成を避けるべきですか?
同僚から、Javaオブジェクトの作成は実行できる最も高価な操作であると言われました。したがって、できる限り少ないオブジェクトを作成することしかできません。 これは、オブジェクト指向プログラミングの目的をやや損なうようです。オブジェクトを作成していない場合、最適化のために1つの長いクラスCスタイルを記述しているだけですか?

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