ソフトウェア工学

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

3
メソッドのパラメーターリストにオブジェクトまたはオブジェクト識別子を含める必要がありますか?
私たちのチームは次の議論をしています: 次の2つのメソッドがあるとします。 public Response Withdraw(int clubId, int terminalId,int cardId, string invoice, decimal amount); public Response Withdraw(Club club, Terminal terminal,Card card, string invoice, decimal amount); 送信されたものは単なるIDです。 片方は、最初の方法が正しいと言います。ターミナルとクラブのIDしかないので、他に何もないことは明らかです。これが私のアプローチです。 反対側は、2番目の方法の方が柔軟性があるため、正しいと言います。 私たちはオブジェクトパラメータのアイデアに精通していますが、反対側もオブジェクトパラメータはオブジェクトをプロパティとして持つべきだと考えています。 正しいアプローチはどれですか? たぶん3番目のさらに良いアプローチがありますか?
10 design  methods 

3
Webページ上の3Dグラフィックスについて、ブラウザーとシステムの互換性が最も高いオプションは何ですか?
少し3Dが必要なWebサイト用に少し機能を開発したいと思います。ユーザーはオブジェクトを移動したり、回転したり、テクスチャを適用したりできます。 これまでのところ、私は調べました: WebGL(特にthree.js)と見栄えは良いですが、IEやIOSではサポートされていません。 IOSは<canvas>タグをサポートしていますが、2Dのみです。three.jsにはサポートされていないハックがあり、3Dのものにテクスチャなしで2Dキャンバスを使用させるようですが、これはハックのようです。 また、ほとんどのブラウザーで機能するFlashを使用することも検討しましたが、IOSでは機能しません。 さまざまなブラウザーとインターフェイスで3D Webグラフィックスを実行するための最良のオプションは何ですか? 現時点では、WebGL for webを考えて(そして人々にchromeまたはfirefoxを使用してIEにヒットするように依頼して)、IOSのネイティブアプリを作成するかもしれませんが、より優れた代替が利用できるかどうかはわかりません知らない。

4
Javaのインスタンスの置き換え?
したがって、私は現実の世界(学術プロジェクト以外)でのプログラミングにかなり慣れていinstanceofないため、特定のオブジェクトがどのクラスであるかを判断するために使用することは悪いことだと多くの投稿に出くわしました。 私の状況では、3つのクラスがあります。1つは基本製品クラスで、もう1つはそれを拡張し、もう1つはそれを拡張します。これらはすべてデータベースの同じテーブルに格納されており、データを取得するためにそれぞれのメソッドを使用する必要があるコードがいくつかあります。 この方法で回避するためのベストプラクティスは何ですか?ポリモーフィズムについていくつか読んだことがありますが、私が抱えている問題を解決する例は見つかりません。通常、これらはすべて、異なるオブジェクトから異なるものをプルする必要があるため機能しないメソッドをオーバーライドします。 これを行うためのより良い方法はありinstanceofますか、それともオブジェクトに固有のフィールドを取得するための使用または何らかの反射で立ち往生していますか?

5
線分の移動に関するインタビューパズル
長さの数直線上のM、0 < M <= 1,000,000,000指定した、N(1 < N <= 100,000点の対の整数)。各ペアで、最初のポイントはオブジェクトが現在配置されている場所を表し、2番目のポイントはオブジェクトを移動する必要がある場所を表します。(覚えておいてくださいsecondポイントがかもしれ小さいよりfirst)。 ここで、その時点0から始めて、1オブジェクトを保持できるカートがあるとします。すべてのオブジェクトを最初の位置からそれぞれの最終位置に移動し、数直線に沿って(変位ではなく)最短距離を移動したいとします。あなたはポイントで終わる必要がありMます。 今、私はこの問題をより簡単な問題に削減しようとしています。正直なところ、私は力ずくの(おそらく貪欲な)解決策を考えることすらできません。しかし、私の最初の考えは、後方への動きを2つの前方への動きに縮退させることでしたが、それがすべての場合に機能するとは思われません。 私はこれらの3サンプルテストケースをここに引き出しました: 最初のテストケースへの答えは12です。まず、redポイントでアイテムを受け取ります0。次に、ポイント6(距離= 6)に移動し、redアイテムを一時的にドロップして、アイテムを拾いgreenます。次に、ポイント5(距離= 1)に移動してgreenアイテムをドロップします。次に、ポイント6(距離= 1)に戻ってredドロップしたアイテムを拾い、ポイント9(距離= 3)に移動してから、ポイント10(距離= 1)に移動してシーケンスを終了します。 移動した総距離はでした6 + 1 + 1 + 3 + 1 = 12。これは可能な最小距離です。 他の2つのケースにはの答えがある12と思います。しかし、私はそれを解決するための一般的なルールを見つけることができません。 誰かアイデアはありますか?
10 algorithms  math 


7
これは「アンチパターン」であり、使用を中止すべきですか、それともこの巧妙な設計ですか?
RESTサービスを作成するとき、私は基本的に次のことをするために凝視しました: HTMLが要求されています サービスは必要なWebページを返しますが、要求された「リソース」はありません。データ Webページには、同じサービス(異なるコンテンツタイプ)にAJAXリクエストを発行するJavaScriptが含まれています サービスが実際のデータ(JSON)を返し、ページに表示されます 一方では効率が悪いように見えます(2リクエスト)が、これを使用した場合、「パフォーマンスは問題ありません」、つまりトラフィックの少ない内部アプリとWebサイトはシンプルで高速にロードされます。 私がこれで終わった理由は、Webページがほとんど純粋なHtml + JavaScriptになる可能性があり、そのようなテーブルやものを作成するためにサーバー側のもの、特にループがほとんど必要ないことです(これは、 slickgridなど)、たとえばデータとビューの分離。 これを使用する前に、これは良いアイデアですか、それともやめるべきですか?

1
25万件未満の潜在的なレコードを処理する軽量のドキュメントインデックス
最近、ドキュメントインデックスエンジンの制限にからかわれています。かなり堅牢な検索機能を必要とする小さなWebサイトを開発していましたが、ハードウェアの制約により、このニーズを処理するLucene風のソリューション(通常のSolrやElasticSearchなど)を展開できませんでした。 それでも、データベースを多用する複雑なデータや計算を提供する必要がありましたが、25万件を超える潜在的なレコードを処理する必要はありませんでした。これを処理するためだけにSolrまたはESインスタンス全体をデプロイすることは、無駄に思えました。 考えてみたらかなり大きな問題のようです。ほとんどの人は、SQLだけで検索要件を処理します。彼らはデータに対してSQLクエリを実行するだけです。彼らの検索機能もひどいものになります。 一部のシステム(特に共有ホスト)では、ブランケットフルテキストワイルドカード検索を行うと速度が大幅に低下し、特に複雑なクエリや多数の結合がある場合にデータベースがダウンする可能性があります。 ユーザーからの単一のリクエストに対して複数のクエリを実行することになります。ますます複雑なクエリでこれを回避できるかもしれませんが、前のポイントを参照してください。 フルテキストエンジンに通常存在する機能の欠如。 データベースにはサーバーとしてデプロイする必要があるという同じ問題があり、その後SQLiteが登場し、突然、単一のファイルに自己完結型のデータベースをデプロイできるようになりました。私のグーグルは何も生成していません-全文索引付け/検索のためにこのようなものが存在するかどうか疑問に思います。 軽量のドキュメントインデックスを実装するか(たとえば、別の質問への回答で説明されているように)、またはこれらの状況でSQLを使い続けるかを決定するときに考慮すべき要素は何ですか?

5
この場合、テストごとに1つのアサートに固執していますか?
テストしているクラスがあります。クラスには関数があります:apply(List<IRule> rules, List<ITarget> targets); 1つのテストで、各ターゲットが1つのルールaに渡されていることを確認します。 rule1.AssertWasCalled(fnord => fnord.Test(target1)); rule1.AssertWasCalled(fnord => fnord.Test(target2)); rule1.AssertWasCalled(fnord => fnord.Test(target3)); 自分を単一の表明文に限定することはかなりホブゴブリンだと私には思えます。この仮定は正しいですか、それとも各ターゲットが実際にテストされたと断言できる他の方法がありますか?

5
スプリントが早く終了したらどうしますか?
スプリントが早く終了したらどうしますか? 現時点では、スプリントチームがスプリントが早期に終了した場合、バックログからストーリーを作成します。 バックログから取得したストーリーはどうなりますか?ストーリーは現在のスプリントに追加されますか?もしそうなら、これらの物語が間に合わないとしたらどうでしょう。その後、スプリントは失敗しましたか?
10 scrum  sprint 

11
Webアプリケーションを作成するには、htmlとjavascriptを学ぶ必要がありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 私は経験豊富なJavaプログラマーであり、動的なページや描画などを必要とする複雑なWebアプリケーションを作成したいと考えています(例としてSOを取り上げます)。このようなアプリケーションを作成するには、javascript / htmlを学ぶ必要がありますか? 別の言語を学びたくないということではありませんが(以前にこれを行ったことがあります)、JavaScript環境のテクノロジーは急速に変化しているように見えるため、1つのフレームワークの学習を終了すると、すでに時代遅れです。私はウェブ開発用のいくつかのJavaフレームワーク(スプリング、プレイ)をチェックしましたが、深くは確認していません。それで、これらのフレームワーク(または私が知らない他の可能なJavaフレームワーク)は、html / javascriptを学習せずに使用できますか?また、Pythonの経験もあります。したがって、Pythonでアプリを実行できる場合は、それもオプションです。

4
C#でアンマネージセーフコードを使用しないのはなぜですか
C#には、チェックされていないコードを実行するオプションがあります。マネージコードの方がはるかに安全であり、多くの問題を克服できるため、通常はそうすることはお勧めしません。 ただし、コードでエラーが発生しないことが確かで、メモリの処理方法がわかっている場合、なぜ(高速コードが好きな場合)なぜ一般的なアドバイスに従うのでしょうか。 非常に高速なビットマップ操作を必要とするビデオカメラ用のプログラムを書いたので、これは不思議に思っています。私はいくつかの高速グラフィカルアルゴリズムを自分で作成し、アンマネージコードを使用してビットマップ上で優れた動作をしました。 一般的に、メモリリークやクラッシュのリスクがないことが確かな場合は、アンマネージコードをより頻繁に使用しないのはなぜでしょうか。 PS私の経歴:このプログラミングの世界に少し入って、私は一人で(数年はそうしています)、このソフトウェア設計の質問がそれほど奇妙ではないことを願っています。先生のように、そんなことを聞​​いてくれる人はあまりいません。

6
ソースコード値を推定する方法は何ですか?
過去数か月間、私は自由時間にプロジェクトに取り組んできました。最近、友人からスタートアップの立ち上げを依頼されており、このソースコードは私たちにとって非常に価値があります。 共同創設者として、このコードは会社の首都の何かを数え、株式と交換することができます。しかし、どのようにその価値を見積もることができますか?業界標準の賃金に私が費やした時間を掛けるだけですか、それとも他の方法がありますか?

7
条件を重複してチェックするのは悪いスタイルですか?
コードの中で、特定の条件を何度もチェックしていることがよくあります。 簡単な例を挙げましょう。「a」で始まる行、「b」で始まる行、およびその他の行を含むテキストファイルがあり、実際には最初の2種類の行のみを処理したいとします。私のコードは次のようになります(Pythonを使用しますが、擬似コードとして読み取ります)。 # ... clear_lines() # removes every other line than those starting with "a" or "b" for line in lines: if (line.startsWith("a")): # do stuff elif (line.startsWith("b")): # magic else: # this else is redundant, I already made sure there is no else-case # by using clear_lines() # ... …

5
追加の開発者の収益の減少
ソフトウェアプロジェクトに開発者を追加すると、利益が減少するポイントを説明する用語はありますか? 高いレベルでは、プロジェクトが生産能力を発揮する開発者の数(プロジェクトの状態、追加された開発者の品質)だけがより複雑であることに気づきますが、これを繰り返しによる非技術的な管理に関連付ける方法。私は基本的に、ブルックの法則を除いて、「終末速度」のような強い精神的なイメージを引き起こす用語を探しています。


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