タグ付けされた質問 「language-agnostic」

このタグは、プログラミング言語または環境に固有ではない質問用です。

4
基盤と見なすことができるソフトウェア開発方法論
私はソフトウェア開発方法論を含む小さな研究論文を書いています。私は利用可能なすべての方法論を調べていましたが、すべての方法論から、他の方法の基礎を提供しているものはあるのでしょうか。 例として、 アジャイル、プロトタイピング、クリーンルーム、反復、RAD、RUP、スパイラル、ウォーターフォール、XP、リーン、スクラム、Vモデル、TDDの方法論を見てみましょう。 私たちはそれを言うことができます: プロトタイピング、反復、スパイラル、ウォーターフォールは他のものの「基礎」です? それとも「基礎」などはなく、それぞれの方法論には独自の歴史がありますか? もちろん、私は自分の論文ですべての方法論について説明したいと思いますが、それを行う時間がないので、どの方法論を代表として見ることができるかを知りたいのです。

4
条件付きに副作用があっても大丈夫ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 アメリカの誰もが聞いたことのある大学でCS MSプログラムに参加するための前提条件として、中間データ構造コースを受講しています。クラスで記述された1行のコードが私の目に留まりました。 if (a > 33 | b++ < 54) {...} これは私の職場でのコードレビューに合格しません。インタビューでこのようなコードを書いた場合、これはあなたに対する重大なストライキとなるでしょう。(副作用のある条件付きであることに加えて、それは明快さを犠牲にして賢いです。) 実際、副作用のある条件式を見たことがなく、グーグルもあまり現れません。授業後も別の学生が留守にしていたので、変だと思ったのは私だけではありません。しかし、教授はこれが許容できるコードであること、そして彼がそのようなものを職場で書くことになることをかなり断固としていた。(彼のFTの仕事は、ご存知の会社のプリンシパルSWEです。) このコード行が受け入れられる世界は想像できませんが、望ましいことは言うまでもありません。私が間違っている?これでよろしいですか?より一般的なケースはどうですか?副作用のある条件付き?それらは大丈夫ですか?

12
ある値を他の2つ以上の値と比較する機能を備えた言語がないのはなぜですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 以下を検討してください。 if(a == b or c) ほとんどの言語では、これは次のように記述する必要があります。 if(a == b or a == c) これは少し面倒で情報を繰り返します。 上記のサンプル構文は少し不格好ですが、アイデアを伝えるためのより良い方法があると確信しています。 より多くの言語がそれを提供しないのはなぜですか?パフォーマンスや構文の問題はありますか?



1
型パラメーターの型引数を推論する手法の名前は?
セットアップ:Iterator型パラメーターを持つと呼ばれる型があるとしましょうElement: interface Iterator<Element> {} 次に、をIterable返す1つのメソッドを持つインターフェースがありますIterator。 // T has an upper bound of Iterator interface Iterable<T: Iterator> { getIterator(): T } Iteratorジェネリックであることの問題は、型引数を指定する必要があることです。 これを解決する1つのアイデアは、イテレータのタイプを「推測」することです。次の疑似コードは、Elementへの型引数であると推定される型変数があるという考えを表していますIterator。 interface <Element> Iterable<T: Iterator<Element>> { getIterator(): T } そして、次のような場所で使用します。 class Vec<Element> implements Iterable<VecIterator<Element>> {/*...*/} このの定義は、その定義の他の場所ではIterable使用していませんElementが、実際の使用例では使用しています。を使用する特定の関数は、双方向のイテレータなど、特定の種類のイテレータのみを返すs Iterableを受け入れるようにパラメータを制約できる必要もあります。そのIterableため、返されるイテレータは要素タイプだけではなくパラメータ化されます。 質問: これらの推定された型変数の確立された名前はありますか?テクニック全体についてはどうですか?特定の命名法を知らないために、この例を実際に検索したり、言語固有の機能について学ぶことが困難になっています。 総称を持つすべての言語がこの手法を備えているわけではありません。これらの言語で同様の技術の名前はありますか?

4
「yield」などのジェネレーター言語機能を使用するのは良い考えですか?
PHP、C#、Python、およびおそらく他のいくつかの言語には、yieldジェネレーター関数の作成に使用されるキーワードがあります。 PHPの場合:http : //php.net/manual/en/language.generators.syntax.php Pythonの場合:https : //www.pythoncentral.io/python-generators-and-yield-keyword/ C#の場合:https : //docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield 言語の機能/機能として、yieldいくつかの規則に違反していることを心配しています。それらの1つは、「確実性」と呼んでいるものです。呼び出すたびに異なる結果を返すメソッドです。通常の非ジェネレーター関数を使用してそれを呼び出すことができ、同じ入力が与えられた場合、同じ出力を返します。yieldでは、内部状態に基づいて異なる出力を返します。したがって、以前の状態を知らないで生成関数をランダムに呼び出すと、特定の結果を返すことは期待できません。 このような関数はどのように言語パラダイムに適合しますか?それは実際に慣習に違反していますか?この機能を使用することは良い考えですか?(良い点と悪い点の例を示すために、gotoかつては多くの言語の機能でしたが、現在もそうですが、それは有害であると見なされ、Javaなどの一部の言語からは根絶されました)。プログラミング言語のコンパイラ/インタープリターは、そのような機能を実装するために何らかの規則を破る必要がありますか?たとえば、言語はこの機能を動作させるためにマルチスレッドを実装する必要がありますか、それともスレッド化テクノロジなしで実行できますか?

3
型ベースの不変条件に対する関数型プログラミングの答えは何ですか?
不変条件の概念が複数のプログラミングパラダイムに存在することを知っています。たとえば、ループ不変式は、オブジェクト指向プログラミング、関数型プログラミング、手続き型プログラミングに関連しています。 ただし、OOPにある非常に便利な種類の1つは、特定のタイプのデータの不変条件です。これをタイトルで「型ベースの不変条件」と呼んでいます。たとえば、Fractionタイプが持つかもしれないnumeratorし、denominatorそのGCDは常に1であることを不変で、(すなわち画分が減少した形です)。これを保証できるのは、そのタイプを何らかのカプセル化して、データを自由に設定できないようにすることだけです。その見返りに、削減されているかどうかを確認する必要がないので、等価性チェックなどのアルゴリズムを簡略化できます。 一方、Fractionカプセル化によってこの保証を提供せずに単純に型を宣言した場合、将来、他の誰かがやって来て方法を追加する可能性があるため、分数が減ると仮定してこの型の関数を安全に書くことはできません非還元分数を取得する方法。 一般に、この種の不変条件がないと、次のような結果になる可能性があります。 前提条件を複数の場所でチェック/保証する必要があるため、より複雑なアルゴリズム これらの繰り返される事前条件は同じ根本的な知識を表すため、DRY違反(不変条件が真であること) コンパイル時の保証ではなく、実行時の失敗を通じて事前条件を適用する必要がある だから私の質問は、この種の不変条件に対する関数型プログラミングの答えは何かということです。ほぼ同じことを達成するための機能的慣用的な方法はありますか?または、利点をあまり関連性のないものにする関数型プログラミングの側面はありますか?

3
サイド影響のあるPUTを使用しています(REST)
ユーザーがフォームを更新するたびに元に戻す履歴を作成したい。更新なので、PUTリクエストを使用したいと思います。ただし、PUTには副作用が必要ないことを読みました。 ここでPUTを使用することは許容されますか?より良い代替案はありますか? PUT /person/F02E395A235 { time: 1234567, fields: { name: 'John', age: '41' } } サーバー内 doPut('person/:personId', // create a new person snapshot ) 編集: 履歴はユーザーに表示され、複数回呼び出すと複数のバージョンになります。 解決策は、バージョンを作成する前にバージョンが一意であるかどうかを確認することでした。

3
ファイルから設定をどこにロードして保存するのですか?
この質問は、ファイルから設定をロードするほとんどのプログラムに当てはまると思います。私の質問はプログラミングの観点からです、そしてそれは実際にさまざまなクラスとアクセシビリティの観点からファイルから設定のロードを処理する方法です。例えば: プログラムに単純なsettings.iniファイルがある場合、その内容をload()クラスのメソッド、またはおそらくコンストラクタにロードする必要がありますか? 値をpublic static変数に格納する必要がありますか、それともstaticプロパティを取得および設定するメソッドが必要ですか? ファイルが存在しないか、読み取りできない場合はどうなりますか?プログラムの残りの部分に、それらのプロパティを取得できないことをどのように知らせますか? 等 私はここの正しい場所でこれを求めていることを願っています。私はできるだけ質問を言語にとらわれないようにしたかったのですが、私は主に継承のようなものを持つ言語、特にJavaとC#.NETに焦点を合わせています。

6
モデルがデータを検証している場合、不正な入力に対して例外をスローすべきではありませんか?
このSOの質問を読むと、ユーザー入力を検証するために例外をスローすることは不快に思われるようです。 しかし、誰がこのデータを検証する必要がありますか?私のアプリケーションでは、すべての検証はビジネスレイヤーで行われます。これは、クラス自体だけが、各プロパティの有効な値を実際に認識しているためです。プロパティを検証するためのルールをコントローラーにコピーすると、検証ルールが変更される可能性があり、変更を行う場所が2つあります。 ビジネス層で検証を行う必要があるという私の前提は間違っていますか? 私がやること したがって、私のコードは通常、次のようになります。 <?php class Person { private $name; private $age; public function setName($n) { $n = trim($n); if (mb_strlen($n) == 0) { throw new ValidationException("Name cannot be empty"); } $this->name = $n; } public function setAge($a) { if (!is_int($a)) { if (!ctype_digit(trim($a))) { throw new ValidationException("Age $a …

9
条件文で(位置<サイズ)がこのような一般的なパターンになるのはなぜですか?
条件ステートメント(IF)では誰もがを使用(position &lt; size)していますが、なぜですか? 慣習だけですか、それとも正当な理由がありますか? 野生で発見: if (pos &lt; array.length) { // do some with array[pos]; } めったに見つかりません: if (array.length &gt; pos) { // do some with array[pos]; }

2
ソケットと共有メモリを介して行われるプロセス間通信の長所と短所は何ですか?
プロセス間通信の多くのオプションのうち2つは次のようになる可能性があることを理解しています。 共有メモリ ソケット 実際、Javaアプリケーションをデバッグするために、Intellij Ideaがこれら2つのオプションを公開しているのを見ました。それぞれのアプローチの長所と短所を知りたいのですが。

4
「例外のキャッチ」を使用して読みやすさを向上させる、良いか悪いか?
セクションで使用例外にする場合で実用的プログラマー、代わりのブックへの書き込み: retcode = OK; if (socket.read(name) != OK) { retcode = BAD_READ; } else { processName(name); if (socket.read(address) != OK) { retcode = BAD_READ; } else { processAddress(address); if (socket.read(telNo) != OK) { retcode = BAD_READ; } else { // etc, etc... } } } return retcode; 、 彼らは好む: retcode …

3
日付と時刻について考える場合、今日の真夜中は過去または未来ですか?
これは常に私にとってはパズルです。プログラミングやソフトウェア開発では厳密には問題ではありませんが、私たちの分野では一般的な問題のようです。 たとえば、有効期限の日時を2011-04-08 00:00:00に設定した場合、現在の現地時間が8日の10:45であるとすると、すでに期限切れになっていますか?それとも、まだ半日ほど残っていますか? 真夜中の1日の終わりが「属する」ための普遍的な標準はありますか? または私はイギリス軍から葉を取り、その日は23:59:59に終わり、00:00:01に始まり、真夜中がないと言うべきでしょうか?

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