ソフトウェア工学

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

1
C#クラスの命名標準/ガイドライン
長年にわたって、アプリケーションのサービスにはさまざまな命名規則を使用してきました 例えば: [ClassName]サービス [ClassName]マネージャー [ClassName]ファクトリー [ClassName] Provider [ClassName]ヘルパー 私は通常、外部依存関係のないユーティリティクラスにのみ「ヘルパー」サフィックスを使用します。 しかし、私は他の人との間にクロスオーバーが少しあることを発見し、何をいつ使用するかについての推奨事項/標準/ガイドラインがありますか?
18 c#  naming 

3
プロジェクトの2人とのワークフロー
私は自分のプロジェクトに取り組んでいる初心者プログラマーとしてあなたに来ます(これは順調に進んでいます)。私の共同創立者はプログラミングの方法も学んでおり、おそらくいくつかの問題を修正し、何らかの問題を起こせるようになりました。 彼は非常に良い質問をしました。それは「この仕事はどうするのか」でした。私は他の誰かとプログラムしたことがないので、私が理論化するだけの何か。最適なワークフローを教えてください。gitを使用します。 システムの特定の部分を所有する必要がありますか?コードをチェックインしていますか?コードレビュー? > 1開発者とどのように連携しますか?
18 git  github  gitflow 

3
左から右への言語構文の利点
私はChannel9 でハーブサッターとのインタビューを見ていましたが、彼はビデオの最後で、左から右への言語構文が将来のC ++標準のウィッシュリストの一番上にあると述べました(彼はそのようにC ++を変更することを認めていますがまったく別の獣になります)。 の他に: 人間がより理解しやすく、肉眼で明確 //C syntax /*pointer to function taking a pointer to function(which takes 2 integers as arguments and returns an int), and an int as arguments and returning an int*/ int (*fp)(int (*ff)(int x, int y), int b) //Go analogous syntax which is left to write …

8
マイクロソフトがパラメーター、ローカル変数、プライベートフィールドに同じ名前の命名規則を付けたのはなぜですか?
かなり前にこの質問をしました:C#でプライベート変数にどのように名前を付けますか? 回答の1つで、プライベート変数/フィールドは次のように命名する必要があることを示すMicrosoftのMSDNページを指摘されました。 private int myInteger; ただし、パラメーターは次のようになります。 void SomeMethod(int myInteger) ローカル変数は次のようになります。 int myInteger; このように参照すると myInteger = 10; あなたが話しているものを知る方法はありません。 現在、私は新しいプロジェクトを開始していますが、同僚の1人が、少なくともこれらのいくつかを差別化するために何もしないのかと尋ねてきました。 私は同じことを疑問に思っています。なぜマイクロソフトの標準はこれらを異なっていなかったのですか?

6
プログラマーや技術者以外のスタッフに優しい方法でバグ追跡をどのように処理しますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 私たちは実際にプロジェクトにMantisを使用しています。または、「使用しようとしています」と言う必要があります。私が知っているすべてのバグトラッカーの問題は、プログラマーのためにプログラマーによって作られていることです。そのため、デザインは存在しないか、まったく馬鹿げています。 もちろんプログラマとして、私はカマキリを問題なく使用できますが、プロジェクトに関与するすべての人々が設計が非常に難しく、使いにくいために箇条書き付きのGoogleドキュメントを作成することを好む場合、バグトラッカーはどれほど便利ですか?彼らが見つけたバグや提案しているかもしれない。 フォーラムをインストールしようとしていますが、バグトラッカーと単純な箇条書きリストの間の「中間」ソリューションのように思えます。少なくともフォーラムでは、提案に関する議論を監視し、一元化できます。 私の懸念が明確でない場合、私の質問は次のように要約できます。 技術以外のユーザーに対するバグと提案のレポートをどのように処理しますか? **関与することにより、私は実際のクライアントまたはエンドユーザーを意味しません。私は、インテグレーター、プロジェクトマネージャー、およびQAに関与している人々について考えています。

2
コールバックとリスナーの違いは何ですか?
blackberryでは、keyChar()メソッドをオーバーライドしてkeypressイベントをキャプチャするか、onKeyPressListenerを登録できます。onKeyListenerはオブザーバーパターンです。 アンドロイドにもKeyEvent.callbackとonKeyListenerがあります どちらもkeyCharイベントに登録する必要がないイベントです。両方のパターンの違いは何ですか?
18 java 

6
アセンブリはまだ関連していますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 プロジェクトのコーディングや管理に関して、アセンブリ言語と高レベル言語の間に大きな違いはありますか?明らかに、他のほとんどの言語よりも特定の操作を実行するためにアセンブリ言語でより多くのステートメントが必要ですが、ターゲットアセンブリ言語(特にx86 / x64アセンブリ言語)に基づいてプロジェクトを実行する必要がある(またはする必要がある)方法に影響する違いがあります? アセンブリ言語と他の言語との違いがある限り、これらの言語の少なくとも一部が他の言語の利点であると推測することは理にかなっています。アセンブリ言語の特定の欠点と、それらの欠点を軽減する方法を誰かが指摘できますか? 具体的な例の1つは、スタッフの空室状況です。経験豊富なアセンブリ言語プログラマを見つけるのに苦労した人はいますか?もしそうなら、この問題を軽減するためにどのような手順を踏むことができますか?
18 assembly  kernel 

9
出会ったばかりの人と秘密保持契約に署名することには注意が必要ですか?
私が答えを受け入れなかった理由についてあなたが困惑した場合の1/22/12更新:ほとんどすべての答えは、彼のために働くことはばかげているだろうという明白なポイントを作りますが、誰も質問に答えていないようでした。 tl; dr:私が会ったばかりの人が、彼が私に彼の会社に加わりたいと言っている。彼が私に彼らが何をするかを示す前に、彼は私に秘密保持契約に署名してほしいと思っています。これは変ですか? 今旅行中です。私のコーディングを見た人は、私がスマートか何かであると考えて、私と話し始めました。彼は彼がソフトウェア会社を所有していることを説明し、それが何をするのかを少し教えてくれ、会社に出資するプログラマーを探していると言った。彼は、会社の製品はかなり密かに開発されていると説明したので、あまり語ることができませんでした。しかし、彼はこの製品について十分に語ってくれたので、彼がこれを完全に補っているわけではないことを納得させました。これはまともなベースラインです。 彼は、彼が取り組んでいるものをもっと見せてくれと提案し、それを見た後、私は参加したいかどうかを決めました。製品の背後にある秘密のため、彼は話をする前に秘密保持契約に署名してほしいと言っています。 私が出会ったランダムな性質のため、私は明らかにいくらか懐疑的です。 短期的には、私はそのような契約に署名することに警戒すべきかどうか疑問に思っています。彼は、製品をインターネットよりも直接会って見せた方が簡単だと言い、明日は町を出るので、明日までにこれを把握する必要があります。彼と話をすることにした場合、この会社に時間を費やす価値があると信じるかどうかを後で決めることができます。 著作権の特定の側面のようなものが奇妙に見えるのと同じ理由で、秘密を伝えることを避けることができるという概念は私にとって奇妙に思えます。非開示契約への署名には注意が必要ですか?これは一般的な習慣ですか? 私は彼が考えていた契約の詳細を知りません(彼と会うことになった場合、署名するかどうか決める前に、もちろん契約を読み直します)。契約の側面。または、特に厳しい合意の場合を考えることができます。 この質問は漠然と関連しているようです。 機密保持契約(NDA)が必要ですか? ありがとう

10
プログラマーとして、低レベルおよび高レベルのプログラミング言語を知っている必要がありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 TCP / IPを介してLEDディスプレイをリモートコントロールする作業を行うように連絡を受けましたが、私の経験と準備は主に高レベルのプログラミング言語に関するものです。私はそれについて仕事について私に連絡した人に言って、彼は私に言った: 「自分をプログラマと呼ぶなら、これらすべてを知っておくべきだ」 プログラマは、低レベルプログラミングの詳細を本当に知っているべきですか?または、低レベルのプログラミングは私の専門知識ではないことを念頭に置いて、それを理論的な知識としてブラックボックスの概念として扱うことができますが、必ずしもそれを実行したり、低レベルの言語ソリューションを実装したりする必要はありませんか?

5
独自のカーネルの構築に関する野心的な学生へのアドバイス[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 私は非常に野心的な大学生で、コンピューターについて知っておくべきことをほとんどすべて学びたいと思っています(必要に応じて、私は学習が大好きです)。最近、私は自分のカーネルを設計して構築するのは楽しいプロジェクトになるだろうと考えました(長いプロジェクトですが)。 基本的な情報を入手しましたが、実際に機能させるにはAssemblyとC / C ++をマスターする必要があることを知りました。私はそれらに取り組んでいますが、プログラミングの観点からカーネルが実際にどのように機能するかを学びたいです。私はLinuxカーネルのコードを閲覧するのに何時間も費やしましたが、それだけであなたを連れて行くことができます。 カーネルを構築する基本的な手順は何ですか?対処する必要があるもの 注文するのですか?私は多くのことを噛んでいることを知っていますが、私はそれを処理するのに十分決心しています。
18 c  assembly  kernel 

16
テスターとプログラマーが互いに好きではないのはなぜですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 プログラマーとしての私のキャリアの間に、私はさまざまなプログラマーとテスターを見てきましたが、それらの多くはお互いが好きではありませんでした。つまり、プログラマーはテスターの仕事は「本当の」仕事ではないと考えており、テスターはプログラマーがあまりにも「誇りに思っている」と考えています。 これは私によってなされた正しい決定ですか、なぜですか、これらの種類の問題を回避するために私たちは何ができますか?
18 testers 

14
職場で単体テストを使用していますか?それらからどのようなメリットがありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 ユニットテストを勉強してコードに適用することを計画していましたが、同僚と話した後、一部の人はそれは必要ではなく、ほとんど利益がないと私に提案しました。また、実稼働ソフトウェアを使用して単体テストを実際に行っている企業はごくわずかであると主張しています。 私は、人々が職場で単体テストをどのように適用し、それらを使用することで得られるメリット、たとえば、コード品質の向上、長期的な開発時間の短縮などに興味があります。

3
デコレータのデザインパターンに関する初心者の質問
私はプログラミングの記事を読んでいて、デコレーターパターンについて言及していました。私はしばらくの間プログラミングを行ってきましたが、正式な教育やトレーニングは一切受けていませんが、標準的なパターンなどについて学ぼうとしています。 それで、デコレータを調べて、ウィキペディアの記事を見つけました。デコレータパターンの概念は理解できましたが、この文章に少し混乱しました。 例として、ウィンドウシステムのウィンドウを考えます。ウィンドウのコンテンツのスクロールを許可するには、必要に応じて、水平または垂直のスクロールバーを追加することができます。ウィンドウはWindowクラスのインスタンスによって表され、このクラスにはスクロールバーを追加する機能がないと想定します。それらを提供するサブクラスScrollingWindowを作成するか、この機能を既存のWindowオブジェクトに追加するScrollingWindowDecoratorを作成できます。この時点で、どちらのソリューションでも問題ありません。 ここで、ウィンドウに境界線を追加する機能も必要であると仮定します。繰り返しますが、元のWindowクラスにはサポートがありません。ScrollingWindowサブクラスは、新しい種類のウィンドウを効果的に作成したため、問題を引き起こします。すべてのウィンドウに境界線のサポートを追加する場合、サブクラスWindowWithBorderおよびScrollingWindowWithBorderを作成する必要があります。明らかに、この問題は新しい機能が追加されるたびに悪化します。デコレータソリューションの場合、新しいBorderedWindowDecoratorを作成するだけです。実行時に、既存のウィンドウをScrollingWindowDecoratorまたはBorderedWindowDecorator、あるいはその両方で装飾することができます。 OK、すべてのウィンドウに境界線を追加するように言ったら、オプションを許可するために元のWindowクラスに機能を追加するだけではどうですか?私の見方では、サブクラス化はクラスに特定の機能を追加したり、クラスメソッドをオーバーライドしたりするためのものです。既存のすべてのオブジェクトに機能を追加する必要がある場合、スーパークラスを変更するだけではいけないのはなぜですか? 記事には別の行がありました: デコレータパターンは、サブクラス化の代替です。サブクラス化はコンパイル時に動作を追加し、変更は元のクラスのすべてのインスタンスに影響します。装飾は、個々のオブジェクトの実行時に新しい動作を提供できます。 「...変更は元のクラスのすべてのインスタンスに影響します」と言っている場所がわかりません-サブクラス化は親クラスをどのように変更しますか?それがサブクラス化のポイントではないでしょうか? この記事は、多くのWikiのように、明確に書かれていないことを前提としています。その最後の行で、デコレータの有用性を確認できます-「...個々のオブジェクトに対して実行時に新しい動作を提供します。」 このパターンを読んでいなくても、個々のオブジェクトの実行時の動作を変更する必要がある場合、おそらく、この動作を有効または無効にするメソッドをスーパークラスまたはサブクラスに組み込みます。デコレータの有用性、そして初心者の考え方に欠陥がある理由を本当に理解してください。

6
恐ろしく設計されたデータベースの上に良いコードを書く希望はありますか?
これが私の苦境です。私が最近継承したいくつかのプログラムの1つは、バックエンドに恐ろしいデータベースで構築されています。尊敬されているクリエイターは、どうやらリレーショナルコンセプトを高く評価していなかったようです。一意のクライアントIDとして名前が付けられた、すべてのクライアントのテーブル。83の暗号化された名前のフィールド。コードはすべて手続き型であり、多数のインラインSQLステートメントが連結されています。 同じデータベースから実行される重要な補助アプリケーションが提供されなかったため、私はそれをゼロから再作成するという任務を負っていました。私は唯一の開発者であり、少なくとも半分の時間は運用に費やされているため、私の第一の責任でもありません。これから30日間の避けられない期限が設定されます。 私は経験が浅いにも関わらず、このデータベースと既存のアプリケーションを以前よりもはるかに良く設計できたと確信していますが、データベースを変更し、既存のアプリケーションを調整し、私がそうしなかったことを確認するのは現実的ではないと思います追加のアプリケーションをこれほど迅速に作成する必要がある間、何も壊しません。 だから私はひどいデータベースにこだわっていると仮定しましょう。このような悪い構造で作業する必要がある場合、それに準拠するものを書くと、何かが完全に壊れたり新しい機能が必要になるまで技術的な負債が山積みになってしまいますか?どうすればこの状況にアプローチし、うまくいけば機能するアプリケーション以外に何か良いものを得ることができますか? 編集:誰かが興味を持っている場合、この恐ろしいデータベースとそれを実行したアプリケーションを廃棄することになりました。補助的なアプリケーションの作成を外部委託しました(私はこの設定には関与していませんでした)が最終的に2人の異なる請負業者に委託されました。私は、今日もまだ使用されている3日間で、部分的に機能する恐ろしい修正のハックを急いで行かなければならなくなりました。

15
高級言語でプロトタイプを作成することは一般的ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私は現在、(C)で実際の経験がほとんどない言語での現在のプログラミング能力をはるかに超えるプロジェクトに着手するというアイデアをいじっています。全体的な設計を進めるために、私がよく知っている(Perl / Python / Ruby / C#のような)高級言語でプロトタイプを作成することは価値があるでしょうか? 最終的に、最終製品はパフォーマンスに敏感であるため(データベースエンジンです)、Cを選択しますが、Cをよく知らないと木のために森を失うことになるのではないかと思います。 同様の質問を探しているうちに、プログラマーがPrologでプロトタイプを作成し、それをアセンブラーで試していたという1人の仲間がいることに気付きました。

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