ソフトウェア工学

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

3
ほとんどのユーザーにリーチするには、デスクトップアプリケーションにどのバージョンのJavaを使用すればよいですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 ほとんどのエンドユーザーがJava 8よりも古いバージョンを使用していると想定するのは正しいですか?私のアプリケーションを使用するために人々に強制的にアップグレードさせたくないので、たとえそれが新しいバージョンの利点を自分に適用できない場合であっても、最初からJava 7または6を使用するように計画する必要があります開発者として?

2
JavaにはJVMがありますが、Cには何がありますか?
Cにはコンパイラーがあることは知っていますが、実行パフォーマンスを決定するものは何ですか? たとえば、if elseブロックで、if elseの代わりにすべてのifがコードに含まれている場合、すべてのifが実行されると判断するものは何ですか?JavaではJVMになりますが、Cでは実行コンパイラのことは何ですか?
15 java  c 

5
If Else-繰り返されるコードロジック
私の上司は、特定のロジックを持つプロジェクトをくれました。ナビゲーターが製品に到着するまで多くの場合をナビゲートする必要があるWebページを開発する必要があります。 これは、サイト内のナビゲーションのパススキームです。 重要! 製品ページで、ナビゲーターは必要なフィルターを選択できます。 Aの場合、彼/彼女はB(そしてもちろんC)またはCを通過して製品に到達しなければなりません。 Bの場合、彼/彼女はCを通過して製品に到達しなければなりません。 Cの場合、彼/彼女は直接製品に到達します。 もちろん、AIから開始する場合、最長パスをたどり、製品に到達すると3つのアクティブなフィルターがあります。 これまで、私は次のコードを開発しましたが、これは正常に機能します。 if filter_A if filter_B filter_C() .. else .. else filter_C .. else .. else if filter_B filter_C() .. else .. else filter_C() .. else .. この状況で、より専門的なプログラマが何をしたかを尋ねるためにここにいます。私はDRYの原則を尊重しませんでした。私はそれが気に入らず、この種のロジックを開発する別の方法を知りたいです。 関数のコードのすべてのセクションを分割することを考えましたが、この場合は良いアイデアですか?

1
JavaScriptでプロトタイププログラミングを使用する場合
私は、プロジェクト用のシンプルなウィジェットを次の方法で開発することにかなりの時間を費やしました。 var project = project || {}; (function() { project.elements = { prop1: val1, prop2: val2 } project.method1 = function(val) { // Do this } project.method2 = function(val) { // Do that } project.init = function() { project.method1(project.elements.prop1) project.method2(project.elements.prop2) } })() project.init(); しかし、フォーマットを次のように変更し始めました。 function Project() { this.elements = { prop1: …

3
refと実行時のoutの違いは何ですか?
C#は、参照によって渡される引数を作成するためのrefand outキーワードを提供します。2つのセマンティックは非常に似ています。唯一の違いは、フラグ付き変数の初期化です。 ref関数に渡す前に変数を初期化する必要がありますが、必要ありoutません。 out関数内で変数を初期化する必要がありますが、必要ありrefません。 これらの2つのキーワードの使用例もほぼ同じであり、あまりにも頻繁に使用されるため、コードのにおいと見なされます(TryParseandやTryGetValuepattern などの有効な使用例もあります)。 このため、誰かが説明できますが、なぜC#には非常に狭いユースケース用の2つの非常に類似したツールがあるのですか? また、MSDNでは、実行時の動作が異なることが記載されています。 refキーワードとoutキーワードは異なる実行時の動作を引き起こしますが、コンパイル時のメソッドシグネチャの一部とは見なされません。 実行時の動作はどのように異なりますか? 結論 両方の答えが正しいように見えます、ありがとう。jmorenoを受け入れたのは、より明確だからです。

6
スプリントでポーカーを計画する目的は何ですか?
私たちのビジネスアナリストとプロジェクトリーダーは、ストーリーとしてのクライアントの要件を教えてくれます。すべてのスプリントプランニングでは、開発者はプランニングポーカーをプレイするよう求められます。 彼らは私たち全員に、「努力」ではなく「複雑さ」を考慮するように頼みました。私たちは本当に混乱しており、会議に時間を浪費しています。ある開発者は、「何を本当に検討したいのですか?この要件(時間の見積もり)で行う必要があるコード/ DDLの変更に関するものですか、それとも要件を理解したかどうかに関するものですか? しかし、彼ら(ビジネスアナリストとプロジェクトリーダー)は、「要件を理解する」と「カードを調達する」とはどういう意味ですか? さらに、個々のスクラムチーム用のスライス会議があり、各開発者が各スクラムチームの特定のタスクの時間を見積もります。それで、彼らはPlanning Pokerで本当にどんなことを話しているのでしょうか? 例を使用してこれを説明できる人はいますか?彼らが「複雑さ」と「努力」と言うとき、彼らが本当に話していることを区別するようにしてください。
15 agile  scrum  planning 

3
プロジェクトの最初のイテレーションにどのくらいの詳細を入れるか?
新しい個人プロジェクト(Python)を開始したばかりで、プログラムの「大まかなドラフト」に相当するものを書いています。私はまだ広範なエラー/例外処理または美的なUI要素を入れていません(これらが最終的に必要になることを知っている場合でも)、ドキュメントは私がやっていることを将来見るのに役立つのに十分です。 プロジェクトの設計/管理の設定原則に反して、大雑把に始めるのですか?私は科学者であり、プログラマーではないので、これらのことを理解していません。したがって、主な問題は、次の2つの両極端のどちらに当てはまるかについてコンセンサスがあるかどうかです。 すべての例外処理を含め、最初から徹底的で高品質のコードを記述し、最終的に必要になることがわかります。 最初から最小限の作業でラフなドラフトを作成し、後ですべての詳細を記入します。 関連する質問:プロジェクトを完成させるために、デザインの「素晴らしさ」を犠牲にしてよいのはいつですか?

2
Apache Software License 2.0をプロジェクトに適用する場合、ソースファイルのライセンスヘッダーは必要ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 5ヶ月前に閉店。 Apache Software License 2.0の付録を読んで、今何をしなければならないのかはっきりしないままです。 付録:作業にApacheライセンスを適用する方法 Apacheライセンスを作業に適用するには、次のボイラープレート通知を添付します。括弧「[]」で囲まれたフィールドは、独自の識別情報に置き換えてください。(大括弧を含めないでください!)テキストは、ファイル形式に適したコメント構文で囲む必要があります。また、サードパーティのアーカイブ内で簡単に識別できるように、ファイル名またはクラス名と目的の説明を著作権表示と同じ「印刷ページ」に含めることをお勧めします。 もう少し説明するために、私は現在githubでのオープンソースプロジェクトに貢献しています。そこでは、ASL2.0の下でのライセンスの決定がなされました。最新のコミットでは、ライセンスLICENSEディレクトリがルートディレクトリに追加されました。 興味深いのは、Apacheソフトウェアライセンスの下でコードを完全にライセンスするために他に何をしなければならないかです。具体的には、「作業」と見なされるものは何ですか。また、プロジェクトのすべてのソースファイルに定型的な通知を含めることは必須ですか。 README他のオープンソースプロジェクトで見たように、すでに存在しているものに通知を追加することが可能であるはずです。以下のラインに沿ったもの: ライセンス: 特に明記されていない限り、このリポジトリ内のすべてのファイルは、Apache Software License 2.0の下でライセンスされています[ここに定型文を挿入] ソースヘッダーに関するApacheポリシー(Apache Software Foundationが所有するプロジェクトのみを対象としていますが)には次のように記載されているため、これは問題ないはずです。 各元のソース文書(コードやドキュメントが、ライセンスおよび注意ファイルを除く)はSHOULD上部に短いライセンスヘッダを含みます。ディストリビューションにCLA、CCLAまたはSoftware Grant(サードパーティライブラリなど)でカバーされていないドキュメントが含まれている場合は、ポリシーガイドを参照してください。 各ソースファイルには、次のライセンスヘッダーが含まれている必要があります。ヘッダーに著作権表示がないことを確認してください。 具体的には、ここでの「べき」は、すべてのファイルのライセンスヘッダーが、ASLの下でライセンスされているプロジェクトのすべてのソースファイルに必須ではないことを考えさせます。

2
REST APIエラー応答モデルとエラーコードシステムを作成する最良の方法は何ですか?
私のREST実装は、次の構造を持つJSONでエラーを返します。 { "http_response":400, "dev_message":"There is a problem", "message_for_user":"Bad request", "some_internal_error_code":12345 } プロパティ(dev_message、message_for_user、some_internal_error_code)に必要な値を渡し、それらを返すことができる特別な応答モデルを作成することをお勧めします。コードでは、これは次のようになります。 $responseModel = new MyResponseModel(400,"Something is bad", etc...); このモデルはどのように見えるべきですか?メソッドを実装する必要があります。たとえば、テキスト情報のみを渡すsuccessResponse()で、コードはデフォルトで200になりますか?これにこだわっています。これは私の質問の最初の部分です。このモデルを実装する必要がありますか、これは良い練習ですか?今のところ、コードから直接配列を返すだけだからです。 2番目の部分は、エラーコードシステムについてです。エラーコードについては、ドキュメントで説明します。しかし、私が遭遇している問題はコードにあります。エラーコードを管理する最良の方法は何ですか?それらをモデル内に記述する必要がありますか?または、これを処理するための別のサービスを作成する方が良いでしょうか? 更新1 応答用のモデルクラスを実装しました。これはGregの答えと似ていますが、同じロジックですが、さらに、モデルに記述されたエラーをハードコーディングしました。ここでは、次のようになります。 class ErrorResponse { const SOME_ENTITY_NOT_FOUND = 100; protected $errorMessages = [100 => ["error_message" => "That entity doesn't exist!"]]; ...some code... } なぜこれをしたのですか?そして何のために? コードでは格好いいです: return new ErrorResponse(ErrorResponse::SOME_ENTITY_NOT_FOUND ); …
15 php  mvc  rest  api 

4
別のテストのサブセットである単体テストを書くことに価値はありますか?
少し不自然な例を挙げるために、関数が2つの数値を返し、最初の数値が2番目の数値よりも小さいことをテストしたいとします。 def test_length(): result = my_function() assert len(result) == 2 def test_order() a, b = my_function() assert a < b ここで、test_length失敗したtest_order場合も失敗します。を書くのはベストプラクティスtest_lengthですか?それともスキップするのですか? 編集:この状況では、両方のテストは互いにほとんど独立しており、それぞれを単独で実行することも、逆の順序で実行することもできますが、これは問題ではありません。これらの以前の質問はありません 他の関数を使用する関数の機能をどのようにテストする必要がありますか? 統合テストが既にある場合、ユニットテストが必要ですか? あるテストが別のテストのセットアップであるテストをどのように構成するのですか? 単体テスト間の成功の依存関係を管理する方法 上記の複製です。

2
「ユーティリティ関数」クラスを使いこなす
Javaコードベースでは、次のパターンを見続けています。 /** This is a stateless utility class that groups useful foo-related operations, often with side effects. */ public class FooUtil { public int foo(...) {...} public void bar(...) {...} } /** This class does applied foo-related things. */ class FooSomething { int DoBusinessWithFoo(FooUtil fooUtil, ...) { if (fooUtil.foo(...)) fooUtil.bar(...); …

3
オブジェクト指向言語での非オブジェクト指向プログラミング[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 最近、オブジェクト指向プログラミングを使用して、関数の加算、減算、乗算、除算、およびパワーを備えた計算機を作成するタスクを割り当てられました。このタスクを正常に完了しました。しかし、その後、オブジェクト指向のテクニック/メソッドを使用せずにプログラム全体を再プログラミングしました。 私が気づいたのは、コードの長さが大幅に短縮され、非常に理解しやすいことでした。ここでの私の質問は、オブジェクト指向プログラミングをいつ使用する必要があるかということです。オブジェクト指向言語でオブジェクト指向のないプログラムを作成しても大丈夫ですか?これで私を親切に助けてください。 PS:ここでは、手続き型プログラミングよりもオブジェクト指向プログラミングのメリットを教えてほしいとは思っていません。

4
テスト駆動開発を行う方法
アプリケーション開発の経験はたった2年です。この2年間で、開発に対する私のアプローチは次のようになりました。 要件を分析する Identity Coreコンポーネント/オブジェクト、必要な機能、動作、プロセス、およびそれらの制約 クラスの作成、クラス間の関係、オブジェクトの動作と状態の制約 機能を作成し、要件に従って動作上の制約を使用して処理する アプリケーションを手動でテストする 要件の変更によりコンポーネント/機能が変更された場合、アプリケーションを手動でテストします 最近、TDDを紹介し、開発されたコードが存在する強力な理由があり、展開後の問題の多くが軽減されるため、これは開発を行うのに非常に良い方法であると感じました。 しかし、私の問題は、最初にテストを作成できないことです。むしろ、実際にコンポーネントを作成する前に、コンポーネントを特定し、テストを作成しています。私の質問は 私はそれをやっていますか?そうでない場合は、正確に変更する必要があります 書いたテストで十分かどうかを確認する方法はありますか? 1 + 1 = 2に相当する可能性のある非常に単純な機能のテストを記述するのは良い習慣ですか、それとも単なるやりすぎですか? 機能を変更し、それに応じて要件が変更されたかどうかをテストするのは良いですか?

9
高レベルの管理者に関数型プログラミングを考慮するよう説得するための良い事実上の議論は何でしょうか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 関数型プログラミングが良いアイデアである理由については、「理論的な」議論がたくさんあります(それが多すぎて未解決の問題として残っているので、正しくそうです)。 ただし、それらのほとんどは、理論(「エレガンス」など)から作成された議論、または開発者向けの議論です。 問題は、大企業の上級管理職にアイデアを提示することを目的とする場合、それらのほとんどはまったく役に立たないことです。一部の人は開発者でさえなく、全員が主にビジネス議論を重視します:コスト、人的資本管理、製品の配送、クライアントサービス、収益。事実に裏付けられない理論的ポイントに関する定量的事実も同様です。 Java / C ++ /(Perl | Python)などの手続き型/ OOPの典型的な組み合わせに対して、関数型プログラミングの概念(特定の言語ではない)の採用を検討する限り、これらのビジネス上の懸念に対処するために説得力のある議論はありますか。 できれば、定量的かつ/または研究や事例研究に基づいた議論を探しています。たとえば、「このリファレンスによると、Lisp / F#のマルチスレッドシステムのバグ率はJavaの10%です」または「トップ3の利益として機能プログラミングという名の望ましいテクノロジーの選好を表明する卒業生の80%」。 Grahamがスターアップの関数型プログラミングのユースケースを提示したことは知っていますが、大規模な既存の企業に有効であると仮定して、彼の議論の一部を受け入れます。 psPerlで関数型プログラミングに近いもの、おそらくPython、そして(おそらく)Java 8またはC ++ 14を実行できることを完全に認識しています。しかし、それはPerl、C ++またはJavaを使用する組織が関数型これらの言語でもOOP /手続き的アプローチ この言語の目的のために、「大」は、すべての開発者が使用/実行できるものを決定する専用の開発エンジニアリング/ツールグループを持つのに十分な大きさとして定義されます。そして、ローエンドで少なくとも数百人の開発者。

2
一時的なものへの言及をベースに、この範囲を誰が責めるのでしょうか?
次のコードは一見無害に見えます。ユーザーはこの関数bar()を使用して、いくつかのライブラリ機能と対話します。(これはbar()、一時的でない値または同様のものへの参照を返したので、長い間働いていたかもしれません。)しかし、今では単にの新しいインスタンスを返していますB。B繰り返しa()処理可能な型のオブジェクトへの参照を返す関数がありますA。Bによって返される一時オブジェクトはbar()、反復が開始される前に破棄されるため、ユーザーはこのオブジェクトを照会すると、セグメンテーション違反につながります。 誰(ライブラリーまたはユーザー)がこれを責めるかは私は優柔不断です。すべてのライブラリが提供するクラスは私にはきれいに見えますが、確かに他の多くのコードとは何も違いはありません(メンバーへの参照を返す、スタックインスタンスを返すなど)。ユーザーは何も悪いことをしていないように見えます。彼は、オブジェクトの存続期間に関して何もせずにオブジェクトを繰り返し処理しているだけです。 (関連する質問は次のとおりです:ループヘッダー内の複数のチェーンされた呼び出しによって取得されるものに対してコードが「範囲ベースの反復」ではないという一般的なルールを確立する必要があります。右辺値?) #include <algorithm> #include <iostream> // "Library code" struct A { A(): v{0,1,2} { std::cout << "A()" << std::endl; } ~A() { std::cout << "~A()" << std::endl; } int * begin() { return &v[0]; } int * end() { return &v[3]; } int v[3]; }; struct B { …
15 c++11 

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