ソフトウェア工学

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

3
Java Swing GUIフレームワークにはどのような欠点がありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 一部のデスクトップアプリケーションにJava Swingを使用しました。しかし、他のGUIフレームワークをあまり使用していないので、それらを比較することはできません。 Swingで好きなことと嫌いなことは確かにありますが、それはほとんどすべての状況です。 Java Swing GUIフレームワークの最大の欠点は何ですか?
11 frameworks  gui  swing 

9
C ++標準を知っていることはどれほど重要ですか。
検索を試みましたが、同様の質問は表示されませんでした(それまたは私の検索用語が正しくありませんでした。もしそうなら、遠慮なく閉じてください)。 私はSOの熱心なユーザーであり、ディスカッションと回答にはC ++標準への参照がたくさんあることに気づきました-そして私は認めざるを得ません。 、問題は、C ++開発者がこのドキュメントを読んだことがなくても、本当に生活のためのコードを書けるかどうかです。コンパイラを書くビジネスに従事していない私たちにとって、それは本当に重要ですか?
11 c++  standards 

5
既存のWebアプリケーションをリファクタリングする方法は?
私は最近、多くのことを読んだり考えたりしており、Web開発戦略を再考する必要があるかもしれないという結論に達しました。私は多くのオンザフライプログラミングを行っており、2年間でPHP Webアプリケーションに取り組んできました。小さなツールとして始まったかもしれないものが、かなり大きなプロジェクトになりました。しかし、私と私の前任者からの大量のレガシーコードがあり、当時は意味があったかもしれないコードスニペットですが、今は、実際の形でのこのコードの有用性に疑問を投げかけています。さらに、ユニットテストやテスト駆動開発のようなものは、ごく最近まで私の範囲にはありませんでした。 では、Webアプリケーションのリファクタリングにはどのように取り組みますか?私が探すべきものは何で、その順番は?ブラウザゲームと機能するウェブアプリはどうですか?ではアプローチに違いはありますか?

2
多くのパラメーターを使用したREST API呼び出しのベストプラクティス
パラメーターの(長い)リスト(たとえば、8つのパラメーター)を受け取るGET操作を備えたREST APIがあります。この操作の目的は、要素を検索してフィルタリングすることです。 このシナリオを管理するためのベストプラクティスはどれですか。: (1)パラメータのリストを受け取りますか?: public ResultType Get(int p1, int p2, string p3...) { ... } (2)または、これらのパラメーターをカプセル化するオブジェクトを受け取りますか?: public class MyClass { public int X { get; set; } public int Y { get; set; } public string Z { get; set; } } public ResultType Get(MyClass parameter) { ... } 名前、説明、カテゴリ、ブランド、モデル、価格などで「製品」を検索およびフィルタリングするeコマースシナリオを考えてみてください。

2
プライベートプロジェクトを配置するにはどのようなライセンスが必要ですか?
仕事が商用目的で非公開であり、そのソースコードではないプロジェクトは、誰にでも配布されます。機能的なアプリケーションだけがWebサイトを通じて消費者を示しました。 次のような構造になっています。 ソースコードはPHPで記述されています。これは、ComposerとPHPUnitを使用するときにサードパーティのコードが使用される唯一の部分です。 HTML、CSS、Javascriptテクノロジーが使用されます(無料のサードパーティライブラリを使用) サーバー側のMySQLサーバー、PHP、およびMemcachedが使用されます。 そしてサーバーは共有ホスティングではなく、VPSです。 私たちは誰にもソースコードを見せたくありませんが、何らかの理由でコードが盗まれたり、その他の方法で入手されたりした場合は、いかなる種類の開示も許可しないライセンスが必要です。 私の質問は: このタイプのプロジェクトには、サードパーティコードとプライベートコードの互換性がありますか? これらの作品のライセンスは可能ですか?
11 php  licensing 

4
ロギングを実行にラップするための設計パターン
前書き 処理フレームワークの抽象Javaクラスを実装しています*。関数を実装することでexecute、ビジネスの論理機能を追加することができます。すべての実行関数のすべての実装の最初と最後にロギングを追加したいと思います。また、特定の処理が行われた場合、ロギングの合間にも実行されます。でもこれを一律に作りたい。私の考えは、ロギングを実装executeWithLoggingし、特定の部分にロギングをラップするいくつかの新しい機能を提供する独自の新しいクラスにフレームワーククラスを継承することでした。それが最高のアイデアかどうか、全体がエレガントになるようなデザインパターンを使用できるかどうかはわかりません。全体をどうやって進めますか? 課題(これらを考慮してください!) 私の場合の1つの課題は、元のクラスには1つのexecute関数しかないということですが、複数の部分をログに記録する必要があります。 2つ目は次のとおりです。Decoratorパターンを使用して、私も使用している場合ではなく、かなりの仕事ん(だけでなく、私の最初のアイデアだった)executeので、super.execute()-functionは私の新しいの最初の行で呼び出さなければならないexecute()、そうではありません? 関連する少なくとも4つのクラスがあり、次のようになります。BaseFunctionフレームワークからLoggingFunction extends BaseFunction私から、MyBusinessFunction extends LoggingFunction私から、MyBusinessClassinstanciates MyBusinessFunction。 の最初と最後だけでなくexecute、途中でもロギングが必要です。 「ロギング」は単純なJavaロギングではなく、実際にはデータベースへのロギングです。これは原則については何も変更しませんが、ロギングが単なる1行のコードではない場合があることを示しています。 たぶん、私がすべてを行う方法の例は、私を動かすのにいいでしょう。 | *ストームトライデント関数。ストームボルトに似ていますが、これは特に重要ではありません。

4
ビジネスロジックとアプリケーションロジックの違いは何ですか?[閉まっている]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 4年前休業。 私がstackoverflowについて同じ質問をしたが、彼らはここで尋ねるように指示したことに注意してください。 アプリケーションロジックとビジネスロジックの違いを識別しようとしていますが、一連の記事を見つけましたが、残念ながらそれらには矛盾があります。 ここ では彼らは同じであると言いますが、ここでの答えはまったく異なります。 私には次のように理解しています。 LogicGoogleで単語の定義を調べると、 特定のタスクを実行するためのコンピューターまたは電子デバイスの要素の配置の基礎となるシステムまたは一連の原則。 したがって、ロジックがその場合、set of principles underlying the arrangements of elementsビジネスロジックはであるset of principles underlying the arrangements of the business rules必要があります。つまり、システムを取得するために従うべきルールがビジネスニーズを反映していることを意味します。 そして、私にとってのアプリケーションロジックはthe principles that the application based on、言い換えると、これらのルールを適用してシステムにビジネスニーズを反映させる方法です。たとえば、MVCを使用すべきか、使用すべきでないか、SQLまたはMSSQlを使用すべきかなどです。 ですから、アプリケーションとビジネスロジックの違いに関する混乱を取り除くために誰かが私を助けていただけませんか。

3
大きな集合根を処理する方法は?
DDDを学習していますが、回答よりも多くの質問があります。 膨大な数のファイルを含むディレクトリのモデルを考えてみましょう。 ここに私がそれを見る方法があります: ディレクトリは集約ルートです。 このエンティティには、追加または名前変更されたときにファイル名の一意性をチェックする検証ロジックが必要です。また、ファイルエンティティには「SetName」ロジックが含まれており、ドメインイベントを介してディレクトリに名前の変更を通知します。 しかし、ディレクトリはどのように機能するのでしょうか。 すべてのファイルをメモリにロードできるとは限りません。この場合、ファイルリポジトリには、名前の一意性をチェックするためのアドホックロジックが必要ですか?それは実行可能な決定だと思います。 ただし、現在コミットされていないトランザクションで一部のファイルがすでに追加または名前変更されている場合はどうなりますか?(それを禁止するものはありません。トランザクション境界は、ビジネスロジックに関連して外部で設定されます)。おそらくリポジトリは、メモリ内の状態と永続化された状態の両方を考慮する必要があります(これらの状態をマージすることは簡単な作業ではありません)。 したがって、すべての子を持つルートの集合体がメモリに収まる場合、すべてが正常です。そして、すべてのエンティティを具体化できないとすぐに問題が発生します。 そのような場合の取り組みを教えてください。全く問題ないのかもしれませんが、それは私の誤解です。

2
多数のコンポーネントで使用される「グローバル」構成クラスを作成するためのベストプラクティス
ドライバーパーツと、さまざまな関連タスクを実行する約5つのライブラリーを持つ大規模なプロジェクトがあります。ライブラリの多くは、起動時にドライバーコードによってデータベースから読み取られる「グローバル」構成データへのアクセスを必要とします。ドライバーとは、メイン機能を含む部分を意味します。 これを処理する方法についての私の考えは、構成項目を取得する静的メソッドを使用して構成クラスを作成することでした。これは最善の方法ですか?他にどのようにこれを達成できますか? 例えば: class config { public: static get_item(key); private: static values; }; シングルトン設計はここで適切ですか?

5
データベースに適切な全文索引がないのはなぜですか
MySQL、SQL Server、Oracleなどの主要なRDBMSシステムのいずれも、フルテキストインデックス作成を適切にサポートしていないのはなぜですか。 ほとんどのデータベースはフルテキストインデックスをある程度サポートしていますが、通常は遅く、機能セットが小さいことに気づきます。本当に優れたフルテキストインデックスが必要なときは常に、データベースの外に出て、Lucene / SolrやSphinxなどを使用する必要があるようです。 これらの全文検索エンジンのテクノロジーがデータベースエンジンに完全に統合されていないのはなぜですか?データを最新の状態に保つことや、結果を他のテーブルと結合できないことなど、データをLucenceなどの別のシステムに保持することには多くの問題があります。これら2つのテクノロジーを統合できない具体的な技術上の理由はありますか?

3
コードレビュープロセス後にフィードバックを提供する方法
私は現在、私のチームに参加したばかりのジュニア開発者のコ​​ードのいくつかをレビューしていますが、このレビューの出力をどのように提供すべきか疑問に思っています。 自分でコードを修正する必要がありますか? レビュープロセスに関するフィードバックを提供し、指示に従って修正を行わせる必要がありますか?もしそうなら、どのようにこのフィードバックをするのですか、特定のテンプレート文書を記入して送信するのですか、それとも後でチェックできるコードファイル内の問題をマークするのに役立つソフトウェアがありますか?(私はVisual Studioを使用しています)。 コードのレビューと修正が完了した後、時間が経ち、過去にレビューしたコードの一部が変更されました。再レビュープロセスを実行するにはどうすればよいですか?すべてのコードをもう一度確認する必要がありますか?または、変更された部分だけをチェックしますか?そして、もしそうなら、コードの二重レビューを避けるために、変更された部分をどのように追跡するのですか?

4
再帰を使用して問題を解決できるかどうかを判断するための考慮事項は何ですか?
インタビューでは、再帰を使用して問題を解決したり(1無限精度の整数に追加するなど)、問題が再帰を使用するのに適している場合があります。時には、問題解決のために再帰を頻繁に使用することが原因である可能性があるため、あまり考えずに、再帰を使用して問題を解決します。 しかし、問題を解決するために再帰を使用することが適切であると判断する前の考慮事項は何ですか? 私が持っていたいくつかの考え: 毎回半分にされるデータに対して再帰を使用すると、再帰を使用しても問題ないように思えます。16GBのRAMまたは8TBのハードドライブに収まるデータはすべて、42レベルの深さの再帰で処理できるためです。(したがって、スタックオーバーフローはありません(一部の環境では、スタックの深さは4000レベル、42を超える可能性がありますが、同時に、各コールスタックがより多くのメモリを占有するため、ローカル変数の数にも依存します多数のローカル変数があり、スタックオーバーフローを決定するのはレベルではなくメモリサイズです)。 純粋な再帰を使用してフィボナッチ数を計算する場合、中間結果をキャッシュしない限り、時間の複雑さを本当に心配する必要があります。 そして1、無限精度の整数に追加するのはどうですか?議論の余地があるかもしれませんが、3000桁または4000桁の数字を扱うので、スタックオーバーフローが発生する可能性がありますか?私はそれを考えていませんでしたが、おそらく答えはノーです、再帰を使用するべきではありませんが、単純なループを使用する必要があります数が素数であるかどうかなど、数のプロパティ。 最終的な質問は、問題を解決するために再帰を使用することを決定する前に考慮すべきことは何ですか?

7
TDDを読み取り/書き込み機能に適用するにはどうすればよいですか?
鶏と卵の問題のようです。 何らかのデータストアに書き込み関数を書き込むことはできますが、テスト済みの読み取り関数がなければ適切に保存したことを知ることはできません。 読み取り関数をデータストアから読み取ることができますが、テストされた書き込み関数なしで、データストアにデータを読み込むにはどうすればよいですか? 編集: SQLデータベースに接続してトランザクションを作成し、使用するオブジェクトを保存およびロードしています。DBが提供するアクセス関数をテストする意味はありませんが、このようなDB関数をラップしてオブジェクトをシリアル化/逆シリアル化します。DBとの間で適切なものを正しく読み書きしていることを確認したいと思います。 @snowmanが言及しているように、追加/削除とは異なります。私が書いた内容が正しいことを知りたいのですが、それには十分にテストされた読み取り機能が必要です。読んだときに、書いたものと同等のオブジェクトが正しく読まれたことを確認したい。ただし、十分にテストされた書き込み関数が必要です。
10 tdd  io 

2
git push forceブランチは間違っていますか?
機能ブランチで作業しているときは、作業がレビューされてメインブランチに統合される前に、インタラクティブなリベースを使用してブランチのコミットをクリーンアップする傾向があります。 機能の開発中に、バックアップ手段として中間作業をリモートリポジトリにプッシュしたいと思います。つまり、ハードドライブがクラッシュしたとき、機能ブランチ全体が失われることは望ましくありません。 ただし、これによりgit push --force、リベースの後にリモートリポジトリにアクセスしなければならないことがよくあるという事実につながります。このアクションは、一般的に眉をひそめています。または、リンクされたgithubページにあるように: コミット履歴を変更すると、リポジトリを使用する他のすべての人にとって物事が難しくなる可能性があるため、すでにリポジトリにプッシュしたときにコミットをリベースすることは悪い習慣と見なされます。 この矛盾を解決する(一般に受け入れられている)ポリシーはありますか? なぜこれがの複製ではないのかgit "リベースのゴールデンルール"はそれほど重要なのですか? ここでの私の質問は、リモートリポジトリに作業をバックアップすることと作業をリベースすることの間の競合を解決するためのポリシーを求めています。したがって、なぜリベースを強制しないことが「不可欠」であるのかを尋ねます。
10 git 

6
ブール割り当てのベストプラクティス[終了]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 別の開発者から引き継いだプログラムで、次の条件に遭遇しました。 if (obj.Performance <= LOW_PERFORMANCE) { obj.NeedsChange = true; } else { obj.NeedsChange = false; } このコードは冗長で見苦しいと思うので、比較に基づいて単純なブール割り当てと考えていたものに変更しました。 obj.NeedsChange = obj.Performance <= LOW_PERFORMANCE; これを見ると、私のコードをレビューしている人が、私の変更は機能的には正しいものの、他の人がそれを見て混乱させるかもしれないとコメントしました。彼は、三項演算子を使用すると、この割り当てがより明確になると信じていますが、私はより冗長なコードを追加するのは好きではありません: obj.NeedsChange = (obj.Performance <= LOW_PERFORMANCE) ? true : false; 彼の推論は、他の開発者があなたがやったことを正確に止めて困惑させなければならないなら、最も簡潔な方法で何かをすることは価値がないということです。 ここでの本当の問題は、ブール値に値を割り当てるこれら3つの方法のうち、どれがobj.NeedsChange最も明確で保守しやすいのかということです。

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