ソフトウェア工学

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

4
唯一の目的を持ち出す機能を開発していますか?[閉まっている]
個々の貢献者(プログラマー/デザイナー)が唯一の目的のためにアーティファクトを開発したパターンの名前は何ですか?管理者が最終製品のその機能を削除できるように流用として機能することですか? これは、ある大手ゲーム開発会社で働いていた元同僚から聞いた民間伝承です。その会社では、中間管理職が製品に「インプットを与え」、「変更を加える」ようプレッシャーをかけられていることはよく知られています。こうした状況は、これらの余分な「管理入力」のために多くのプロジェクトを遅らせました。 上記の会社の1つのプロジェクトでは、アーティストと開発者が、あらゆるカットシーンに登場し、親指のように突き出る過剰なアニメーションキャラクターを作成しました。彼らは、ゲームが出荷される前に簡単に削除できるように設計しました(これは、ゲームがまだダウンロード可能な製品ではなく物理メディアで販売されていたときです)。明らかに、経営陣はアニメーションを削除することを投票しました。肯定的な側面として、経営陣は、製品に建設的なインプットを提供したことを示したため、プロジェクトを遅らせるような不必要な変更を導入しませんでした。 このプロセスパターンには、企業で働くゲームプログラマーの間で名前がありますが、実際の名前が何であるか忘れていました。私はそれがカモだと信じています。誰もが名前を指摘し、おそらくパターンがどのように展開するかについてのかなり信頼できる参照を指摘するのを助けることができますか?

16
古いコードを改善する責任はありますか?
私が書いたいくつかの古いコードを見ていました。動作しますが、すばらしいコードではありません。私は当時よりも多くのことを知っているので、改善することができました。これは現在のプロジェクトではありませんが、現在の作業中の製品コードです。過去に書いたコードに戻って改善する責任がありますか、それとも「壊れていない場合は修正しないでください」という正しい姿勢ですか?私の会社は数年前にコードレビュークラスを後援しましたが、重要なポイントの1つは、時にはそれで十分であるということでした。進め。 それで、ある時点でそれを十分に呼び出して先に進むべきですか、それともより良いと思うときに古いコードを改善するためにプロジェクトをプッシュしようとするべきですか?

10
リラックスした雰囲気の中でやりがいのある仕事を探すには?[閉まっている]
私は有名なハイテク企業の開発者です。私は多くの理由で仕事が好きです: クールな製品で面白い仕事をしています 困難な問題を解決し、多くの高度なスキル(定量的、創造的、執筆、プレゼンテーション)を使用します。 うまくいく 問題は、他の仕事のための時間を解放し、ストレスを軽減するために、よりリラックスした雰囲気(より短い時間、より少ないパフォーマンスプレッシャー、より高い柔軟性)が必要だと感じることです。理想は、週に30〜35時間程度の仕事で、特定の週に多少なりとも柔軟に仕事ができることです。誰もこのような仕事を探す場所を提案できますか?上記の点であまり犠牲にする必要はありませんか?(明らかに、私は賃金を犠牲にしなければならないでしょう。)私の雇用主は通常、パートタイムの雇用を提供しません。 私が考えることができる最も近いことは、私の大学のCS部門で夏のインターンシップをしたときです。仕事は非常に知的にやりがいがありましたが、数時間早く家に帰るか、期日までに柔軟性を得る必要があったとしても、まつげを打つ人はいませんでした。しかし、私は学業に代わるものがあるかどうかを知りたいと思います。なぜなら、私が見た給料から、私が現在作っているものから大きな低下があるからです。 私は以前にフリーランスの開発をしたことがありますが、大企業の従業員として私が面倒を見てくれるものがたくさんあります(例えば、福利厚生や安定した雇用の保証)。

10
すべての静的メソッドを使用することはできませんか?
以下の2つのUpdateSubjectメソッドの違いは何ですか?エンティティを操作する場合は、静的メソッドを使用する方が良いと感じました。どのような状況で非静的メソッドを使用する必要がありますか? public class Subject { public int Id {get; set;} public string Name { get; set; } public static bool UpdateSubject(Subject subject) { //Do something and return result return true; } public bool UpdateSubject() { //Do something on 'this' and return result return true; } } 私はこの本当に面倒な質問に対してコミュニティから多くのキックを得ることを知っていますが、私はそれを尋ねることを止めることができませんでした。 継承を扱う場合、これは非現実的になりますか? 更新: 職場で今起こっています。5人の開発者と6か月のasp.net …

4
英語以外のドメインでのプログラミングとユビキタス言語(DDD)
このテーマに密接に関連する質問がすでにここにあることは知っていますが、ユビキタス言語を出発点とする質問はないので、この質問を正当化すると思います。 知らない人のために:ユビキタス言語とは、翻訳の問題や誤解による矛盾や誤解を避けるために、開発者とドメインの専門家の間で等しく使用される(話し言葉と書き言葉の両方の)言語を定義する概念です。同じ用語がコード、チームメンバー間の会話、機能仕様などに表示されます。 だから、私が疑問に思ったのは、英語以外のドメインでユビキタス言語に対処する方法です。 個人的には、コメントを含むが、もちろん定数とリソースを除く、完全に英語でプログラミングコードを書くことを強く推奨します。 ただし、英語以外のドメインでは、次のいずれかを決定する必要があります。 ドメインの自然言語でユビキタス言語を反映するコードを記述します。 ユビキタス言語を英語に翻訳し、ドメインの自然言語でのコミュニケーションを停止します。 ユビキタス言語の英語への翻訳方法を定義するテーブルを定義します。 これらのオプションに基づく私の考えのいくつかを以下に示します。 1)混合言語コード、つまり英語以外の型/メンバー/変数名などを使用してコーディングすることに対して強い嫌悪感を持っています。ほとんどのプログラミング言語は英語をかなり「呼吸」し、ほとんどの技術文献、デザインパターン名なども英語です。したがって、ほとんどの場合、英語以外の言語で完全にコードを記述する方法はないため、いずれにしても混合言語になります。 2)これにより、ドメインの専門家は、ULに相当する英語で考えて話し始めるように強制されます。 3)この場合、開発者は母国語でドメインエキスパートと通信し、開発者は互いに英語で通信します。最も重要なのは、ULの英語翻訳を使用してコードを書くことです。 私は最初のオプションに行きたくないと確信しており、オプション3はオプション2よりも優れていると思います。他のオプションがありませんか? 更新 約1年後の今日、この問題を日常的に扱ってきたので、オプション3がうまく機能したと言わざるを得ません。 最初に恐れていたほど退屈ではなく、クライアントと話すこともリアルタイムで翻訳することも問題ではありませんでした。 私の経験に基づいて、次の利点があることもわかりました。 ULを翻訳すると、特に用語の翻訳方法がわからず、辞書などを調べ始める必要がある場合に、ULおよびドメイン自体の定義にさらに注意を払うことになります。何回か。 英語の知識をより深めるのに役立ちます。 明らかに、あなたのコードは、わいせつな気分になるのではなく、見るのがはるかに楽しいです。

11
単一責任の原則を明確にする
単一責任の原則では、クラスはただ1つのことを行うべきであると述べています。かなり明確な場合もあります。ただし、特定の抽象化レベルで表示したときに「1つのもの」のように見えるものは、下位レベルで表示したときに複数のものになる可能性があるため、他のものは困難です。また、単一の責任原則が低レベルで尊重されている場合、過度に分離された冗長なラビオリコードが発生し、すべての小さなクラスを作成し、実際の問題を解決するよりも情報を配管することに多くの行が費やされる可能性があります。 「一つのこと」の意味をどのように説明しますか?クラスが実際に「1つのこと」以上のことを行う具体的な兆候は何ですか?

19
ジュニアソフトウェアエンジニアにどのスキルを期待し、評価しますか?[閉まっている]
私は最近、ソフトウェア工学の修士号を取得しました。数週間のうちに専門職を始めようとしています。私の役割は、Javaと関連技術(特にSpringとHibernate)を使用してソフトウェアを開発する会社のジュニア開発者としての役割です。正直に言うと、特にJava開発者としてのキャリアを発展させたいと思っているので、私は何が来るのか本当に興奮しています。また、この分野での経験を得ることにも非常に興味があります。また、これはプロの開発者としての最初の仕事の経験になるので、最初からベストを尽くしたいです。 ソフトとテクニカルの両方のスキルと能力が、あなたのチームの一員となりうる新しいプロフェッショナル(ジュニア開発者)で最も高く評価され、ソフトウェアとして成功するキャリアを達成するためにどのスキルに焦点を当てるべきかを知りたいエンジニア。


17
Lispが便利なのはなぜですか?[閉まっている]
Lispは明らかにAIの利点ですが、LispがJava、C#、またはCよりも高速であるとは思えません。 Lispでビジネスソフトウェアを書くことになります。 しかし、それはハッカーの言語と見なされています。 Paul GrahamがLispを擁護するのはなぜですか?ITA Softwareが他の高級言語よりもLispを選んだのはなぜですか?これらの言語に対してどのような価値がありますか?
64 lisp 

7
単体テストとテスト駆動開発の違い
説明を読むことで、TDDテストでは関数を記述する前に行われ、ユニットテストでは後に行われることを理解しています。 これが主な違いですか、それとも2つの用語を比較することすらできませんか。おそらく、ユニットテストはTDDに統合された部分です。

5
CSSやSVGで大量のマジックナンバーを使用できるのはなぜですか?
しばしば、私のようなホットネットワークの質問リスト上の質問を参照、この基本的には「私はCSSでこの任意の形状を描くんか」尋ねます。常に答えは、要求された形状を形成する一見ランダムにハードコードされた値の束を持つCSSまたはSVGデータのブロックです。 これを見ると、「うん!なんとcodeいコードブロックです。私のプロジェクトでこの種のものを見ないことを願っています。」しかし、私はこれらのタイプのQ&Aを非常に頻繁に、多数の賛成票で見ているので、明らかにコミュニティはそれらが悪いとは思わない。 しかし、なぜこれが受け入れられるのでしょうか?私のバックエンドの経験から来ると、これは私には意味がありません。では、なぜCSS / SVGで問題ないのでしょうか?

4
マルチスレッドで関数型プログラミングは速くなりますか?物事の書き方が違うのか、物事のコンパイルが違うのですか?
私は関数型プログラミングの世界に飛び込んでいますが、関数型言語がマルチスレッド/マルチコアプログラムに適していることはどこでも読み続けています。再帰、乱数など、関数型言語がさまざまなことをどのように行うかを理解していますが、関数型言語でマルチスレッドが高速であるかどうかは、コンパイルが異なるため、または私がそれを書くためにわかりません。 たとえば、特定のプロトコルを実装するプログラムをJavaで作成しました。このプロトコルでは、2者は互いに何千ものメッセージを送受信し、それらのメッセージを暗号化し、何度も再送信(および受信)します。予想どおり、数千単位の規模を扱う場合、マルチスレッドが重要です。このプログラムには、ロックは含まれていません。 JVMを使用するScalaで同じプログラムを作成すると、この実装は高速になりますか?はいの場合、なぜですか?文章のスタイルが原因ですか?Javaがラムダ式を含むようになったため、書き込みスタイルが原因である場合、ラムダを使用したJavaを使用して同じ結果を達成できませんでしたか?または、Scalaが異なる方法でコンパイルするため、高速ですか?

11
大きなブール式は、述語メソッドに分解された同じ式より読みやすいですか?[閉まっている]
理解しやすいもの、大きなブール文(非常に複雑なもの)、または述語メソッドに分解された同じ文(多くの余分なコードを読む) オプション1、大きなブール式: private static bool ContextMatchesProp(CurrentSearchContext context, TValToMatch propVal) { return propVal.PropertyId == context.Definition.Id && !repo.ParentId.HasValue || repo.ParentId == propVal.ParentId && ((propVal.SecondaryFilter.HasValue && context.SecondaryFilter.HasValue && propVal.SecondaryFilter.Value == context.SecondaryFilter) || (!context.SecondaryFilter.HasValue && !propVal.SecondaryFilter.HasValue)); } オプション2、条件を述語メソッドに分割: private static bool ContextMatchesProp(CurrentSearchContext context, TValToMatch propVal) { return MatchesDefinitionId(context, propVal) && MatchesParentId(propVal) && (MatchedSecondaryFilter(context, propVal) …
63 c#  readability 

6
非技術系マネージャーは、どのように自発的なソフトウェア開発者のチームに価値を追加しますか?
多くのプログラマーが管理および管理の役割から離れているのを見ています。彼らはものを作りたい。そしてその結果、これらのポジションの多くは非技術者によって満たされています。私は、彼らがどのように価値を付加するのか見ていません。会議のスケジューリング、オフサイトの予約、およびその他の管理作業は、その役割を正当化するのに十分ですか?


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