ソフトウェア工学

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

14
Reflectionの使用に問題はありますか?
理由はわかりませんが、リフレクションを使用するときは常に「ごまかし」のような気がします-おそらく、自分が取っているパフォーマンスヒットのせいでしょう。 私の一部は、それがあなたが使用している言語の一部であり、あなたがしようとしていることを達成できるなら、なぜそれを使用しないのかと言います。私の他の部分は、リフレクションを使用せずにこれを行うことができる方法がある必要があると言います。多分それは状況次第だと思います。 リフレクションを使用する際に注意する必要のある潜在的な問題は何ですか?従来の解決策を見つけようとするのにどれだけの労力を費やす価値がありますか?

7
開発関連の障害を処理する最も生産的な方法は何ですか?[閉まっている]
私たちは皆そこにいました: プロジェクトが失敗したか、キャンセルされました。 作業に費やしたコードは、チームによって拒否されました。 チームに紹介した設計パターンは混乱を生み出しました。 誰もがあなたのアイデアを無視します。 私の質問は、プログラマがこれらのような開発関連の障害を処理する最も生産的な方法は何ですか?

17
マネージャーは、人が良いプログラマーか悪いプログラマーかをどのように知るのですか?
プログラミングチームや部門を行うほとんどの企業では、コードを設計および作成するプログラマーと、管理作業を行うマネージャーで構成されます。単にコードを書いていないことを除けば、マネージャーは通常、チームが開発したコードを見さえせず、作業マシンに適切なIDEがインストールされていないことさえあります。 それでも、マネージャーは、人がうまく働いているか、何かを担当するべきか、特定の開発者を最も重要かつ責任のあるタスクに割り当てるべきかを判断する必要があります。最後になりましたが、マネージャーは通常、四半期ごとのボーナスを割り当てます! 上記を効果的に行うには、マネージャーは、もちろん他の特性の中でも、その人が優れたプログラマーであるかどうかを知る必要があります。問題は、彼らがそれをどのように行うのかということです。 彼らは人々が書いたコードすら見ていませんし、プログラマーが開発するコンポーネントの品質を直接評価することもできません...ほとんどの場合! その秘密は何ですか?

20
私が持っているすべてが大きなアイデアである場合、大規模なプロジェクトを開始する手順は何ですか?[閉まっている]
私はコンピューター工学の学生です。大きなプロジェクトをどのように処理できるか考えてきました。より効率的かつ効果的な方法で目標を達成するための最初のステップは何ですか? プロジェクトを思いついたとき、どのようにそのプロジェクトに取り組み始めるべきかわかりません。多くの場合、私はそれを無視します。ただし、プロジェクトのアイデアはもう無視したくありません。 今、私はあなたのすべてに尋ねています、誰でも彼/彼女の経験を共有できますか?私が持っているすべてがアイデアであるとき、どのようにプロジェクトを始めるべきですか?

7
Javaのジェネリックの何が問題になっていますか?[閉まっている]
このサイトで、Javaによるジェネリックの実装を非難する投稿を何度か見ました。今、私は正直に言って、私はそれらを使用することに何の問題もなかったと言うことができます。しかし、私は自分でジェネリッククラスを作成しようとしませんでした。では、Javaの汎用サポートに関する問題は何ですか?
49 java  generics 

10
「if(0 == value)…」は、害よりも害をもたらすのではないでしょうか?[閉まっている]
これは、他の誰かのコードで見たときに最も嫌いなものの1つです。私はそれが何を意味するのか、なぜこのようにするのかを知っています(「誤って代わりに「=」を入れたらどうなりますか?」)。私にとっては、子供が階段を降りて階段を数えて声を出しているようなものです。 とにかく、これに対する私の議論は次のとおりです。 プログラムコードを読み取る自然な流れを混乱させます。私たち人間は、「値がゼロの場合」ではなく「値がゼロの場合」と言います。 最新のコンパイラーは、条件に割り当てがある場合、または実際には条件がその割り当てだけで構成されている場合に警告を発します。 プログラマーである場合、値を比較するときは二重の「=」を忘れないでください。「!」の入力を忘れることもあります。不平等をテストするとき。

11
///コメントブロックが重要な理由
誰かがすべてのメソッドの前に/// <summary>コメントブロック(C#)を付けるべきだと言ったことがありますが、その 理由は説明しませんでした。 私はそれらを使い始め、それらが私をかなり悩ませるので、ライブラリと静的メソッドを除いてそれらの使用を止めました。それらはかさばり、更新するのをいつも忘れています。 /// <summary>コードでコメントブロックを使用する正当な理由はありますか? 私は通常//、常にコメントを使用します/// <summary>。それは、私が考えていたブロックだけです。
49 c#  comments 

19
大規模サイトでのバックグラウンドタスクのサービス
StackOverflowの興味深い問題を扱っています。 私たちには、「すぐにやる必要がある」小さなタスクがたくさんあります。例は、「関連する質問」リストの更新です。過去に行ったことは、これらのタスクを一部のユーザーのページロードにピギーバックすることです。 これは決して理想的ではありませんでしたが、それほど目立ちませんでした。SOが1,000,000の疑問符を通過したので、それらの不運なユーザーはそれを感じ始めています。 自然な解決策は、これらのタスクを実際にバックグラウンドにプッシュすることです。私が検討しているこれを行うには2つの広い方法があります。 1. IISでカスタムスレッドプール/ワークキューとして 基本的に、IISに干渉しないようにいくつかのスレッド(非ThreadPool)をスピンアップし、Funcsを入れているコレクションにサービスを提供します。 ここでの大きな利点はシンプルです。マーシャリングについて心配する必要も、外部サービスが起動して応答することを確認する必要もありません。 また、すべての共通コードにアクセスできます。 欠点は、バックグラウンドスレッドを使用しないことです。私が知っている異議はすべて、IISの飢star(ThreadPoolを使用している場合)とスレッドのランダムな消滅(AppPoolのリサイクルのため)に集中しています。 ランダムスレッドデスを非問題にするための既存のインフラストラクチャがあり(基本的にタスクの検出は中止されています)、スレッド数の制限(および非スレッドプールスレッドの使用)も難しくありません。 IISプロセスのスレッドプーリング/ワークキューに他の異議がありませんか? ここでは実際には対処されなかったため、StackOverflowに移動しました。 2.サービスとして サードパーティのソリューション、またはカスタムソリューションのいずれか。 基本的に、プロセスの境界を越えて何らかのサービスにタスクをマーシャリングし、それを忘れます。おそらく、生のSQL +接続文字列の一部のコードをリンクしている、または制限しているのでしょう。 プロは、これを行うための「正しい方法」であるということです。 短所は、できることが非常に制限されているか、このサービスをコードベースと同期させるために何らかのシステムを作成する必要があることです。また、監視とエラーログのすべてをなんらかの方法で接続する必要があります。これは、「IIS内」オプションで無料で取得できます。 サービスアプローチには他の利点や問題がありますか? 簡単に言えば、アプローチ#1を実行不可能にする予測不可能で克服できない問題がありますか。もしそうなら、アプローチ#2を検討する必要がある優れたサードパーティサービスはありますか。

15
クリーンなコード:いくつかのパラメーターを持つ関数[終了]
Robert C. MartinによるClean Codeの最初の章を読みましたが、かなり良いように思えますが、疑問があるのですが、ある部分では、関数のパラメーターが少ないほど良い(認知的に)ことは言及されています可能な限り、3つ以上のパラメータが関数には大きすぎることを示唆しています(私は非常に誇張されており、理想的です)ので、私は疑問に思い始めました... グローバル変数を使用し、関数に多くの引数を渡すという慣習はどちらも悪いプログラミング慣行ですが、グローバル変数を使用すると、関数のパラメーターの数を大幅に減らすことができます... だから私はあなたがそれについて考えることを聞きたかったのですが、関数のパラメータの数を減らすためにグローバル変数を使う価値はありますか?どのような場合になりますか? 私が思うに、それはいくつかの要因に依存しているということです: ソースコードのサイズ。 関数の平均のパラメーターの数。 関数の数。 同じ変数が使用される頻度。 私の意見では、ソースコードのサイズが比較的小さい場合(600行未満のコードなど)、多くの関数があり、同じ変数がパラメータとして渡され、関数には多くのパラメータがあり、グローバル変数を使用する価値がありますが、知りたい... 私の意見を共有しますか? ソースコードが大きい他のケースなどについてどう思いますか? PS。私はこの投稿を見ました、タイトルは非常に似ていますが、彼は私が知りたいことを尋ねません。

12
オブジェクトのすべての作業をコンストラクターで行う理由はありますか?
これは私のコードでも同僚のコードでもないということで、これを序文にしましょう。数年前、私たちの会社が小さかったとき、私たちには必要なプロジェクトがいくつかありましたが、その能力はありませんでしたので、それらは外部委託されました。今、私は一般的にアウトソーシングや請負業者に対して何もありませんが、彼らが生産したコードベースは大量のWTFです。とはいえ、(ほとんど)動作するので、私が見た外部委託プロジェクトの上位10%にあると思います。 会社の成長に伴い、社内での開発をさらに進めようとしました。この特定のプロジェクトは私の膝に着地したので、私はそれを調べ、掃除し、テストを追加するなどしてきました。 繰り返し見られるパターンが1つありますが、非常に驚​​くほどひどいので、理由があるのではないかと思って、見ないだけです。パターンは、パブリックメソッドやメンバーを持たないオブジェクトであり、オブジェクトのすべての作業を行うパブリックコンストラクターにすぎません。 たとえば、(コードがJavaである場合、それが重要ですが、これがより一般的な質問であることを願っています): public class Foo { private int bar; private String baz; public Foo(File f) { execute(f); } private void execute(File f) { // FTP the file to some hardcoded location, // or parse the file and commit to the database, or whatever } } 疑問に思っているなら、このタイプのコードはしばしば次のように呼ばれます: for(File f …

9
マネージャクラスは、悪いアーキテクチャの兆候ですか?
最近、デザインにマネージャークラスをたくさん持つのは悪いことだと思い始めました。このアイデアは説得力のある議論をするには十分に成熟していませんが、いくつかの一般的なポイントがあります: 「マネージャー」に大きく依存しているシステムを理解することは、私にとってはるかに難しいことがわかりました。これは、実際のプログラムコンポーネントに加えて、マネージャの使用方法と理由を理解する必要があるためです。 マネージャーは、多くの場合、プログラマーがプログラムJust Work TMを作成する方法を見つけることができず、マネージャークラスに依存してすべてが正常に動作する必要がある場合など、設計の問題を軽減するために使用されるようです。 もちろん、飼い葉sは良いことができます。明らかな例は、EventManager私のお気に入りの構造の1つです。:P私のポイントは、マネージャーが多くの時間を使いすぎているように見えることであり、プログラムアーキテクチャの問題を隠す以外の正当な理由はありません。 マネージャークラスは本当に悪いアーキテクチャの兆候ですか?

11
デザインパターンに関する標準的な本はありますか?[閉まっている]
私はデザインパターンの学習に興味があり、この主題を学習する上で一流の本と見なされるものを知りたいと思っています。 ベストプラクティス、設計方法論、および設計パターンに関するその他の有用な情報を説明するための事実上の標準である本はありますか?その本はそれを特別なものにしていますか?

4
if( 'constant' == $ variable)vs. if($ variable == 'constant')
最近、私はPHPで、特にWordPressフレームワーク内で多くのことをしています。私は次の形式の多くのコードに気付いています: if ( 1 == $options['postlink'] ) 期待していた場所: if ( $options['postlink'] == 1 ) これは特定の言語/フレームワークで見られる慣習ですか?前者のアプローチが後者よりも好ましい理由はありますか(処理の観点、または構文解析の観点、あるいは人間の観点からも) それとも単に好みの問題ですか?ある定数に対してテストされる変数項目は左側にあると、テストを実行するときは常に良いと思っていました。「チョコレートがケーキの場合」よりも、「ケーキがチョコレートの場合」という自然言語での質問の方がよく似ているようです。

8
Javaを商用利用できますか?
JavaはGPLライセンスです(ウィキペディアからの参照)。商用プロジェクトで使用できるかどうかはわかりません。私はすでにJavaで書かれたWebサイトを持っているので、これを商用で使用する予定です。それは違法ですか?
49 java  licensing  bcl 

28
いつ自分のプログラミング言語を作成するのが合理的ですか?
長い目で見れば、独自の言語を作成する方が優れているような、キラーアプリケーションのタイプ、アルゴリズムの問​​題のクラスなどはありますか? PS:確かに、私は既存の言語用の新しいコンパイラではなく、新しいプログラミング言語とコンパイラを意味します。 編集:答えてくれてありがとう。DSLの作成が絶対に不要な場合や、DSLが良いアイデアである場合の例をいくつか挙げてください。

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