ソフトウェア工学

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

9
誰かがリレーショナルDBMSでMongoDB(または同様の)を使用するのはいつですか?
私は、NoSQL全体などについて少し混乱しています。OracleやMySQLのようなものよりもMongoDBのようなものを使用することを選択するのはいつですか?使い方がそれらの間で異なる限り、私は「違い」を本当に理解していません。 私の理解では、NoSQLタイプのデータベースはRDBMSに代わるものではありませんが、正確には何を意味するのでしょうか?
134 database  nosql  rdms 

5
私もジュニアの開発者が読めるように「賢い」のでしょうか?JSの機能プログラミングが多すぎますか?[閉まっている]
私はバベルES6でコーディングしている上級フロントエンド開発者です。アプリの一部はAPI呼び出しを行い、API呼び出しから返されるデータモデルに基づいて、特定のフォームに入力する必要があります。 これらのフォームは二重リンクリストに格納されます(バックエンドがデータの一部が無効であると言った場合、ユーザーを混乱させた1ページにすばやく戻し、ターゲットを元に戻すことができます。リスト。) とにかく、ページを追加するために使用される関数の束があり、私はあまりにも賢いのだろうかと思っています。これは基本的な概要にすぎません-実際のアルゴリズムは非常に複雑で、さまざまなページやページタイプがありますが、例を挙げて説明します。 これが、初心者のプログラマーが処理する方法です。 export const addPages = (apiData) => { let pagesList = new PagesList(); if(apiData.pages.foo){ pagesList.add('foo', apiData.pages.foo){ } if (apiData.pages.arrayOfBars){ let bars = apiData.pages.arrayOfBars; bars.forEach((bar) => { pagesList.add(bar.name, bar.data); }) } if (apiData.pages.customBazes) { let bazes = apiData.pages.customBazes; bazes.forEach((baz) => { pagesList.add(customBazParser(baz)); }) } return pagesList; } さて、よりテストしやすくするために、これらのifステートメントをすべて取り、それらを分離し、スタンドアロンの機能にした後、それらをマップします。 …



6
ソロ開発者向けのアジャイル
ソロ開発者としてアジャイルプロセスの概念をどのように実装しますか?アジャイルは、アプリケーションをより速いペースで開発するのに便利なようですが、非常にチーム指向でもあります...

17
メソッドの再利用可能性をどのように知ることができますか?[閉まっている]
私は家で自分のビジネスを気にしていると私の妻は私に来て、言う Honey ..コンソールで2018年の世界中の夏時間をすべて印刷できますか?何か確認する必要があります。 そして、Javaの経験で生涯待っていたものが次のように思いついたので、とても幸せです。 import java.time.*; import java.util.Set; class App { void dayLightSavings() { final Set<String> availableZoneIds = ZoneId.getAvailableZoneIds(); availableZoneIds.forEach( zoneId -> { LocalDateTime dateTime = LocalDateTime.of( LocalDate.of(2018, 1, 1), LocalTime.of(0, 0, 0) ); ZonedDateTime now = ZonedDateTime.of(dateTime, ZoneId.of(zoneId)); while (2018 == now.getYear()) { int hour = now.getHour(); now = …

13
単体テストとテストなしの開発の時間差
私は、かなり時間に制約のある作業環境を持つソロ開発者です。開発時間は、要件、緊急度、またはその両方に応じて、プロジェクトごとに通常1〜4週間です。常に3〜4個のプロジェクトを処理していますが、一部のプロジェクトではタイムラインが重複しています。 予想通り、コードの品質が低下します。また、正式なテストも行っていません。通常、システムが多少壊れるまで、システムを歩いて行きます。その結果、かなりの量のバグが本番環境に逃げてしまいます。これを修正する必要があり、その結果、他のプロジェクトが滞ります。 これがユニットテストの出番です。正しく行われると、本番環境に逃げるバグはもちろん、バグを最小限に抑えることができます。一方、テストの作成にはかなりの時間がかかる可能性がありますが、これは私のような時間に制約のあるプロジェクトでは適切に聞こえません。 質問は、単体テスト済みのコードを未テストのコードと比べてどのくらいの時間差で書くか、そしてプロジェクトの範囲が拡大するにつれてその時間差はどのように拡大するのでしょうか?


15
ユーザーストーリーを推定する際に、マンデイではなくストーリーポイントを使用するのはなぜですか?
アジャイル手法(SCRUMなど)では、ユーザーストーリーに必要な複雑さ/労力はストーリーポイントで測定されます。ストーリーポイントは、チームが反復で取得できるユーザーストーリーの数を計算するために使用されます。 推定工数のように、具体的な測定値を使用できる抽象的な概念(ストーリーポイント)を導入する利点は何ですか?推定工数を使用して、速度を計算したり、反復のカバレッジを推定したりすることもできます。 対照的に、ストーリーポイントは使用するのが難しく(概念が抽象的であるため)、関係者に説明するのも困難です。どのような利点がありますか?

16
Cがとても危険なのに、なぜ人々はCを使うのですか?
Cの学習を検討しています。 しかし、なぜ「危険」に使用できるのにC(またはC ++)を使用するのでしょうか? 危険というのは、ポインターやその他の類似のものを意味します。 Stack Overflowの質問のように、gets関数は使用すべきでないほど危険なのはなぜですか?。プログラマーがJavaやPython、またはVisual Basicのような別のコンパイル言語を使用しないのはなぜですか?
132 c++  c 

17
アセンブリの学習はプログラミングにどのように役立ちますか?[閉まっている]
私は約10年間、高レベルの言語(Python、C#、VBA、VB.NET)でプログラミングを行ってきましたが、「裏側」で何が起こっているのか全く理解していません。 アセンブリを学習することの利点は何ですか?また、プログラマーとしてどのように役立つでしょうか?より高いレベルのコードで記述したものとアセンブリで行われることとの正確な関係を示すリソースを提供していただけますか?
132 assembly 

10
これは、リスコフ代替原則の違反ですか?
TaskエンティティのリストとProjectTaskサブタイプがあるとします。タスクはいつでも閉じることができますが、タスクのProjectTasksステータスが[開始済み]になると閉じることができません。UIは、開始済みを閉じるオプションがProjectTask使用できないことを確認する必要がありますが、ドメインにはいくつかの保護手段があります。 public class Task { public Status Status { get; set; } public virtual void Close() { Status = Status.Closed; } } public class ProjectTask : Task { public override void Close() { if (Status == Status.Started) throw new Exception("Cannot close a started Project Task"); base.Close(); } } これClose()で、タスクを呼び出すときに、開始タスクのProjectTask状態の場合は呼び出しが失敗する可能性がありますが、ベースのタスクの場合は失敗しません。しかし、これはビジネス要件です。失敗するはずです。これは、リスコフ代替原理の違反とみなすことができますか?

6
Gitで数値バージョン管理スキームをどのように実現しますか?
私の組織はSVNからGitへの移行を検討しています。移動に対する1つの議論は次のとおりです。 バージョン管理はどのように行いますか? NetBeansプラットフォームに基づいたSDKディストリビューションがあります。SVNリビジョンは単純な番号であるため、それらを使用してプラグインとSDKビルドのバージョン番号を拡張できます。Gitに移行するとき、これをどのように処理しますか? 可能な解決策: Hudsonのビルド番号を使用する(問題:Hudsonを確認して、実際のGitバージョンと関連付ける必要があります) 夜間および安定のためにバージョンを手動でアップグレードする(問題:学習曲線、ヒューマンエラー) 他の誰かが同様の問題に遭遇してそれを解決した場合、私たちはどのように聞いてみたいです。

10
TDD対生産性
現在のプロジェクト(C ++のゲーム)では、開発中にテスト駆動開発を100%使用することにしました。 コードの品質に関しては、これは素晴らしいことです。私のコードはこれほどうまく設計されていないか、バグがありません。プロジェクトの開始時に1年前に書いたコードを見るとき、私はしつこくありません。そして、より簡単にテストできるようにするだけでなく、実装と使用がより簡単になるように、物事を構造化する方法についてより良い感覚を得ました。 しかし...私がプロジェクトを始めてから1年が経ちました。確かに、空き時間にしか作業できませんが、TDDを使用すると、以前と比べてかなり遅くなります。開発の速度が遅くなると時間が経つにつれて良くなることを読み、以前よりもずっと簡単にテストを考え出すことは間違いありませんが、私は1年前からそれをやっていて、まだカタツムリのペースで働いています。 作業が必要な次のステップについて考えるたびに、毎回停止して、実際のコードを書くことができるように、テストをどのように書くかを考えなければなりません。書きたいコードを正確に知っているが、テストで完全にカバーできるほど細かく分解する方法が分からず、何時間も動けなくなることがあります。それ以外の場合は、すぐに12個のテストを考え、テストを書くのに1時間を費やして、さもなければ書くのに数分かかるであろう実際のコードの小さな断片をカバーします。 または、ゲーム内の特定のエンティティとその作成と使用のすべての側面をカバーするために50回目のテストを終了した後、To Doリストを見て、コーディングする次のエンティティを確認し、執筆の思考に恐怖を覚えます実装するための別の50の同様のテスト。 昨年の進捗状況を見ながら、「いまいましいプロジェクトを終わらせる」ためにTDDを放棄することを検討しています。ただし、付属のコード品質を放棄することは、私が楽しみにしていることではありません。テストの作成をやめると、コードをモジュール化してテストしやすくする習慣から抜け出すのが怖いです。 私はおそらくこれで非常に遅いために何か間違ったことをしていますか?メリットを完全に失うことなく生産性を向上させる代替手段はありますか?TAD?テストカバレッジが少ない?すべての生産性と動機を損なうことなく、他の人々はどのようにTDDを生き延びますか?
131 unit-testing  tdd 

15
2回繰り返す必要があるもののために関数を書くことは常にベストプラクティスですか?
私自身、何かを2回以上行う必要がある場合、関数を書くのを待つことができません。しかし、2回しか表示されないものに関しては、少し注意が必要です。 3行以上を必要とするコードの場合、関数を作成します。しかし、次のようなものに直面するとき: print "Hi, Tom" print "Hi, Mary" 私は書くのをためらっています: def greeting(name): print "Hi, " + name greeting('Tom') greeting('Mary') 2番目のものは多すぎるようですね。 しかし、私たちが持っている場合: for name in vip_list: print name for name in guest_list: print name そして、代替手段は次のとおりです。 def print_name(name_list): for name in name_list: print name print_name(vip_list) print_name(guest_list) 物事はトリッキーになりますか?今決めるのは難しい。 これについてあなたはどう思いますか?

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