ソフトウェア工学

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

3
「クラスパス例外を伴うGPL」とは実際にはどういう意味ですか?
Oracleは、クラスパス例外を使用して、GPLの下でJava関連のオープンソースコードをすべてライセンス供与しているようです。私が理解していることから、これにより、これらのライブラリを独自のコードと組み合わせて、GPLでカバーする必要のない製品にすることができるようです。 これはどのように作動しますか? これらのクラスを使用できる方法と使用できない方法の例は何ですか? LGPLとは対照的に、この新しいライセンスが使用されたのはなぜですか。LGPLはほとんど同じことを可能にしているように見えますが、よりよく確立され、理解されていますか? LGPLとの違いは何ですか?
70 java  licensing  gpl  lgpl 

10
悪いコードを書くことを余儀なくされています。どうすれば顔を保存できますか?[閉まっている]
私は若い開発者ですが、私の仕事は本当にひどいPHPコードで作業することを余儀なくされます(あなたが見た最悪のPHPコードについて考えてください;そしてコードを2倍悪いと考えてください)。私は通常、バグを修正し、新しい機能を追加するためにコードベースと戦います。時々、私は物事をできるだけ早く動作させるように命じられます。 この製品は以前はオープンソースでしたが、将来オープンソースになる可能性があると心配しています。誰か(特に潜在的な雇用者)が私のチェンジセットの次に私の名前を見つけることができたら、私は恥ずかしいでしょう。良い名前を守るために何ができますか? これが関連するかどうかはわかりませんが、上司も同僚もコードが悪いことを認めたくないと付け加えますが、そのために彼らを責めることはできません-彼らの多くはこれが彼らです最初の仕事。

8
列挙型をDBに保存するのはなぜですか?
このように、DBに列挙型を保存する方法についてアドバイスを求める質問を数多く目にしました。しかし、なぜそうするのだろうか。したがってPerson、genderフィールドとGender列挙型を持つエンティティがあるとしましょう。次に、個人テーブルには列の性別があります。 正当性を強制する明白な理由に加えてgender、アプリケーションに既にあるものをマッピングするために余分なテーブルを作成する理由がわかりません。そして、私はその複製を持つことが本当に好きではありません。
69 database  enum 


10
提案された設計は通常、同僚の設計よりも悪いです-どうすれば良くなりますか?[閉まっている]
私は数年プログラミングしており、問題の修正や中小規模のスクリプトの作成に関しては一般的には優れていますが、オブジェクト指向の方法で大規模なプログラムを設計することは一般的に得意ではありません。いくつかの質問 最近、私と同じ年数の経験を持つ同僚と私は問題に取り組んでいた。私は彼よりも長い間問題に取り組んでいましたが、彼はより良い解決策を思いついたので、最終的には彼のデザインを使用します。これは本当に私に影響を与えました。私は彼のデザインが優れていると認めていますが、彼と同じくらい良いデザインを思いつきました。私も仕事を辞めることを考えています。理由は定かではありませんが、突然、プレッシャーを感じています。たとえば、後輩が私についてどう思うかなどです。普通ですか?それとも、これについて少し考えすぎていますか? 私の仕事は、Pythonでのプログラミングです。ソースコードを読み込もうとしていますが、デザインスキルをどのように向上できると思いますか?勉強すべき良い本やソフトウェアはありますか? 教えてください あなたの助けに本当に感謝します。

4
どのアルゴリズム/データ構造を「認識」して名前で知る必要がありますか?[閉まっている]
私はかなり経験豊富なプログラマーだと思っています。私はもう5年以上プログラミングを続けています。しかし、私の弱点は用語です。私は独学なので、プログラミングの方法は知っていますが、コンピューターサイエンスのより正式な側面のいくつかは知りません。それで、名前で認識して知ることができる実用的なアルゴリズム/データ構造は何ですか? アルゴリズムの実装に関する本の推奨を求めているのではないことに注意してください。私はそれらを実装することを気にせず、アルゴリズム/データ構造が問題の良い解決策になるときを認識できるようにしたいだけです。「認識」するアルゴリズム/データ構造のリストをもっと求めています。たとえば、私はこのような問題の解決策を知っています: 0〜999というラベルの付いた一連のロッカーを管理します。人々はロッカーを借りに来て、ロッカーキーを返すために戻ってきます。どのロッカーが無料で、どのロッカーが使用されているかを管理するソフトウェアをどのように構築しますか? ソリューションは、キューまたはスタックになります。 私が探しているのは、「どのような状況でBツリーを使用すべきか-ここでどの検索アルゴリズムを使用すべきか」などです。そして、より複雑な(しかし一般的に使用される)データ構造/アルゴリズムが機能します。 ウィキペディアのデータ構造とアルゴリズムのリストを見てみましたが、それはちょっとやり過ぎだと思います。それで、私が認識すべき重要なものは何かをもっと探していますか?

12
「すべてが地図です」、私はこれを正しくしていますか?
Stuart Sierraの講演「Thinking In Data」を見て、私が作っているこのゲームのデザイン原則として、そのアイデアの1つを取り上げました。違いは、彼はClojureで働いており、私はJavaScriptで働いていることです。その点で私たちの言語にはいくつかの大きな違いがあります Clojureは慣用的に機能するプログラミングです ほとんどの状態は不変です 「すべては地図です」というスライドからアイデアを取りました(11分、6秒から29分以上)。彼が言うことは次のとおりです。 2〜3個の引数をとる関数を見たときはいつでも、それをマップに変換してマップを渡すだけのケースを作成できます。これには多くの利点があります。 引数の順序を心配する必要はありません 追加情報を心配する必要はありません。余分なキーがある場合、それは私たちの関心事ではありません。ただ流れるだけで、干渉しません。 スキーマを定義する必要はありません オブジェクトを渡すのとは対照的に、データの非表示はありません。しかし、彼はデータの隠蔽が問題を引き起こす可能性があり、過大評価されていると主張しています。 性能 実装のしやすさ ネットワークまたはプロセスを介して通信するとすぐに、とにかくデータ表現について双方に同意する必要があります。これは、データだけを扱う場合はスキップできる余分な作業です。 私の質問に最も関連しています。これは、「機能を構成可能にする」で29分です。概念を説明するために彼が使用するコードサンプルは次のとおりです。 ;; Bad (defn complex-process [] (let [a (get-component @global-state) b (subprocess-one a) c (subprocess-two a b) d (subprocess-three a b c)] (reset! global-state d))) ;; Good (defn complex-process [state] (-> state subprocess-one subprocess-two subprocess-three)) …

18
カスタムソフトウェアについて言及している論文がソースコードを公開しないのはなぜですか?[閉まっている]
研究論文に記載されているソフトウェアのソースコードがリリースされない理由はありますか?研究論文は、実装の詳細よりも何かを達成するという一般的なアイデアに関するものであることを理解していますが、コードをリリースしない理由はわかりません。 たとえば、このペーパーの最後は次のとおりです。 結果 人間の線画システムは、OpenGLを使用してC ++のQtフレームワークを通じて実装され、追加のハードウェア支援なしで2.00 GHz Intelデュアルコアプロセッサワークステーションで実行されます。システムが新しいパスとテクスチャを合成しながら、インタラクティブに線を描画できます。 彼らはソースコードを意図的に閉じたままにしますか?
69 research 


4
インターフェースに「オプションのメソッド」を使用してJavaコレクションが実装されたのはなぜですか?
Javaコレクションフレームワークを拡張する最初の実装中に、オプションとして宣言されたメソッドがコレクションインターフェイスに含まれているのを見て驚いた。実装者は、サポートされていない場合、UnsupportedOperationExceptionsをスローすることが期待されています。これはすぐに、貧弱なAPIデザインの選択肢として私を驚かせました。 Joshua Blochの優れた「Effective Java」の本を多く読んだ後、彼がこれらの決定に責任を負う可能性があることを知った後、本で支持されている原則と一致しなかったようです。コレクションと、「オプション」メソッドでコレクションを拡張するMutableCollectionの2つのインターフェイスを宣言すると、はるかに保守性の高いクライアントコードにつながると思います。 ここに問題の優れた要約があります。 2つのインターフェイスの実装の代わりにオプションのメソッドが選択された理由はありますか?

13
Borland Delphiはどうなりましたか?[閉まっている]
Delphiはもうあまり人気がないという印象があります。しかし、今は仕事で、私たちがまだ使用している古いDelphiプログラムにいくつかの変更を加える必要がありました。私はBorland Developer Studio 2006を使用しましたが、実際に使用した経験はほとんどありませんでしたが、非常に快適で直感的に作業できました。Delphiはまだ広く使用されていますか?私は単にそれを認識していませんか、それとも他の理由がありますか?
69 delphi 

7
動的対静的型付け言語の研究[終了]
静的に型付けされた言語と動的に型付けされた言語の有効性に関する研究はありますか? 特に: プログラマーの生産性の測定 不良率 単体テストが採用されているかどうかの影響も含まれます。 私はどちらの側の長所についても多くの議論を見てきましたが、だれかがそれについて研究したかどうか疑問に思っています。



8
発見してパッチを適用したバグを記録する必要がありますか?
これは一般的な状況だと思います:いくつかのコードをテストし、バグを発見し、それを修正し、バグ修正をリポジトリにコミットします。多くの人がこのプロジェクトに取り組んでいると仮定して、まずバグレポートを作成し、自分に割り当てて、コミットメッセージで参照する必要があります(たとえば、「バグ#XYZを修正します。バグはXおよびYによるものです。 Q and R ")?または、バグレポートをスキップして、「BのときにAを引き起こしたバグを修正しました。バグはXおよびYによるものでした。QおよびRで修正しました」などのメッセージでコミットできます。 より良いプラクティスと考えられるものは何ですか?

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