タグ付けされた質問 「state」

17
なぜグローバル国家はそれほど悪なのか?
これを始める前に、抽象化と依存性注入の概念をよく知っていると言っておきましょう。ここで目を開ける必要はありません。 まあ、私たちのほとんどは、「グローバル変数を使用しないでください」、または「シングルトンはグローバルであるため悪です」と本当に理解せずに何度も言います。しかし、不吉なグローバルな状態で本当に悪いのは何ですか? たとえば、システムフォルダパスやアプリケーション全体のデータベース資格情報など、アプリケーションのグローバル構成が必要だとしましょう。 その場合、これらの設定を何らかのグローバルスペースで提供する以外に良い解決策はありません。これは、アプリケーション全体で一般的に利用できます。 私はために悪いことを知っている虐待それを、しかし、世界的なスペースが本当にあるTHAT悪?もしそうなら、どんな良い選択肢がありますか?

22
グローバルとデータベースとの違いは何ですか?
私はちょうどこの古い質問に出くわして、グローバル状態の悪さを問いかけました。トップ投票で受け入れられた答えは、グローバル変数で動作するコードを信頼できないと断言しています。その後、値とデータが異なるため、あなたのコードの動作がどうなるか分かりません! しかし、それを見たとき、私はそれが本当に弱い説明だと思わざるを得ません。データベースに保存されたデータを操作するのとはどう違うのですか? プログラムがデータベースのデータを処理しているとき、システムの他のコードがそれを変更しているのか、まったく別のプログラムがそれを変更しているのかは関係ありません。データが何であるかは気にしません。それが全体のポイントです。重要なのは、コードが遭遇するデータを正しく処理することです。(明らかに、私はここでしばしば厄介なキャッシングの問題を明らかにしていますが、今のところそれを無視しましょう。) ただし、使用しているデータが、データベース(またはユーザー入力、ネットワークソケット、ファイルなど)など、コードで制御できない外部ソースからのものであり、何も問題がない場合それで、コード自体のグローバルデータはどうですか?あなたのプログラムはそれをはるかに高度に制御していますが、誰も問題とみなさない完全に通常のものより明らかに悪いものではない場合、悪いことですか?
250 state  globals 

8
アプリケーションをステートレスに保つ方法
これは複雑な質問かもしれませんが、私は無国籍の理解を深めようとしています。 私が読んだことに基づいて、Webアプリケーションはステートレスである必要があります。つまり、各リクエストは独立したトランザクションとして扱われます。そのため、セッションとCookieは両方ともステートフルであるため、回避する必要があります。より良い方法はトークンを使用することです。トークンはサーバーに何も保存されないためステートレスです。 だから私は理解しようとしている、私のセッションのために保持されているデータ(ショッピングカートのアイテムなど)があるとき、Webアプリケーションはどのようにステートレスになりますか?これらは実際にどこかにデータベースに保存され、その後定期的にパージされますか?クッキーの代わりにトークンを使用している場合、これはどのように機能しますか? そして、関連する質問として、主要なWebサイト(Amazon、Google、Facebook、Twitterなど)は実際には無国籍ですか?トークンまたはCookie(または両方)を使用していますか?

4
状態、可変状態、および不変状態とは何ですか?
これは初心者向けの質問ですが、Googleで初心者向けの十分な答えを見つけることができませんでした。 「状態」と言うとき、人々は何を意味しますか?一般的なプログラミング、特にオブジェクト指向プログラミングでは? また、可変および不変の状態とは何ですか-再び、一般的にプログラミングで、具体的にはOOPでも?
32 state 

5
関数型プログラミング:並行性と状態に関する正しいアイデア?
FP支持者は、パラダイムが可変状態を回避するため、並行性は簡単であると主張しています。わかりません。 FPを使用して、純粋な機能と不変のデータ構造を強調するマルチプレイヤーダンジョンクロール(ローグライクゲーム)を作成していると想像してください。部屋、廊下、ヒーロー、モンスター、戦利品で構成されるダンジョンを生成します。私たちの世界は、事実上、構造とそれらの関係のオブジェクトグラフです。物事が変化すると、世界の表現はそれらの変化を反映するように修正されます。私たちのヒーローはネズミを殺したり、短剣を拾ったりします。 私にとって、世界(現在の現実)はこの状態の考え方を持ち、FPがこれをどのように克服するのか見逃しています。ヒーローが行動を起こすと、機能が世界の状態を修正します。すべての決定(AIまたは人間)は、現在の世界の状態に基づいて行う必要があるようです。並行性はどこで許可しますか?複数のプロセスが並行して世界の状態を修正することはできません。1つのプロセスの結果が期限切れの状態に基づいていることはありません。世界の現在のオブジェクトグラフで表される現在の状態を常に処理しているように、すべての制御は単一の制御ループ内で行われるべきだと感じています。 明らかに、並行性に完全に適した状況があります(つまり、状態が互いに独立している孤立したタスクを処理する場合)。 私の例では並行性がどのように役立つかを確認できず、それが問題になる可能性があります。私は何らかの形で主張を誤って伝えているかもしれません。 誰かがこの主張をよりよく表現できますか?

1
MVVMで状態を管理するための良い正式なパターンはありますか?
私はウェブの世界でReduxとReactについて学び始めましたが、それについて学べば学ぶほど、WPFのMVVMスタイルのアーキテクチャ(特にビューをバインドするためにCaliburnを使用して) ViewModelsへ)。 Reduxには、状態の管理方法を指示するいくつかの簡単な原則があり、UIの更新、イベント処理、状態の変更をより予測可能にします。原則は次のとおりです。 単一の真実のソース(すべての可変状態は単一の共有オブジェクトに格納されます)。 状態は読み取り専用です。コード全体でコンポーネントによって変更することはできません。これは通常、WPFで発生することです。 状態は、純粋な関数によってのみ変更できます。 WPFのMVVMアーキテクチャを使用すると、インタラクティブビューを非常に迅速に構築できますが、さまざまなビューモデルやイベントがすべて状態を変更する場合のデバッグの問題は悪夢です。たとえば、ビューを変更してデフォルトのタブを設定しようとしたイベントが発生しましたが、Webサービスからのデータの非同期読み込みが完了していないため、タブはまだ存在しないため、何も起こりません 相互に更新する相互に関連するviewModelsコンポーネント間の複雑な相互作用を理解するために、私は何時間も図を描きました。 Reduxは、この状態の予測不可能性の一部を解決することを目指していることを理解しています。状態の管理を改善するために、WPFにうまく適合する類似の何か、またはアーキテクチャパターンがありますか?Reduxの原則が.NETでどの程度うまく機能するかは、まだ試していませんのでわかりません。おそらく誰かがいくつかのアドバイスを与えることができるいくつかの経験を持っていますか?
21 wpf  mvvm  state  redux 

2
有効な状態を維持するために、つまり、オブジェクトのデータメンバーを更新するために、クラスに1つの大きなプライベート関数を定義することをお勧めしますか?
以下のコードでは、eコマースサイトでの単純な単一アイテム購入を使用していますが、私の一般的な質問は、すべてのデータメンバーを更新して、オブジェクトのデータを常に有効な状態に保つことです。 関連するフレーズとして「一貫性」と「状態は悪」を見つけました。ここで説明します:https : //en.wikibooks.org/wiki/Object_Oriented_Programming#.22State.22_is_Evil.21 <?php class CartItem { private $price = 0; private $shipping = 5; // default private $tax = 0; private $taxPC = 5; // fixed private $totalCost = 0; /* private function to update all relevant data members */ private function updateAllDataMembers() { $this->tax = $this->taxPC * …

3
「状態」または「ステータス」?変数名に「状態」という単語を含めるべき場合と、変数名に「状態」という単語を含める必要がある場合 [閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 コードとコードに関連する議論を読んで、「状態」と「状態」という言葉が同じ意味で使われているのをよく目にしますが、次の傾向があるようです。 変数が何かが特定の状態にあることを示す値を保持している場合、その変数の名前には「状態」という単語またはその省略形が含まれていることがよくあります。 ただし、関数の戻り値がそのような状態を示すのに役立つ場合、その値を「ステータスコード」と呼ぶ傾向があります。そして、その値が変数に格納されると、この変数は一般に「ステータス」または類似の名前が付けられます。 単独では大丈夫だと思いますが、前述の変数が実際にはまったく同じである場合、英語(または人間の言語全般)の複雑な複雑さを含む選択を行う必要があります。 2つのあいまいさを解消する際の一般的なコーディング標準または慣習は何ですか?それとも、この2つのうちの1つを常に避けるべきですか? このenglish.stackexchangeの質問も関連があると思います。

4
副作用を処理するためのIOモナドパターンの利点は純粋にアカデミックですか?
さらに別のFP +副作用の質問で申し訳ありませんが、私にこれに完全に答える既存の質問を見つけることができませんでした。 関数型プログラミングの私の(限られた)理解は、状態/副作用を最小限に抑え、ステートレスロジックから分離する必要があるということです。 また、これに対するHaskellのアプローチであるIOモナドを収集します。IOモナドは、プログラム自体のスコープ外であると見なされる、後で実行するために、ステートフルアクションをコンテナにラップすることによってこれを実現します。 私はこのパターンを理解しようとしていますが、実際にはPythonプロジェクトで使用するかどうかを決定するため、Haskell固有の仕様を避ける必要があります。 原油の着信。 私のプログラムがXMLファイルをJSONファイルに変換する場合: def main(): xml_data = read_file('input.xml') # impure json_data = convert(xml_data) # pure write_file('output.json', json_data) # impure これを行うためのIOモナドのアプローチは効果的ではありません: steps = list( read_file, convert, write_file, ) その後、実際にそれらのステップを呼び出すのではなく、インタープリターにそれを行わせることで、責任を放棄しますか? または別の言い方をすれば、それは次のように書くことです: def main(): # pure def inner(): # impure xml_data = read_file('input.xml') json_data = convert(xml_data) write_file('output.json', json_data) return …

2
ステートフルライブラリ上の副作用のないインターフェイス
でジョン・ヒューズとのインタビュー彼はアーランとHaskellの語る、彼はErlangでステートフルなライブラリを使用することについて言うために、以下があります。 ステートフルライブラリを使用する場合は、通常、その上に副作用のないインターフェイスを構築し、残りのコードで安全に使用できるようにします。 これはどういう意味ですか?私はこれがどのように見えるかの例を考えようとしていますが、私の想像力や知識は私に失敗しています。

11
IllegalStateExceptionまたはサイレントメソッド実行の方が良いですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた3年前。 play()メソッドとstop()メソッドを持つMediaPlayerクラスがあるとします。playメソッドが以前に呼び出されていない場合にstopメソッドを実装するときに使用する最適な戦略は何ですか。2つのオプションがあります。プレーヤーが適切な状態にないために例外をスローするか、stopメソッドの呼び出しを静かに無視します。 ある状況でメソッドが呼び出されることは想定されていないが、その実行がプログラム全般に害を及ぼさない場合の一般的なルールは何でしょうか?

4
「状態」の定義
状態変数や状態マシンなどの「状態」を新しい(以前は非)プログラマーに定義する良い方法は何ですか?この概念がソフトウェアの作成に役立つ理由を説明する良い方法は何ですか?状態の概念は、プログラミングコースや書籍の開始時に一般的に明示的に教えられていますか?

4
基本的なハードウェアと機能的パラダイムがあまりにも異なるため、一般的に効率的ではないでしょうか?
SOからの質問に触発された:https : //stackoverflow.com/questions/6623391/how-to-gain-control-of-a-5gb-heap-in-haskell FPの多くの長所と短所については長い議論の余地がありますが、現時点では、最新のハードウェアでのFPの主な効率に範囲を絞りたいと思います。 定説: 機能的パラダイムは不変性とステートレス(?)を意味しますが、機能的プログラムを実行するハードウェアはステートフルな有限オートマトンです。「純粋な機能」プログラムを「ステートフルなハードウェア」表現に変換すると、プログラマーはほとんど制御できず、オーバーヘッド(?)が発生し、ハードウェア機能の使用が制限されます(?)。 私は疑問の声明で正しいか間違っていますか? FPは、現代の汎用コンピューターアーキテクチャでの主要なパフォーマンスペナルティを意味する/しないことを証明できますか? 編集: いくつかのコメントに応じて既に述べたように、質問は実装のパフォーマンスと詳細に関するものではありません。これは、プリンシパルオーバーヘッドの有無に関するものであり、ステートフルオートマトンでFPを実行するともたらされる可能性があります。

5
*どんな*プログラムタスクも状態なしで表現できますか?
これは理論的な質問ですが、私が現在理解しているプログラミングの長年の後に、主にC ++を使用する「通常の」命令型テクニックです。 これにより、完全に状態指向のプログラムを、純粋に機能的で状態のない別の実装に技術的に置き換えることができるのではないかと思いました。 それは興味をそそるアイデアであり、関数型プログラミングには明確で優雅なものがあることを認めなければなりません。

1
静的メソッドを悪用していますか?
数ヶ月前、私は新しいプロジェクトで働き始めました。コードを調べてみると、使用されている静的メソッドの量が多くなりました。としてのユーティリティメソッドだけcollectionToCsvString(Collection<E> elements)でなく、多くのビジネスロジックも保持されます。 私はこの背後にある理論的根拠の責任者に尋ねたとき、彼はそれが春の専制政治から逃げる方法だと言った。この思考プロセスに何かがあります:顧客の領収書作成方法を実装するために、サービスがあります @Service public class CustomerReceiptCreationService { public CustomerReceipt createReceipt(Object... args) { CustomerReceipt receipt = new CustomerReceipt(); // creation logic return receipt; } } さて、この男は、基本的にはクライアントクラスがSpring Beanでなければならないという制限を課しているため、Springによって不必要に管理されるクラスを持つことを嫌うと言いました。最終的にすべてをSpringで管理することになります。これにより、手順を踏まずにステートレスオブジェクトを操作する必要が生じます。ここに記載されている内容は多かれ少なかれhttps://www.javacodegeeks.com/2011/02/domain-driven-design-spring-aspectj.html したがって、上記のコードの代わりに、彼は public class CustomerReceiptCreator { public static CustomerReceipt createReceipt(Object... args) { CustomerReceipt receipt = new CustomerReceipt(); // creation logic return receipt; } } …

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