ソフトウェア工学

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

6
プログラミングプロジェクトを他の開発者のタスクに分割する方法は?[閉まっている]
私は最近、開発プロジェクトに参加しましたが、突然主任開発者の仕事を与えられました。私の主な責任は、プロジェクトのプログラミング部分をタスクに分割し、これらのタスクを他の開発者に与えて、それらの部分が連携して動作することを確認することです。 問題は、これを行う方法がわからないことです。私は週末を鉛筆と紙でそれを理解しようとして過ごしましたが、並行してではなく順番に取り組むべきタスクのリストを考え出し続けています。機能に分割することを考えたかもしれませんが、同じファイルを編集する必要があるタスクになります。開発の早い段階のため、タスク全体を完全に書き直す必要があります。プログラムがもう少し完成してタスクを作成しやすくなるまで開発者を待たせることもできましたが、その後、何週間かを知っている人たちに手を貸してもらいました。 私はこれを行う資格について上司と会話しましたが、この問題について選択肢は与えられませんでした。自分が何をしているかわからないので、正しい方向へのヒントやナッジは大歓迎です。

17
プログラミングのパートタイムの仕事が異常なのはなぜですか?[閉まっている]
最近、メガコーポレーションでのフルタイムの開発職を辞めました。アルバイトを探すことにしました。それ以来、私は半ダースの潜在的な雇用者と話をしてきましたが、魔法の言葉「パートタイム」を言ったとき、彼らは皆同じ​​反応を示しました。今、私はそれがただの私かもしれないことを理解しているので、コントロールとして、私は彼ら全員に私がフルタイムで仕事をするつもりがあるかどうか尋ねました、そして、彼らはすべて私がおそらくオファーを受けるだろうと言いました。 私の質問は2つあります。 雇用主として、有能で優秀な開発者をあきらめたのは、なぜ彼が週5日ではなく週3日働きたいと思ったからですか? アルバイトの話をもっと良く売るにはどうすればいいですか?私は通常、現在の人生のバランスを好み、自分のプロジェクトに取り組みたいという理由を挙げていますが、それはさらに疑わしいものになります-自分で何かを始めて終了するのですか?私は怠け者ですか?
164 organization 

12
C ++を介したC、およびCを介したC ++を使用する場合
私はもう1年以上コンピューターサイエンスを紹介されていますが、私の経験から、CやC ++はどちらも「超高速」言語と見なされているようですが、Pythonやその他のスクリプト言語などは通常やや遅いと思われます。 しかし、ソフトウェアプロジェクトまたは小さなプロジェクトでさえ、それらのファイルの特定の数nがCで書き込まれ、それらのファイルの特定の数mがC ++で書き込まれるファイルをインターリーブする多くのケースを見てきました。 (C ++ファイルにはほとんどの場合対応するヘッダーがありますが、Cファイルにはそれほど多くないことに気付きました)。しかし、私の主な質問のポイントは、C ++を介してCを使用するのが適切な場合、およびCを介してC ++を使用する方が適切な場合の一般的な直感を得ることにあります。(1)C ++がオブジェクト指向であるという事実以外Cはそうではなく、(2)構文は非常に似ており、C ++は多くの点でCに似ているように意図的に作成されましたが、その違いはわかりません。それらは多くのドメインで(ほぼ)完全に互換性があるように思えます。 だから誰かが状況を解決できたら幸いです!ありがとう
164 c++  c 

19
C、Perl、Pythonなどの代わりにC ++を使用する理由はありますか?[閉まっている]
Linux(サーバー側)開発者として、C ++をどこで、なぜ使用する必要があるのか​​わかりません。 パフォーマンスに行くとき、最初と最後の選択肢はCです。 「パフォーマンス」が主要な問題でない場合は、PerlやPythonなどのプログラミング言語が適切な選択です。 この分野で私が知っているほとんどすべてのオープンソースアプリケーションは、C、Perl、Python、Bashスクリプト、AWK、さらにはPHPで書かれていますが、誰もC ++を使用していません。 GUIやWebアプリケーションのような他の分野については話していません。Linux、CLI、デーモンについてだけ話しているのです。 C ++を使用する十分な理由はありますか?

3
HTTPにPOSTリダイレクトがないのはなぜですか?
HTTPリダイレクトは、HTTPコード301および302(他のコードも可能)と、新しい場所の住所を持つ「ロケーション」として知られるヘッダーフィールドを介して行われます。ただし、ブラウザは常にそのURLに「GET」リクエストを送信します。 ただし、多くの場合、POSTを介してユーザーを別のドメインにリダイレクトする必要があります(銀行支払いなど)。これは一般的なシナリオであり、実際には要件です。HTTP仕様でこのような一般的な要件が無視されている理由を知っている人はいますか?回避策は、アクションをターゲットの場所(Locationヘッダーフィールドの値)に設定したフォーム(非表示フィールドのパラメーター付き)setTimeoutを送信し、それを使用してフォームをターゲットの場所に送信することです。

9
直接オブジェクト構築の代わりにファクトリクラスを使用する必要があるのはなぜですか?
GitHubとCodePlexでいくつかのС#とJavaクラスライブラリプロジェクトの歴史を見てきました。オブジェクトの直接インスタンス化とは対照的に、ファクトリクラスに切り替える傾向が見られます。 なぜファクトリクラスを広範囲に使用する必要があるのですか?クラスのパブリックコンストラクターを呼び出すことで、昔ながらの方法でオブジェクトが作成される、非常に優れたライブラリがあります。最後のコミットで、著者は数千のクラスのすべてのパブリックコンストラクターCreateXXXをすぐに内部に変更し、クラスの内部コンストラクターを呼び出して新しいオブジェクトを返すだけの数千の静的メソッドを持つ1つの巨大なファクトリークラスを作成しました。外部プロジェクトAPIは壊れており、よくできています。 なぜこのような変更が役立つのでしょうか?このようにリファクタリングのポイントは何ですか?パブリッククラスコンストラクターの呼び出しを静的ファクトリメソッド呼び出しに置き換えることの利点は何ですか? いつパブリックコンストラクターを使用する必要があり、いつファクトリーを使用する必要がありますか?

26
コード例を常に探しているのは、悪い開発者の兆候ですか?[閉まっている]
私はCとC ++で数年の経験を持つCS学生であり、過去数年間はJava / Objective Cでアプリ開発を常に行ってきましたが、現在はWeb開発に切り替え、主にルビーに焦点を当てていますレールと私は(アプリの開発と同様に、実際に)私は他のコードを参照しすぎることに気付きました。私は常にゼロからできるはずだと思う多くのことのためにGoogleの機能を使用しています。 基本的な基本事項は問題ではありません。これを例として使用するのは嫌ですが、スプリントでjava / pythonの両方でjavabatを実行できます。おもう? 通常使用する必要があるものは知っていますが、構文を常に参照します。私は学位を取得しているにもかかわらず、この分野での仕事を探すという点で私を非常にしっかりと抑制しているので、これに関するいくつかのアドバイスと意見を歓迎します。私が尋ねる主な理由は実際に雇用についてではありませんが、ハッカソンでノンストップコードを叩き出して、20個のGoogle / githubタブを開いてそこに座っている唯一の人になりたくないということはもっとありませんわずかな自信不足のため... 人は中程度から複雑なタスクのコード例を常に探しているので、悪い開発者ですか?

24
if(if else)elseを処理するエレガントな方法
これはささいなことではありませんが、このようなコードをコーディングする必要があるたびに、繰り返しが気になりますが、どのソリューションも悪くないかどうかはわかりません。 if(FileExists(file)) { contents = OpenFile(file); // <-- prevents inclusion in if if(SomeTest(contents)) { DoSomething(contents); } else { DefaultAction(); } } else { DefaultAction(); } この種のロジックには名前がありますか? 私も少しOCDですか? 好奇心のためだけに、私は邪悪なコードの提案を受け入れています...

22
null参照は本当に悪いことですか?
プログラミング言語にnull参照を含めることは「10億ドルの間違い」だと言ったと聞きました。しかし、なぜ?確かに、それらはNullReferenceExceptionsを引き起こす可能性がありますが、それではどうでしょうか?不適切に使用すると、言語の要素がエラーの原因になる可能性があります。 そして、代替手段は何ですか?私はこれを言う代わりに: Customer c = Customer.GetByLastName("Goodman"); // returns null if not found if (c != null) { Console.WriteLine(c.FirstName + " " + c.LastName + " is awesome!"); } else { Console.WriteLine("There was no customer named Goodman. How lame!"); } あなたはこれを言うことができます: if (Customer.ExistsWithLastName("Goodman")) { Customer c = Customer.GetByLastName("Goodman") // throws error …

8
長寿命(20年以上)向けのWebアプリケーションの開発
現在、政府の土地計画用のWebアプリケーションを開発しています。アプリケーションは主にブラウザで実行され、ajaxを使用してデータをロードおよび保存します。 最初の開発をしてから卒業します(学生の仕事です)。この後、チームの残りのメンバーは、必要に応じて随時機能を追加します。彼らはコーディングの方法を知っていますが、大部分は土地計画の専門家です。 Javascriptテクノロジーが変化するペースを考えると、20年経った今でも動作するコードをどのように書くことができますか?具体的には、コードを将来に備えて使用する(または避ける)必要があるライブラリ、テクノロジ、および設計のアイデアはどれですか

14
循環参照の何が問題になっていますか?
私は今日、プログラミングの議論に参加しました。そこでは、循環参照(モジュール、クラスなど)が一般的に悪いと公理的に仮定したステートメントをいくつか作成しました。ピッチで問題が解決したら、同僚は「循環参照の何が問題になっていますか?」と尋ねました。 これには強い気持ちがありますが、簡潔かつ具体的に言葉で表現するのは難しいです。私が思いつくかもしれない説明は、公理と見なされる他の項目に依存する傾向があります(「単独では使用できないため、テストできません」、「参加オブジェクトの状態が変化するときの不明/未定義の動作」など) )、しかし、私は循環参照が悪い理由の簡潔な理由を聞きたいです。それは私の脳が持っている種類の信仰の飛躍をとらない、何年にもわたってそれらを理解し、修正し、さまざまなコードを拡張します。 編集:二重にリンクされたリストや親へのポインターのような同種の循環参照については尋ねていません。この質問は、libAがlibAをコールバックするlibBを呼び出すなど、「より大きいスコープ」の循環参照について本当に質問しています。必要に応じて、「lib」を「module」に置き換えます。これまでのすべての答えに感謝します!

10
正規表現の構文設計の可読性が低い特定の理由はありますか?
プログラマは皆、コードの可読性が機能する短い構文のワンライナーよりもはるかに重要であることに同意しているように見えますが、上級開発者がある程度の精度で解釈する必要があります-それはまさに正規表現が設計された方法のようです。これには理由がありましたか? 私たちは皆、それselfDocumentingMethodName()がはるかに良いことに同意しe()ます。なぜ正規表現にも当てはまらないのですか? 構造的な編成のない1行のロジックの構文を設計するのではなく、 var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})(0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/; そして、これはURLの厳密な解析でさえありません! 代わりに、基本的な例として、パイプライン構造を整理して読みやすくすることができます。 string.regex .isRange('A-Z' || 'a-z') .followedBy('/r'); 正規表現の非常に簡潔な構文は、最短の操作と論理構文以外にどのような利点がありますか?最終的に、正規表現の構文設計の可読性が低い特定の技術的な理由はありますか?


19
インターフェイスが便利なのはなぜですか?
しばらくの間、C#で勉強とコーディングを行ってきました。しかし、それでも、インターフェイスの有用性を理解することはできません。テーブルに持っていくものが少なすぎます。機能の署名を提供する以外、何もしません。実装する必要のある関数の名前と署名を覚えていれば、それらは不要です。これらは、インターフェイス内の上記の関数が継承クラスに実装されていることを確認するためだけにあります。 C#は優れた言語ですが、Microsoftが最初に問題を作成し(多重継承を許可しない)、解決策を提供するという感覚を与えることがありますが、これは面倒なものです。 それは限られたコーディング経験に基づく私の理解です。インターフェースについてどう思いますか?どのくらいの頻度でそれらを使用しますか?
158 interfaces 

17
経営者に技術的負債を処理するよう説得するにはどうすればよいですか?
これは、開発者と仕事をするときによく自問する質問です。私はこれまで4つの会社で働いてきましたが、コードをクリーンに保ち、ソフトウェアアプリの将来の進歩を妨げる技術的負債に対処することに注意が払われていないことに気付きました。たとえば、最初に勤務した会社は、MySQLのようなものを使用するのではなく、ゼロからデータベースを作成し、アプリケーションをリファクタリングまたは拡張するときにチームのために地獄を作りました。マネージャーが予測について議論するとき、私はいつもマネージャーに正直で明確にしようとしましたが、経営陣はすでにあるものを修正することに興味がないようで、チームの士気に与える影響を見るのは恐ろしいです。 この問題に取り組む最善の方法について、あなたはどう思いますか?私が見たのは、荷物をまとめて帰る人たちです。同社はその後、開発者が出入りしてコードを悪化させる回転ドアになります。これを経営者にどのように伝えて、技術的負債の整理に興味を持たせますか?

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