ソフトウェア工学

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

5
「空の」アブストラクト/クラスはありますか?
もちろんできますが、そのようにデザインするのが合理的かどうか疑問に思っています。 私はブレイクアウトクローンを作成していて、クラスの設計を行っていました。継承する必要はありませんが、C ++で学んだことを適用するために継承を使用したいと思いました。私はクラスの設計について考えていて、次のようなものを思いつきました: GameObject->基本クラス(xオフセットとyオフセットのようなデータメンバー、およびSDL_Surface *のベクターで構成されます* MovableObject:> GameObject->抽象クラス+ GameObjectの派生クラス(1つのメソッドvoid move()= 0;) NonMovableObject:GameObject->空のクラス...コンストラクタやデストラクタ以外のメソッドやデータメンバーはありません(少なくとも今のところは?) その後、TilesetのようなNonMovableObjectからクラスを派生することを計画していました:NonMovableObject。「空の」抽象クラスまたは単に空のクラスが頻繁に使用されるかどうか疑問に思っていました...私はこれを行っている方法で、分類のためにクラスNonMovableObjectを作成していることに気付きました。 私はブレイクアウトクローンを作成するためだけに考えすぎていることを知っていますが、私の焦点はゲームではなく、継承の使用とある種のゲームフレームワークの設計にあります。

5
強力な開発者は世界の重荷を背負う必要がありますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 開発者として、私たちは大衆の問題を解決するために常に努力しています。また、問題を解決する能力をさらに高めるために、新しい方法論、言語、そして場合によっては組織も常に探しています。 私はいつもチームのトップメンバーの1人であるかのように感じます。また、他の人が気にしない方法で自分の仕事を改善する方法を探しているようにも感じます。約6年のサポート技術から少し燃え尽き始めています。私は一生懸命働いており、高い期待を抱いているという事実を非難します。 地球上で最も偉大な開発者の一部は、もはや生活のためのコードを書いてさえいない。多くの場合、そのバーンアウト。「ゲーム」に飽きたと言う人もいますが、問題はもう少し単純なのでしょうか。「世界の重荷を背負う」の一つ。 あなたが強力な開発者であり、これがあなたにとって問題ではないと感じている場合は、私にあなたのアプローチを教えてください。どのようにして最新のテクノロジーを維持し、他の人を助け、問題をすべて解決せずにすばやく正確に解決しますか?

4
リソースを「高価」にするものは何ですか?
私は休止状態を読んでいて、「JDBC接続が複数の要求にわたって開かれているのは高価なリソースであるため、良いことではありません」などの文に出くわしました。 高価なリソースとはどういう意味ですか? 編集:不明なユーザーがコメントとして追加したものを以下に追加しています。 データベース接続の確立にコストがかかる場合は、データベースを閉じて毎回開くのではなく、同じものを(キャッシュではなく)何度も使用しないでください。

3
ハンガリー語表記を使用しないように苦労している
Systems Hungarianに対する賛否両論があります。数年間、私はすべての変数に名前を付けてこのシステムを使用するレガシープロジェクトに取り組んできました。たとえば、(strName、intAge、btnSubmitなどの)変数タイプのプレフィックスを付けます(元のハンガリーアプリのプレフィックスは型ではなく変数)。次のプロジェクトではそれを完全に破棄したいのですが、それに頼らずに同じようなものに一意の名前を付けるのは難しいと思います。 メールアドレスを収集してデータベーステーブルに保存するためのウェブフォームと、アドレスをデータベースに保存する関数を呼び出すボタンがあるとします。 ハンガリースタイルの表記法を使用している場合、ボックスをtxtEmailボタンbtnEmail、テキストボックスに含まれる値と呼ぶことができますstrEmail。次に、関数storeEmail(strEmail)を使用してメールを保存します。ここには明確な規則があります。各変数が何であるかは明らかです。 これらの変数に名前を付けるためのベストプラクティスは何でしょうか ハンガリーのシステムに頼ることなく それらを長くしたり混乱させたりすることなく プロジェクト全体で使用する明確な規則がありますか?
10 naming  hungarian 

2
C#の第一級言語機能としてすでに実装されているGOF設計パターンはどれですか。
(この質問は、「広すぎる」および「本当の質問ではない」ため、Stack Overflowで締めくくられたため、ここでより適切でしょうか?) この質問に触発されました。イベントは、Observerパターンの言語レベルの実装であることを知っています。C#の言語機能として実装されている他のデザインパターンはありますか?他の言語で実装されたデザインパターンはたくさんあるので、この質問はC#固有のままにしておきたいです。 BCLのパターン実装(多くのWCFクラスのデコレーターやのファクトリーメソッドなどWebClient)ではなく、言語レベルのパターンを探しています。 これまでのところ、オブザーバー(event)とイテレーター(foreach多くのBCLクラスおよびインターフェースとの組み合わせ)を認識しています。私が見逃している明らかなものはおそらく他にもあります。

4
依存性注入はどのようにして言語に統合できるでしょうか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 依存性注入をC#のような言語に直接統合する方法を少し考えてきました。私はあなたの意見を聞きたいと思う潜在的な解決策を考え出しました。私は多くの依存関係注入フレームワークを使用していないので、見落としているものがあるかもしれません とにかく、キーワードを使用してプロパティを「注入可能」として宣言できるようにするという考えです。オブジェクトがインスタンス化され、そのプロパティがコンストラクターまたはオブジェクト初期化子を介して初期化されない場合、オブジェクトはいくつかのグローバルサービスからそのプロパティタイプのインスタンスを要求します。 同様に、さまざまなタイプのハンドラーをそのサービスに登録して、注入されたプロパティタイプをインスタンス化できるようにします。 この種のアーキテクチャーIMOを使用する利点は、かなり柔軟で使いやすいことです。欠点は、インジェクションを持つクラスを開始するたびにシングルトンへのコールアウトを実行するオーバーヘッドがある可能性があることです。 繰り返しになりますが、これは、高性能ソリューションで頻繁にインスタンス化されるクラスの問題にすぎないため、それほど問題にはなりません。おそらく、それらのインスタンスで何らかのファクトリを使用できます。 考え、問題、質問、より良いアイデア? コード public class SomeClass { public SomeClass() { //implicit behavior if Animal is not set in constructor or initializer this.Animal = GlobalInjector.Get(this,typeof(Mammal)) } public injectable Mammal Animal { get; set; } } GlobalInjector.Register(typeof(Mammal), () => return new Mammal(someParameter));

9
Software Worldの外部の人々にデザインパターンをどのように説明すべきですか
姪にデザインのパターンを説明したいのですが、いつも苦労しています。それは主に、デザインパターンを明確に理解していないためです。MVC、シングルトン、ファクトリー、リポジトリなどのパターンを、10歳の子供でも理解できるような簡単な言葉で説明するにはどうすればよいですか。 パターンの理解を助けるのに役立つ例を探しています。おもちゃ、映画、音楽などの例

3
スマートフォンアプリの開発者が実際にどれだけ稼いでいるかについての確固たる証拠はありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 5年前休業。 スマートフォンアプリの作成を検討しています。始める前に、それが価値があるかどうかを確認したいと思います。残念ながら、そのようなアプリの開発者が実際にアプリケーションの購入またはアプリ内広告を通じてどれだけ稼いでいるかについての確固たる証拠を見つけるのは非常に難しいと思います。 私がこれまでに見つけた最高の研究によると、平均的なiPhoneアプリの年間収益は682ドルです。繰り返しになりますが、一部のアプリは機能しない可能性があり、その収益もこの統計にカウントされます。したがって、私はアプリとその収益のいくつかの具体的な例を求めています。

2
eLance(および同様のサイト)での体験[終了]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 ゲームの開発中に請求書を支払う(最終的には請求書を支払う)ために、eLance.com(または他の同様のサイト)を介したフリーランスを検討しています。 優雅さを通してどのように働いていますか? 推奨事項や戦略はありますか?どんなフィードバックでもありがたいです。

4
匿名のまま、FOSSからどのようにお金を稼ぐのですか?
次のようにしましょう: あなたは、他の人々が有用であると思うFOSSプロジェクトを作成しました。 これは完全に合法で無害なソフトウェアプロジェクトです。軍需品、p2p音楽、または捜査令状や訴訟につながる可能性のあるものとして、暗号とは何の関係もありません。 あなたの関与が匿名または偽名のままでありたい。 人々が喜んでいるなら、あなたはあなたの努力のためにいくらかのお金を受け取りたいと思います。 それは可能ですか、それが可能な場合、どうすれば実行できますか? 匿名性について話すとき、私は程度を定義する必要があることに気づきます。私はウィキリークスが匿名性に値する20層のプロキシのスタイルについて話しているのではありません。3文字のエージェンシーが人を簡単に識別できると思います。求められているのは、金融仲介業者に依頼するだけであなたの詳細を漏らすことを期待できない商業的競争相手や無作為の人々からのシールドです。 なぜ匿名のままにしたいのですか?私はいくつかの正当な理由を考えることができます。多分あなたはステルスモードのスタートアップを操作していて、あなたが使用しているテクノロジーについて競合他社に手がかりを与えたくないでしょう。多分それはあなたの毎日の仕事とは何の関係もないプロジェクトであり、そこで開発されていませんが、あなたが働いている会社はあなたが行うすべてのコーディングが彼らによって所有されていると述べている不公平な(そしておそらく強制できない)ポリシーを持っています 多分あなたはあなたのプライバシーを大切にしています。 それは価値があるもののために、あなたは寄付に対してあなたの国で関連する税金を支払うつもりです。
10 foss 

8
無料ビールのように無料
数年前(より正確には1998年)、ソフトウェアに適用されたときに混乱している英語圏の人々がフリーという用語を作り始め、フリーソフトウェア財団の一部のメンバーが新しい用語を作成しました:オープンソース(http://www.gnu。 org / philosophy / free-software-for-freedom.html) 大きな懸念は、人々が言論の自由のように自由で、無料のビールのように自由であると誤解していることでした(wikipedia:http : //en.wikipedia.org/wiki/Free_and_open_source_softwareを参照)。 ここでの無料は、独自の「著作権」(および特許取得済み)ソフトウェアに反する方法で、ソフトウェアを使用および共有する自由に関連しています。それは1986年にリチャードストールマンによって最初に導入されました。コアは一連の自由です: 自由0:あらゆる目的でプログラムを実行する自由。 自由1:プログラムがどのように機能するかを研究し、それを変更して、希望どおりに実行する自由。 自由2:あなたがあなたの隣人を助けることができるようにコピーを再配布する自由。 自由3:プログラムを改善し、改善(および一般に変更されたバージョン)を一般に公開して、コミュニティ全体に利益をもたらす自由。 まあ、私たちは皆それについて知っています(少なくともこれまでこの議論を続けている人たち)。 私の意見では、オープンソースという用語は私たちを明確にしました。しかし、それはすでにFreedom 1によって保証されていました。 他の言語(スペイン語やポルトガル語など)では、libreまたはlivreと無料で言うことができます。そして、無料のビールのように、無料のように無料の他の意味。したがって、他の人にとっては、混乱はありませんでした(実際、それについての英語の記事を読んでいるときだけです)。 自由2は、コピーを自由に再配布する私の権利を保証します。私は私の友人や学生に配るすべてのコピーに対して所有者にロイヤリティを支払う必要がないので理解します。そしてもちろん、それに同意します。これは、最終的には、私が無料(無償)のコピーを提供できること、またはコピー(サポート、メディアなど)に課金できることを意味します。 さて、何かが無料で(無償で)提供できる場合、それは無料です(無償)。誰か、または一部の企業が売りたいと思っていても、無料(無償)で入手する方法(サイト、ダウンロード、友達など)はまだあります。 したがって、私の非英語の視点では、ここに3つの異なるものがあります。間違いなく最も重要なのは、ソフトウェアの無料(自由、自由、自由、自由)の品質です。もう1つはオープンソースです(内部のコードを確認できます)。最後のものはIS別のGREAT、そこにされる品質、EXIST無料(無償で、非充電可能)ソフトウェアを。 自由(無償)であっても、強制的に無料(無償)になるわけではありません。あなたは売る人、支払う人、そして無料で受け取る/送る人を持つことができます。それでも、それは品質です。 私が理解していないのは、何年も経ってからも、FSFの人々が無料(無償)ソフトウェアもあると言うのにまだ慎重である理由です。はい、無料ビールのように無料です。それが品質ならなぜそれを隠すのですか?混乱を防ぐためだけですか?さて、私はあなたにニュースを教えさせてください:混乱は最初からすでに行われました。それが始まったとき、私は生きていて主題に興味を持っていました、そして私はこの無料が無料であるか制限なしであるということについて多くの議論を覚えています。 多くのコンサルティングの後、弁護士は法廷で使用できる最初の「ライセンス」の作成を支援し、「コピーレフト」という用語を導入し、無料は価格ではないことを「明確」にしました。 当時は、目新しさのために、私はこの無料の半分を強調することに同意します。しかし今、それは終わりです。私たちにも無料のように無料があることを人々に話す時ではありませんか。 3つの品質は2つよりも優れています:livre / gratis / open。 では、フリーソフトウェアはただのフリーになり得ると人々に伝えてみませんか? 編集: より客観的に:1-フリー(自由)ソフトウェアは必ずしもフリー(無償)ですか?2-は無料(無料)のソフトウェアです。 2番目は高速タイパーを保持するためだけにあるため、最初の1つは重要な質問です(誰もが答えを知っています)。 ディスカッションから出された別の質問:無料(無償)は品質ですか?(質問の紹介で当たり前のように仮定した)

1
接着剤や管理のクラスが多すぎるのはいつですか?
デザイン内の他のクラスを管理する集中型クラスを作成する傾向があります。それ自体はすべて保存されませんが、ほとんどのデータ要求は最初に「マネージャー」に送信されます。この質問への答えを見ていると、「神のオブジェクト」という言葉に気づきました。ウィキペディアは、それを当然のことながらアンチパターンとしてリストしています。 データとメッセージを場所から場所へと渡す正当な接着剤クラスまたはモジュールと、やり過ぎているクラスとの間の境界はどこにありますか?

5
「依存性サイクルなし」ルール(NDepend)はどの程度厳密に遵守していますか
背景:チームリーダーとして、私はNDependを週に1回程度使用して、コードの品質をチェックしています。特に、テストカバレッジ、コード行、循環的複雑度メトリックスは私にとって非常に貴重です。しかし、それが平準化と依存関係のサイクルになると、私は少し心配です... Patrick Smacchiaが、平準化の目標を説明する素晴らしいブログ投稿を公​​開しています。 明確にするために:「依存サイクル」の下で、2つの名前空間間の循環参照を理解しています。 現在、組み込み機器用のWindows CEベースのGUIフレームワークに取り組んでいます。Androidグラフィックスプラットフォームについて考えてみてください。ただし、非常にローエンドの機器向けです。フレームワークは、約50.000行のコード(テストを除く)の単一のアセンブリです。フレームワークは次の名前空間に分割されます。 コアナビゲーションとメニューサブシステム 画面サブシステム(プレゼンター/ビュー/ ...) コントロール/ウィジェットレイヤー 今日、私はコードを適切なレベルにするために半日を費やしました[Resharperのおかげで一般に問題はありません]。 だから私の質問:「依存サイクルなし」ルールをどの程度厳密に守っていますか?平準化は本当に重要ですか?


1
フリーランスプロジェクトで自分のコードを使用する
私はフリーランスのビジネスに2年以上携わっています。他の人のためにプロジェクトをしている間、私はプロジェクトで実装する一般的なタスクのコンパイルを構築し、それらをコードに入れました。これは、同じことを何十回も書き直さなくても再利用できるいくつかの関数を備えたライブラリのようなものです。Accessデータベースへのアクセス、FTPからの情報のダウンロードなどについて話しています。 これは法的な観点から受け入れられますか?古いコードを再利用し、それを最初から書き直した場合の違いは何ですか(もう一度自分の頭脳を使用するため、まったく同じロジックです)? もちろん、私はそれに著作権を保有せず、これらのクラスのソースコードをクライアントに提供します。
10 legal  code-reuse 

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