ソフトウェア工学

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

6
新しいプロジェクトのマスターへのコミットをいつ停止する必要がありますか?
新しいプロジェクトを開始するときはいつでも、「安定した」何かを得るまでマスターに直接コミットすることから始めて、ブランチで作業を開始するのが通常理にかなっています。 少なくとも、これは私が通常行う方法です。2番目のコミットからすぐにブランチを開始する方法はありますか?このようにするのは理にかなっていますか?明らかに、「初期コミット」は常にマスターになりますが、その後、いつ新しい機能のブランチを作成するのが適切なタイミングであるかがわかりますか?

6
Javaがパッケージアクセスをデフォルトにしたのはなぜですか?
私がこの質問をしているのは、彼らが非常に正当な理由でそれをし、ほとんどの人がそれを適切に使用していないと信じているからです。しかし、私の理論が本当なら、なぜプライベートアクセス修飾子が含まれているのか分かりません...? デフォルトのアクセスが適切に使用されると、カプセル化を維持しながら、テスト容易性が向上すると考えています。また、プライベートアクセス修飾子を冗長にします。 デフォルトのアクセス修飾子は、他の世界から隠される必要があるメソッドに固有のパッケージを使用することで同じ効果を提供するために使用できます。テストフォルダー内のパッケージは、ソースフォルダーで宣言されているすべてのデフォルトメソッドにアクセスできます。 これが、Javaがパッケージアクセスを「デフォルト」として使用する理由だと思います。しかし、なぜプライベートアクセスも含まれているのか分かりません、有効なユースケースがあると確信しています...

5
オブジェクト指向プログラムを機能的なものにリファクタリングする方法は?
機能的なスタイルでプログラムを作成する方法に関するリソースを見つけるのが困難です。オンラインで議論された最も高度なトピックは、構造型付けを使用してクラス階層を削減することでした。ほとんどはmap / fold / reduce / etcを使用して命令型ループを置き換える方法を扱っています。 私が本当に見つけたいのは、自明ではないプログラムのOOP実装、その制限、およびそれを機能的なスタイルにリファクタリングする方法についての詳細な議論です。アルゴリズムやデータ構造だけでなく、いくつかの異なる役割と側面を持つもの-ビデオゲームかもしれません。ちなみに、私はTomas PetricekによるReal-World Functional Programmingを読みましたが、もっと欲しいと思っています。

4
webappで同じデータを編集している複数のユーザーをどのように処理しますか?
私が取り組んでいるプロジェクトは、複数のユーザー間でタスクリストを管理するWebアプリケーションを作成することです。これは、承認されたユーザーによってタスクアイテムが配布されるマスタータスクリストです。各ユーザーは、割り当てられたタスクにログインして表示するための独自のアカウントを持っています。複数のユーザーが単一のタスクを共有することは可能です。 次の状況を処理する方法の全体的な概念にさらに取り組んでいるので、プロジェクトの詳細をここから省こうとしていますが、それが役立つ場合は、RequestFactoryを実装したJava、EclipseLink、GWTを使用しています。データベースはPostgreSQLです。 したがって、私が調整しようとしている概念的な問題は次のとおりです。 複数のユーザーに共通の単一のタスクが何らかの方法で変更された場合(タスクの完了、削除など)、このタスクを持つすべてのユーザーのタスクリストが更新されます。この機能の実装を支援する設計パターンはありますか? 私が調べたパターンには、ObserverとMediatorがあります。これらについて検討すべき他のパターンはありますか? 2人のユーザーが同じタスクを同時に変更しているとします。 まず、そのような状況が発生するのを許可する必要がありますか、それとも誰かが変更を行うまでロックする必要がありますか? 次に、ロックをかけない場合、どの変更を受け入れるかを調整するにはどうすればよいですか?これには、ユーザー1がデータを送信でき、ユーザー2が更新されたデータを受信する前に、先に進んで変更を送信した可能性があるため、1の状況が含まれます。 このWebアプリの複数のインスタンス間でデータを適切に同期する方法について提供できるガイドポイント、アドバイス、またはヒントを本当に探しています。とても感謝しています!

4
私のコードで「マネージャー」を避ける方法
この質問は、Software Engineering Stack Exchangeで回答できるため、Code Review Stack Exchangeから移行されました。 6年前に移行され ました。 現在、C ++向けにEntity Systemを再設計しています。多くのマネージャーがいます。私の設計では、ライブラリを結合するためにこれらのクラスがあります。「マネージャー」クラスに関しては、多くの悪いことを聞いたことがあります。おそらく、クラスに適切な名前を付けていません。しかし、他にどのような名前を付けるべきかはわかりません。 私のライブラリーのほとんどのマネージャーは、これらのクラスで構成されています(ただし、多少異なります)。 コンテナ-マネージャ内のオブジェクトのコンテナ 属性-マネージャー内のオブジェクトの属性 ライブラリの新しいデザインには、ライブラリを結び付けるために、これらの特定のクラスがあります。 ComponentManager-エンティティシステムのコンポーネントを管理します ComponentContainer コンポーネント属性 シーン*-シーンへの参照(以下を参照) SystemManager-エンティティシステム内のシステムを管理します SystemContainer シーン*-シーンへの参照(以下を参照) EntityManager-エンティティシステム内のエンティティを管理します EntityPool-エンティティのプール EntityAttributes-エンティティの属性(これはComponentContainerおよびSystemクラスのみがアクセス可能です) シーン*-シーンへの参照(以下を参照) シーン-すべてのマネージャーを結び付ける ComponentManager SystemManager EntityManager Sceneクラス自体にすべてのコンテナ/プールを配置することを考えていました。 すなわち これの代わりに: Scene scene; // create a Scene // NOTE: // I technically could wrap this line in …

9
最小限の開発アプローチに従うプログラミング言語はありますか?
言語が商用ソフトウェアと同じと見なされる場合、新しいリリースを正当化するために常に新しい機能を追加する必要が常にあることがわかります。 バージョン1.0が最終バージョンである言語は存在しますか、または存在しますか?もちろん、バグ修正はこれを免除されますが、機能セットは常に同じままですか? この方法では、言語のすべての機能がうまく適合し、後方互換性のために廃止された機能がまだ残っているという事実の後にボルトで固定されているようには見えません。 いくつかの学術言語はこのようなものだと思いますか?しかし、この考えに従って商業的に成功した言語はありますか?付属のライブラリも新しい機能を無料で入手できますが、言語は常に一定です。 私が挙げることができる一例は、私がよく使用するお気に入りの言語C#の1つです。リリースごとにますます多くの機能が追加されています。これらを活用するには、些細な概念を取り上げてそれらを組み合わせてより複雑な問題を簡単に解決するのではなく、実際のタスクを手元に落とし、これらの学習にかなりの時間を費やさなければなりません。 だから私は、すべてが一貫し、理にかなっており、可能な限り直交するミニマリストのアプローチを探していると思います。


6
SSDの出現は、データベースの最適化に影響を与えますか?
今日、SQL Serverの最適化に関する本を閲覧していましたが、一定量のアイデアがストレージの線形モデルに基づいているように思われました。SSDのストレージモデルはまったく異なるため、データベースの調整や最適化についての考え方に関して、何らかの形でゲームを変えますか?

5
Lispコミュニティが関数の最後にすべての括弧を蓄積することを好むのはなぜですか?
Lispコミュニティが関数の最後にすべての括弧を蓄積することを好む理由: (defn defer-expensive [cheap expensive] (if-let [good-enough (force cheap)] good-enough (force expensive))) CやJavaのような規則を採用しないのはなぜですか? わかりました、Lispはそれらの言語よりはるかに古いですが、私は現代のLispersについて話しています。 (defn defer-expensive [cheap expensive] (if-let [good-enough (force cheap)] good-enough (force expensive) ) ) 注:コードスニペットは、「The Joy of Clojure」という本からのものです。

8
良いインタビュープログラミングプロジェクト[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 潜在的な従業員にプログラミング能力を評価するために提供できる小規模なプログラミングプロジェクトを探しています。これらは、大学を出たばかりのプログラマーになります。私は、誰かが数時間かかり、彼らがインタビュー後に回答をメールで返すプロジェクトを探しています。 1つの例は、このテキストの段落を取り、アルファベット順の一意の単語のリストを返すことです。各単語の後に、その単語が何回出現したか、その単語がどのセンテンスで出現したかを教えてください。 誰にも良い提案がありますか?
26 interview 

15
プログラマーは時々複雑なコードを意図的にオーバーしますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または詳細な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 スタックオーバーフローでは、多くの場合、人々(特にプログラマー)は、元の問題よりもはるかに複雑なソリューションの問題の解決を過度に複雑にする傾向がありますか?私は決して専門家ではありませんが、最も簡単な解決策を試してみます(そして明らかにこれはどこでも機能しません)が、人々が思われる仕事で簡単な解決策を提案することでかなりの成功を収めましたもっと複雑なソリューションを見落とすことはありませんか? これはプログラマーにとっては普通のことなのでしょうか.....または、私は正しい見方で考えているだけではありませんか。

11
時間の見積もりがうまくいかない場合はどうすればよいですか?
ケースの推定時間が3日間だとしましょう。2日目には、ケースが増えており、時間の推定が行われたときにカウントされなかった新しいシナリオがポップアップしていることに気付きます。新しい調査結果は、2日間余分にかかります(合計5日間)。これは、開発者として遅かれ早かれ直面する典型的な問題です。 プロジェクトリーダーに新しい納期を通知する場合、どの戦略を使用できますか? 多くの場合、なぜ質問がありますか?新しい配達時間をどのように動機付けますか? 実際、多くのプロジェクトでは、SDLCの分析と設計にあまり時間をかけていません。 編集: 非常に複雑なプロジェクトでは、分析と設計にどれだけ合理的な時間を費やしても、ビジネスルールが複雑すぎるため、常に驚きがあります。しかし、そのような場合、プロジェクトリーダーは複雑さを認識し、予期しない驚きが生じたときに正しい態度をとる必要があると思います。問題は、複雑さを理解していないプロジェクトリーダーにどのように取り組むかです。

3
構造体とstd :: pairの使用にはどのような違いがありますか?
私は経験が少ないC ++プログラマです。 を使用しSTL mapていくつかのデータを保存および操作したい場合、これらの2つのデータ構造アプローチの間に(パフォーマンスにも)意味のある違いがあるかどうかを知りたいと思います。 Choice 1: map<int, pair<string, bool> > Choice 2: struct Ente { string name; bool flag; } map<int, Ente> 具体的にはstruct、シンプルではなくを使用してオーバーヘッドがありますpairか?

2
Pythonランタイムは実際にどのように機能しますか?
aの概念runtime library、特にPythonの概念を理解するのに問題があります。それで、私はいくつかのhello world pythonプログラムを書き、それを実行するつもりなので、を書きpython ./hello_world.pyます。 Enterボタンを押してから、Pythonコードから生成されたマシンコードがCPUで実行されるまでに、どのような手順が発生しますか?そして、これはPythonランタイムシステムおよび/またはライブラリとどのように関係していますか?
26 python  runtime 

3
使用されているすべてのNuGetパッケージのライセンス情報を取得する
家を整理するために、マニュアルでプロジェクトの依存関係のライセンスを手動で追加するのではなく、自動的にアセンブルします。 CSPROJファイルのセットをプログラムで走査し、参照されたパッケージのライセンス情報をリンクまたは文字列として抽出する簡単な方法を知っている人はいますか?

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