ソフトウェア工学

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

12
このコーディング方法を説明するアンチパターンはありますか?[閉まっている]
プログラマーが意味をなさない領域に物事をまとめる傾向があるコードベースがあります。たとえば、エラーログがある場合、次の方法でログインできます。 ErrorLog.Log(ex, "friendly message"); 彼は、まったく同じタスクを達成するために他のさまざまな手段を追加しました。例えば SomeClass.Log(ex, "friendly message"); 単に向きを変えて最初のメソッドを呼び出します。これにより、利点が追加されずに複雑さが増します。これを説明するアンチパターンはありますか?


4
Django Webサイトのフロントエンド(UI)を開発する方法
私はDjangoとWeb開発の初心者を学んでいます。この質問があまりにも馬鹿だと思うなら、すみません。 そのため、Djangoを使用して、Google App EngineでホストするFacebookアプリケーションを作成しています。このプロジェクトは、任意のWebサイトのRSS / Atomフィードの読み取りに焦点を当てています(これですべてです)。 RSS / Atomファイルを処理するのに十分だと確信していますが、フロントエンド(ユーザーインターフェイス)の部分-「設計部分」について心配しています。HTML / CSS / JavaScriptを知りません(単純なHTMLを扱うことはできますが、それは設計上の問題にはつながりません)。 最初に、dreamweaverまたは同等のソフトウェアのようなツールを使用してUIを設計することを考えましたが、実際にdjangoを学び始めたとき、それは「不可能」なことのようです。 そう、 サイトのUI部分をどのように設計すればよいですか?dreamweaverなどのツールを使用できませんか? NOの場合、JavaScript / CSSを知らない私のような人にとって最善の方法は何ですか 「はい」の場合、dreamweaverに代わる最良のオープンソースの選択肢は何ですか? Google App Engineはこれらすべてを処理できますか? Djangoを扱う人々がこれらのテンプレートページを編集する方法。Djangoは、企業内の異なる部門が個別に処理できるように、論理(ビュー)部分と設計(テンプレート)部分を分離することに言及しています。しかし、DjangoのHTMLページがHTML(設計)に関係のない「タグ」で満たされているという事実を考慮して、UIの人々はそれをどのように処理しますか?


6
関数型プログラミングはオブジェクト指向のスーパーセットですか?
私がより機能的なプログラミングをすればするほど、タマネギのレイヤーが以前のレイヤーをすべて包含しているように見える、抽象化のレイヤーが追加されたように感じます。 私はこれが本当かどうかわからないので、私が長年取り組んできたOOP原則から外れると、誰もそれらがどれほど正確に機能するかを説明できます:カプセル化、抽象化、継承、多態性 私たちは皆、タプルを介してカプセル化されていると言うことができると思いますか、タプルは技術的に「関数型プログラミング」の事実としてカウントされますか、それとも単に言語のユーティリティですか? Haskellが「インターフェース」の要件を満たすことができることは知っていますが、メソッドが機能するかどうかは確かではありませんか?ファンクターが数学的な基礎を持っているという事実は、おそらく機能的な期待に基づいて構築されていると思いますか? 機能的にOOPの4つの原則を満たしている、または満たしていないと思う方法を詳しく説明してください。 編集:私は機能的パラダイムとオブジェクト指向パラダイムの違いをうまく理解しており、最近では両方を実行できるマルチパラダイム言語がたくさんあることを認識しています。私は本当に、完全なfp(haskellのような純粋主義者と考えてください)がリストされた4つのことのどれを行うことができるか、またはなぜそれらのいずれもできないのかの定義を探しています。すなわち、「カプセル化はクロージャを使用して行うことができます」(またはこの信念に誤りがある場合は、理由を述べてください)。

6
バージョン履歴は本当に神聖なものですか、それともリベースする方が良いのでしょうか?
私はMercurialのマントラ1に常に同意していましたが、Mercurialがリベース拡張機能にバンドルされ、gitで一般的なプラクティスであるため、本当に「悪いプラクティス」と見なされるかどうかは疑問です。使用を避けるのに十分なほど悪い。いずれにせよ、プッシュ後のリベースが危険であることは承知しています。 OTOH、私は5つのコミットを1つにパッケージ化して見栄えを良くすることを目指しています(特に本番ブランチで)が、個人的にはいくつかの機能の一部のコミットを見ることができる方が良いと思いますたとえ気の利いたものでなくても、実験は行われますが、「Xでやってみましたが、結局Yほど最適ではありません。ZをベースとしてZを行う」のようなものを見ると、勉強している人にとっては価値がありますコードベースを作成し、開発者の一連の思考に従ってください。 私の非常に意見のある(馬鹿げた、内臓、偏った)視点は、プログラマーがミスを隠すためにリベースを好むということです... ですから、私の質問は次のとおりです。実際にそのような「有機コミット」(つまり、改ざんされていない履歴)を実際に使用する価値があると思いましたか?どちらを選んでも、なぜそれがあなたのために働くのですか?(履歴を保持するために他のチームメンバーを使用するか、代わりに履歴を変更します) 1あたりGoogleのDVCS分析は、のMercurialに「歴史は聖なるです」。
26 git  mercurial  dvcs 


5
winformでプロジェクトを適切に構成する方法は?
少し前にwinformアプリケーションの作成を開始しましたが、その時点ではそれは小さく、プロジェクトの構成方法については何も考えていませんでした。 それ以来、必要に応じて追加の機能を追加し、プロジェクトフォルダーはどんどん大きくなっています。今では、何らかの方法でプロジェクトを構成する時が来たと思いますが、適切な方法はわからないので、質問はほとんどありません。 プロジェクトフォルダを適切に再構築する方法は? 現時点では、次のようなことを考えています。 フォーム用のフォルダーを作成する ユーティリティクラスのフォルダーを作成する データのみを含むクラスのフォルダーを作成する クラスを追加するときの命名規則は何ですか? クラスの名前を見るだけで機能を識別できるように、クラスの名前も変更する必要がありますか?たとえば、すべてのフォームクラスの名前を変更して、名前がFormで終わるようにします。または、それらのための特別なフォルダが作成されている場合、これは不要ですか? メインフォームのすべてのコードがForm1.csに収まらないようにするため 私が遭遇した別の問題は、追加する各機能でメインフォームがより大きくなっているため、コードファイル(Form1.cs)が非常に大きくなっていることです。たとえば、TabControlがあり、各タブには多数のコントロールがあり、すべてのコードはForm1.csになりました。これを避ける方法は? また、これらの問題を扱っている記事や本を知っていますか?

3
プログラミング言語(オープン)標準にお金がかかるのはなぜですか?[閉まっている]
それがために聞いて反生産的ではないC11のための384のスイスフランクスまたはC ++ 11のための352のスイスフランクス目的は規格が広く採用されているようにすることです場合は、? 注意してください、私はまったく暴言を払っていない、と私は支払うことに反対していません。特にISOが国家標準機関のネットワークである(つまり、政府が資金を提供している)ことを知りながら、価格を設定する理由を理解したいと思います。また、これらの価格がそのような組織に資金を提供するのに十分な収入を生み出すことには疑問があるので、別の理由が必要です。

17
プログラマーに単体テストを要求する必要がありますか?[閉まっている]
私は多くのITプロジェクトを購入する場所で働いています。私たちは現在、将来のプロジェクトの要求のためのシステム要件の標準を作成しています。そのプロセスでは、サプライヤーに自動化された単体テストを要求できるかどうかを議論しています。 適切な自動化された単体テストが、コードの品質と安定性を文書化する唯一の方法であると確信しています。他の誰もが、単体テストはサプライヤだけに関係するオプションの方法であると考えているようです。したがって、自動化された単体テスト、継続テスト、カバレッジレポート、単体テストの検査などは一切必要ありません。このポリシーは非常にイライラします。 私はここで完全に列から外れていますか? 意見のいずれかの議論を提供してください。


7
自己実行型匿名関数とプロトタイプ
Javascriptには、javascriptでクラス/名前空間を作成および管理するための明確な手法がいくつかあります。 ある技術と他の技術を使用する場合にどのような状況が必要かを知りたいです。私は1つを選んで、それを前進させたいです。 複数のチーム間で保守および共有されるエンタープライズコードを記述しますが、保守可能なjavascriptを記述する際のベストプラクティスを知りたいですか? 私は、自己実行型の匿名関数を好む傾向がありますが、これらの手法に対するコミュニティの投票がどういうものか興味があります。 プロトタイプ: function obj() { } obj.prototype.test = function() { alert('Hello?'); }; var obj2 = new obj(); obj2.test(); 自己閉鎖匿名関数: //Self-Executing Anonymous Function (function( skillet, $, undefined ) { //Private Property var isHot = true; //Public Property skillet.ingredient = "Bacon Strips"; //Public Method skillet.fry = function() { var …

3
啓発への道:Scheme、Common Lisp、Clojure?[閉まっている]
私よりも賢い人の多くは、あなたがLispを学ぶとき、それをあなたが「得る」ので、あなたをより良いプログラマにすることについて書き続けます。 あなたの人生を変えるLisp(s)について聞いたのは、初心者にとっては大きな実用的な冗談だけかもしれませんが、スナイプや何かの後に送られてきたことがわかっても、世界についてもっと知ることに害はないと思います。 私はSICPの本、またはANSI Common Lispをフォローしたいのですが、同時に、個人的なプロジェクトで使用できる方言と実装を勉強しています。 SICPはSchemeに焦点を当てているため、これは1つの大きな投票です。ポール・グラハムは、初心者に教えるなら、Schemeでそれをやると言ったが、SchemeはまだCommon Lispより劣っているようだ。しかし、Clojureがあります。これは方法が限られていると言われていますが、他のもの(JVMライブラリ)ではより実用的です。 Schemeのマテリアルを簡単に使いこなしたり、CLから「本物の」啓発を達成したり、Clojureに十分に近づいて、長期的にはより多くのことができるように思えます。 そのすべてが真実ですか?何について学ぶべきか考えることをやめ、ただそれについて学びに行くべきですか?

6
純粋な関数型プログラミング言語は、割り当てステートメントなしでどのように管理しますか?
有名なSICPを読んだとき、著者は第3章でSchemeに代入文を導入することにかなり消極的であるように見えました。私はテキストを読み、彼らがそう感じる理由を理解します。 Schemeは私が知っている最初の関数型プログラミング言語であるため、割り当てなしで実行できる関数型プログラミング言語(もちろんSchemeではない)があることに驚いています。 本が提供する例を使用してみましょうbank account。割り当てステートメントがない場合、これをどのように行うことができbalanceますか?変数を変更する方法は?いわゆる純粋な関数型言語が存在することを知っているので、私はそう尋ねます。チューリング完全理論によれば、これもできるはずです。 私はC、Java、Pythonを学び、書いたすべてのプログラムで多くの割り当てを使用しました。本当に目を見張るような体験です。これらの関数型プログラミング言語で割り当てがどのように回避されるか、またそれらがこれらの言語に与える深刻な影響(もしあれば)を簡単に説明してくれることを本当に期待しています。 上記の例は次のとおりです。 (define (make-withdraw balance) (lambda (amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) "Insufficient funds"))) これによりが変更されましbalanceたset!。私には、クラスメンバーを変更するクラスメソッドによく似ていますbalance。 私が言ったように、私は関数型プログラミング言語に精通していないので、それらについて何か間違ったことを言ったら、気軽に指摘してください。

5
テスト用にプライベートなものを内部/公開にするか、PrivateObjectのようなハックを使用しますか?
私はコードテストの初心者であり、assert以前は売春婦でした。ユニットテストで私を心配していることの1つは、そうでなければそうであったpublic(または少なくともinternal)フィールドを作成し、それらprivateを解除readonlyし、代わりにprivateメソッドprotected virtualを作成するなどが必要になることが多いということです... 私は最近、PrivateObjectクラスのようなものを使用して、リフレクションを介してオブジェクト内のすべてにアクセスすることで、これを回避できることを発見しました。しかし、これにより、テストの保守性が低下します(コンパイル時ではなく実行時に失敗します。単純な名前変更によって破損し、デバッグが難しくなります...)。これについてのあなたの意見は何ですか?アクセス制限に関する単体テストのベストプラクティスは何ですか? 編集:たとえば、ディスク上のファイルにキャッシュを持つクラスがあり、テストでは代わりにメモリに書き込むことを検討してください。
26 c#  unit-testing 

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