ソフトウェア工学

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

17
正しいループを書く方法は?
ほとんどの場合、ループを書いている間、間違った境界条件(例:間違った結果)を書くか、ループ終了に関する私の仮定が間違っています(例:無限ループ)。試行錯誤の結果、仮定は正しいものになりましたが、頭の中に正しいコンピューティングモデルがないためにイライラしすぎました。 /** * Inserts the given value in proper position in the sorted subarray i.e. * array[0...rightIndex] is the sorted subarray, on inserting a new value * our new sorted subarray becomes array[0...rightIndex+1]. * @param array The whole array whose initial elements [0...rightIndex] are * sorted. * @param rightIndex The …

6
EAV-すべてのシナリオで本当に悪いですか?
私は、プロジェクトのいくつかの要素にエンティティー属性値(EAV)モデルを使用することを考えていますが、Stack Overflowでのそれに関するすべての質問は、 EAVをアンチパターンと呼ぶ答えになります。 しかし、私はそれがすべての場合においてそれが間違っているかどうか疑問に思っています。 ショップ製品のエンティティを考えてみましょう。名前、説明、画像、価格など、ロジックに多くの場所で参加する共通の機能があり、時計やビーチボールなどの(半)固有の機能はまったく異なる側面で説明されます。したがって、EAVはそれらの(半)固有の機能を格納するのに適していると思います。 これはすべて、製品リストを表示するために製品テーブルに十分な情報があり(EAVが関与しないことを意味します)、1つの製品を表示するとき/最大5つの製品などを比較するときだけです。EAVを使用して保存されたデータが使用されます。 Magentoコマースでそのようなアプローチを見てきましたが、非常に人気がありますが、EAVが妥当な場合はありますか?

14
企業がこのような厳しいスケジュールでプログラマーを雇うのは普通ですか?[閉まっている]
ですから、私はこの仕事で数ヶ月働いています。私は2から7までベストを尽くしているので、少しイライラしています。以前の仕事では、9:30から10:00に来て、7で退職しました。 。 しかし、私の現在の会社は8:30にそこにいることを主張しています。これからの逸脱は大したことです。これは典型的なものですか?同僚が9:30〜6:30、10:00〜7:00です。でも、それは単なるスタートアップカルチャーなのでしょうか。 クライアントと会わないなどの理由で、物事が非常に硬直することの利点は何なのかわかりません。また、入ってきたときに15〜20分の変動がある場合、なぜ人々が私が去るときに調整することをただ仮定しないのかもわかりません... 開発者としてのこれらの不合理な期待か、何か不足していますか?

17
業界で働くとき、big-Oは本当に関連性がありますか?
私が行ったすべてのインタビューで、big-O表記を含む複雑さの数学的分析についてクイズを受けました。 big-O分析は、業界の開発にどの程度関連していますか?どのくらいの頻度でそれを実際に使用しますか?また、問題に対する研ぎ澄まされた考え方を持つことはどのくらい必要ですか?

21
「キャリアを開始して数年経ってもプログラミングをしないでください」。これは公正なアドバイスですか?[閉まっている]
私はPHPで約5年の経験があり、Java、C#で多少経験が少なく、最近はPythonを学ぼうとしています。プログラマーとしてのキャリアを始めてから、仲間のプログラマーから、プログラミングはキャリアの初期の数年に適していると言われています(ほとんどの人は5年と考えています)。それ。彼らが提示する理由には、プログラミングに関連する頭痛とプレッシャーが含まれます。彼らはまた、プログラマーはあまり社会的ではなく、通常は家族などに時間を与えることを好まないと言います。特に「ああ、来て、あなたは一生プログラミングをすることはできません!」 ここで少し混乱しているので、他の人に質問する必要があります。プログラミングを辞めたらどうすればいいですか?!この場合、教えることは良い選択肢かもしれませんが、おそらく最初に博士号を取得する必要があります。また、私の国(パキスタン)でプログラマーの生活があまり良くないことも注目に値するかもしれません。通常、緊急のプログラミングタスクを達成するためにオフィスで2〜3時間余分に時間を費やさなければなりません。他の国や地域でも状況はいくぶん似ていると感じています。 この分野で5年間過ごした後、キャリアをプログラミングから何か他のものに変えることは公正なアドバイスだと思いますか? 更新 なんてこった...この分野で40年以上の経験を積むことができるとは知らなかった。私は1971年以来人々がそれをやっているのを見て興奮しています。それは私の誕生の15年前を意味します!このような経験豊富な人々と話すことができてうれしいです。ここパキスタンではそんなチャンスはありません。 すべての助けと共有をありがとう。これについてあなたの考えを得るのは素晴らしい経験でした。

28
最近、より多くのプログラマがフリーランスではないのはなぜですか?[閉まっている]
パイ全体をそれらのほんの一部に残して、2つのステータスの大きな違いを増幅します。給料は(巨大な)ものであり、残業をしなくてもよいことは別です。 質問を開いたままにして、うまく行かないという感情と決定に影響を与えるさまざまなテーマについて多くの素晴らしい答えを得ることができれば幸いです。 この質問は本当にグローバルですが、私が大好きなアメリカ、インド、オーストラリアなどの地元市場に関する研究、事実、記事、意見に興味があります。

30
なぜソフトウェアは自動車ほど信頼性がないのですか?[閉まっている]
ユーザーにこの質問をしてもらいました。車が故障することはわかっていますが、それは物理的なものが原因です(ソフトウェアが関与していない限り!)。 私はソフトウェアはもっと若い産業だと答えようとしましたが、ユーザーは「自動車産業はより少ない人でより安定し、信頼できるようになりませんでしたか?」と反論しました。 また、ソフトウェアはもっと複雑だと答えようとしましたが、ユーザーは車を構成する部品が何千もあると反論しました。車の設計と製造を行う人々は一般に、そのコンポーネントを非常によく知っていますが、最終的にはすべて一緒に作業することになります。 それでは、なぜソフトウェアは自動車ほど信頼性が高くないのでしょうか?


19
バージョン管理のコミットが大きすぎるのはいつですか?[閉まっている]
「大規模なコミットをしないでください」と聞いたことがありますが、「大規模な」コミットとは何かを実際に理解したことがありません。関連していても大量のファイルを扱う場合、それは大きいですか?プロジェクトのどの部分を一度に作業する必要がありますか? 私にとって、他の何かを作成する何かを作成することを忘れたり作成したりするため、「小さなコミット」をしようとするのに苦労しています。その後、次のようなものになります。 カスタム発信キューを作成しました ボット -SingleThreadExecutorにすぎない新しいフィールドmsgQueue -sendMsgは、メッセージが送信されるまでブロックし、メッセージが取得されるまで待機します 送った -adminExist呼び出しが更新されました(コントローラーを参照) -sendMessageの呼び出しを削除 コントローラ -新しいフィールドmsgWaitは、メッセージ間の待機時間を示します -サービスプラグインの開始はreloadPluginsに移動しました -adminExistsは、グローバル管理者のためにサーバーから移動しました。チャンネルで確認し、 サーバー、およびグローバルレベル 管理者 -適切なオブジェクトAdminを取得する新しいメソッドgetServerおよびgetChannel 属する BotEvent -toString()もextraとextra1を表示します チャネル -nameに名前が変更されたチャネルフィールド -channel(int)のタイプミスを修正 サーバ -管理者をコントローラーに移動しました PluginExecutor -マイナーテストが追加され、後で削除されます JSプラグイン -フレームワークの変更を更新 -InstanceTracker.getController()をController.instanceに置き換え -VLCトークは独自のファイルで さまざまなNBプロジェクトの更新と変更 --- 影響を受けるファイル /trunk/Quackbot-Core/dist/Quackbot-Core.jarを変更します /trunk/Quackbot-Core/dist/README.TXTを変更します /trunk/Quackbot-Core/nbproject/private/private.propertiesを変更します /trunk/Quackbot-Core/nbproject/private/private.xmlを変更します /trunk/Quackbot-Core/src/Quackbot/Bot.javaを変更します /trunk/Quackbot-Core/src/Quackbot/Controller.javaを変更します /trunk/Quackbot-Core/src/Quackbot/PluginExecutor.javaを変更します /trunk/Quackbot-Core/src/Quackbot/info/Admin.javaを変更します /trunk/Quackbot-Core/src/Quackbot/info/BotEvent.javaを変更します /trunk/Quackbot-Core/src/Quackbot/info/Channel.javaを変更します /trunk/Quackbot-Core/src/Quackbot/info/Server.javaを変更します /trunk/Quackbot-GUI/dist/Quackbot-GUI.jarを変更します /trunk/Quackbot-GUI/dist/README.TXTを変更します /trunk/Quackbot-GUI/dist/lib/Quackbot-Core.jarを変更します /trunk/Quackbot-GUI/nbproject/private/private.propertiesを変更します /trunk/Quackbot-GUI/nbproject/private/private.xmlを変更します /trunk/Quackbot-GUI/src/Quackbot/GUI.javaを変更します …

7
レビュー中の別のブランチに依存するブランチでの作業
gitは以下のシナリオの処理にどのように役立ちますか? タスクは、バックエンドタスクとフロントエンドタスクの2つの部分に分かれています。プルリクエストを作成してバックエンドの変更をマージし、マージされるのを待ちます(そしてフィードバックに対処します)。待っている間、フロントエンドの変更はバックエンドの変更に依存しており、マスターブランチではまだ利用できないため、フロントエンドの変更を実際に処理することはできません。 まだレビュー中に、バックエンドの変更ブランチからフロントエンドの変更ブランチに変更を取り込む最良の方法は何ですか?
65 git  branching 

5
イベントベースのプログラミングはいつ使用すべきですか?
私は、コールバックを渡すか、プログラムの他の関数から関数をトリガーして、タスクが完了したら物事が起こるようにしました。何かが終了したら、関数を直接トリガーします。 var ground = 'clean'; function shovelSnow(){ console.log("Cleaning Snow"); ground = 'clean'; } function makeItSnow(){ console.log("It's snowing"); ground = 'snowy'; shovelSnow(); } しかし、私はプログラミングの多くの異なる戦略について読んでおり、私は強力であると理解しているが、まだ練習していないものはイベントベースです(私が読んだ方法は「pub-sub」と呼ばれていました): var ground = 'clean'; function shovelSnow(){ console.log("Cleaning Snow"); ground = 'clean'; } function makeItSnow(){ console.log("It's snowing"); ground = 'snowy'; $(document).trigger('snow'); } $(document).bind('snow', shovelSnow); イベントベースのプログラミングの客観的な長所と短所を理解したいのですが、他の関数内からすべての関数を呼び出すだけです。イベントベースのプログラミングは、どのプログラミング状況で使用する意味がありますか?

8
単一の責任原則を破ることなく、クラスに複数のメソッドを持たせる方法
単一責任の原則は、ウィキペディアで次のように定義されています 単一責任原則は、すべてのモジュール、クラス、または機能がソフトウェアによって提供される機能の単一部分に対して責任を負うべきであり、その責任がクラスによって完全にカプセル化されるべきであると述べるコンピュータープログラミングの原則です。 クラスの責任が1つだけの場合、どうすれば複数のメソッドを持つことができますか?各メソッドに異なる責任はありません。つまり、クラスには複数の責任があることになります。 単一の責任原則を実証する私が見たすべての例は、1つのメソッドのみを持つサンプルクラスを使用しています。例を見たり、1つの責任があると見なすことができる複数のメソッドを持つクラスの説明があると役立つ場合があります。

7
論理オプションが予約キーワードである場合、どのように名前を付けるのですか?[閉まっている]
時折、何かの最も論理的な名前(変数など)は、選択した言語または環境で予約されているキーワードです。同様に適切な同義語がない場合、どのように名前を付けますか? この問題にはベストプラクティスのヒューリスティックがあると思います。これらは、プログラミング言語とプログラミング環境の作成者または管理者によって提供されます。たとえば、python.org(またはGuido van Rossum)がPythonでそれを処理する方法を示している場合、それは私の本の良いガイドラインになります。C#での対処方法に関するMSDNリンクも参考になります。 または、ソフトウェアエンジニアリングの主要な影響力のある人が提供するガイドラインも有益です。おそらくGoogle / Alphabetには、対処方法を教えてくれる素敵なスタイルガイドがありますか? 次に例を示します。C#言語では、「デフォルト」は予約キーワードです。enumを使用する場合、デフォルト値に「default」(「switch」ステートメントに類似)の名前を付けることができますが、できません。 (C#が大文字と小文字が区別され、enum定数は大文字でなければならないので、「デフォルト」ここで当然の選択ですが、私たちの現在のスタイルガイドは、すべてのenum定数は小文字であることをされている指示と仮定しましょう。) 私たちは、単語「defaultusを検討することもでき「しかし、これは最小驚きの原則に準拠していません。「標準」と「初期」も考慮する必要がありますが、残念ながら「デフォルト」はこの状況でその目的を正確に伝える言葉です。
64 naming 

8
ソフトウェアプロジェクトの最初に物事を正しく行うにはどうすればよいですか?[閉まっている]
私は1年の経験を持つプログラマーです。最近、プロジェクトを正しく開始することはほとんどないことに気付きました(ほとんどのサイドプロジェクト)。通常、プロジェクトサイクルは次のようになります。 いくつかのユースケースから始めます コーディングを開始 うまく処理できず、現在のコードベースにうまく適合しないいくつかのことを理解してください。 コードの大部分を書き換える そして、これは数回行くかもしれません だから私の質問は そのような慣行は一般的ですか、またはそれは私が能力がないことを意味しますか? この面でどうすれば自分を改善できますか?

6
マイナス記号「-」が一般にプラス記号と同じように過負荷にならないのはなぜですか?
プラス記号+は、加算と文字列の連結に使用されますが、そのコンパニオンであるマイナス記号、は-、通常、文字列のトリミングや減算以外の場合には表示されません。その理由や制限は何でしょうか? JavaScriptの次の例を検討してください。 var a = "abcdefg"; var b = "efg"; a-b == NaN // but a+b == "abcdefgefg"

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