ソフトウェア工学

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

13
「良いコード」を書くとはどういう意味ですか?[閉まっている]
で、この質問、私はあなたが良いコードを書くことから悪いライター妨げているかどうかを尋ねました。答えの多くは「良いコードの意味に依存します」で始まりました。 「良いコード」と「悪いコード」という用語は非常に主観的なもののようです。私は一つの見方をしているので、他人の見方とは非常に異なるかもしれません。 「良いコード」を書くとはどういう意味ですか?「良いコード」とは何ですか?

18
プログラミング言語では構文は本当に重要ですか?[閉まっている]
私の教授の一人は、「構文はプログラミング言語のUIです」と言います。Rubyのような言語は読みやすく、成長していますが、C \ C ++で生産性の高いプログラマーが多いので、プログラマーは本当に構文が重要です受け入れられるべきですか? 私はあなたの意見を知りたいです。 免責事項:私は議論を始めようとはしていません。これは議論の良いトピックだと思いました。 更新:これは良いトピックであることが判明しました。みなさんが参加してくれてうれしいです。

15
お気に入りのバージョン管理システムは何ですか?[閉まっている]
これは、組織のニーズによって明らかに異なるため、「最良」を決定するための実際の試みというよりも議論の問題です。私は、カテゴリー(集中型vs分散型、オープンvsプロプライエタリなど)の異なるシステムを支持する議論についてもっと興味があります。 だから、最高のバージョン管理システムは何だと思いますか?



3
LISPとHaskellを使用する利点は何ですか?彼らは私をより良いプログラマにしてくれるでしょうか?[閉まっている]
LispとHaskellはそれぞれ論理プログラミング言語と関数型プログラミング言語であることは知っていますが、これはどういう意味ですか?他の言語とどのように違いますか?これらを学ぶことはあなたをより良いプログラマにし、ロジックを改善すると聞いたことがあります。これは本当ですか?LispまたはHaskellを有能なレベルに習得すると、プログラミングが改善され、どの言語でも問題を処理できるようになりますか?それらが学習の努力に値するかどうかを知りたいだけです。また、これらの言語はGUIやグラフィックスなどの分野で役立ちますか、それともコンソールアプリケーションだけで役立ちますか?
41 haskell  lisp 

8
複数のUnicodeエンコーディングがあるのはなぜですか?
Unicodeは、以前の試み(ASCIIなど)のほとんどでアドレス空間(8ビット)が小さいため、多くの異なるエンコーディングを使用するという問題全体を回避するように設計されていると思いました。 では、なぜ多くのUnicodeエンコーディングがあるのですか?UTF-8、UTF-16などの(本質的に)同じバージョンの複数のバージョンでも

7
イベントのポーリングは、オブザーバーパターンを使用するよりも優れていますか?
イベントのポーリングがオブザーバーパターンを使用するよりも優れているシナリオはありますか?私はポーリングを使用することを恐れており、誰かが良いシナリオをくれた場合にのみ使用を開始します。私が考えることができるのは、オブザーバーのパターンがポーリングよりも優れていることだけです。このシナリオを考慮してください: あなたは自動車シミュレーターをプログラミングしています。車はオブジェクトです。車の電源が入ったらすぐに、「vroom vroom」サウンドクリップを再生します。 これは2つの方法でモデル化できます。 ポーリング:車オブジェクトを毎秒ポーリングして、オンになっているかどうかを確認します。オンになったら、サウンドクリップを再生します。 オブザーバーパターン:車をオブザーバーパターンのサブジェクトにします。それがオンになったときに、すべてのオブザーバーに「オン」イベントを公開します。車をリッスンする新しいサウンドオブジェクトを作成します。サウンドクリップを再生する「on」コールバックを実装します。 この場合、オブザーバーパターンが勝つと思います。第一に、ポーリングはよりプロセッサを集中的に使用します。第二に、車がオンになったときにサウンドクリップがすぐに発射されない。ポーリング期間のため、最大1秒のギャップが生じる可能性があります。

3
スクラムの2つの異なるプロジェクト間で開発者の時間を調整する方法は?
私は新しく設立されたチームのスクラムマスターになりました。このチームは、ソフトウェアの作成と、デプロイされた他のアプリケーションの保守を担当しています。したがって、基本的に各チームメンバーには開発および運用タスクがあります。 過去数週間、彼らがどのように機能するかを観察してきましたが、これらのタスクの調整にチームが問題を抱えていることに気付きました。開発者がコーディングに集中していると、本番で発生した問題を修正するために中断され、以前のタスクに再び集中することは困難です。 開発作業時間の%を運用作業に割り当てようとしましたが、明らかにこれは問題を解決していないようです。以前にこの状況に遭遇したスクラムマスターからの連絡に興味があります。どのようにそれを管理し、どのような推奨事項がありますか?

6
関数が複雑で変数が多い場合、クラスを作成する必要がありますか?
オブジェクト指向プログラミング(OOP)は、たとえばPythonとは異なり、ファーストクラスの機能を持たないJavaとは異なるため、この質問は多少言語に依存しませんが、完全ではありません。 言い換えれば、Javaのような言語で不必要なクラスを作成することに対する罪悪感は減りますが、Pythonのような定型的でない言語にはもっと良い方法があるかもしれないと感じています。 私のプログラムは、比較的複雑な操作を何度も行う必要があります。その操作には多くの「ブックキーピング」が必要であり、いくつかの一時ファイルを作成および削除する必要があります。 そのため、他の多くの「サブオペレーション」も呼び出す必要があります。すべてを1つの巨大なメソッドに入れるのは、あまり良くなく、モジュール式で、読みやすいなどではありません。 今、これらは私の頭に浮かぶアプローチです: 1.パブリックメソッドを1つだけ持つクラスを作成し、そのインスタンス変数にサブ操作に必要な内部状態を保持します。 次のようになります。 class Thing: def __init__(self, var1, var2): self.var1 = var1 self.var2 = var2 self.var3 = [] def the_public_method(self, param1, param2): self.var4 = param1 self.var5 = param2 self.var6 = param1 + param2 * self.var1 self.__suboperation1() self.__suboperation2() self.__suboperation3() def __suboperation1(self): # Do something with self.var1, self.var2, …

10
単一責任の原則の適用可能性
私は最近、一見些細な建築上の問題に直面しました。私のコードには、次のように呼ばれるシンプルなリポジトリがありました(コードはC#です): var user = /* create user somehow */; _userRepository.Add(user); /* do some other stuff*/ _userRepository.SaveChanges(); SaveChanges データベースへの変更をコミットするシンプルなラッパーでした: void SaveChanges() { _dataContext.SaveChanges(); _logger.Log("User DB updated: " + someImportantInfo); } その後、しばらくして、システムでユーザーが作成されるたびに電子メール通知を送信する新しいロジックを実装する必要がありました。システムへの呼び出し_userRepository.Add()とSaveChangesシステムの呼び出しが多数あったため、次のSaveChangesように更新することにしました。 void SaveChanges() { _dataContext.SaveChanges(); _logger.Log("User DB updated: " + someImportantInfo); foreach (var newUser in dataContext.GetAddedUsers()) { _eventService.RaiseEvent(new UserCreatedEvent(newUser )) } …

15
基本的に組み込み関数の名前を変更する関数を作成することはお勧めできませんか?
特定のコンテキストでは、最小関数と最大関数で混乱します。 1つのコンテキストでは、関数を使用して2つの値のうちの大きい方または小さい方を取る場合、問題はありません。例えば、 //how many autographed CD's can I give out? int howManyAutographs(int CDs, int Cases, int Pens) { //if no pens, then I cannot sign any autographs if (Pens == 0) return 0; //I cannot give away a CD without a case or a case without a CD return min(CDs, …

10
これらの明白で関連性のあるケースにgotoを使用すると、何がそんなに悪いのでしょうか?
私はいつもそれgotoが悪いものであり、どこかに地下室に閉じ込められて永久に見られることはないことを知っていましたが、今日使用するのに最適なコード例に遭遇しましたgoto。 IPがあり、IPのリスト内にあるかどうかを確認してからコードを続行する必要があります。そうでない場合は例外をスローします。 <?php $ip = '192.168.1.5'; $ips = [ '192.168.1.3', '192.168.1.4', '192.168.1.5', ]; foreach ($ips as $i) { if ($ip === $i) { goto allowed; } } throw new Exception('Not allowed'); allowed: ... 使用しない場合はgoto、次のような変数を使用する必要があります $allowed = false; foreach ($ips as $i) { if ($ip === $i) { $allowed = true; …
40 php  goto 

4
テストデータをバージョン管理にチェックインする必要がありますか?
PDFファイルを処理する機能のテストコードを書いています。テストの背後にある基本的な考え方は、特別に選択したいくつかのPDFにそれらを向け、それらを処理し、出力が期待どおりであることを確認することです。 私の質問は、これらの大きなPDFをどこに保存すればよいのかということです。コードとともにバージョン管理にチェックインする必要がありますか?または、それらを別の場所に配置しますか?明らかに、テストコードはPDFなしでは(または異なるPDFでさえ)役に立たないのですが、それでもリポジトリにそれらを入れることは間違っていると感じています。

5
関数をパラメーターとして他の関数に渡しますか?
AS3アプリケーションとバックエンドとの通信方法を変更するプロセスを進めており、RESTシステムを実装して古いシステムを置き換えるプロセスを進めています。 悲しいことに、作業を開始した開発者は現在、長期の病気休暇中であり、私に引き継がれています。私は過去1週間かそこらでこれを使って作業しており、システムを理解していますが、心配していることが1つあります。関数の関数への受け渡しが多いようです。たとえば、サーバーへの呼び出しを行うクラスは、プロセスが完了してエラーが処理されたときにオブジェクトを呼び出して渡す関数を受け取ります。 それは恐ろしい練習であると感じる「悪い気持ち」を与えてくれます。そして、いくつかの理由を考えることができますが、システムにやり直しを提案する前に確認が必要です。この問題の経験がある人はいないだろうか?

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