問題タブ [anti-patterns]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
510 参照

design-patterns - 提案:アンチパターンの反例

この正確な質問は以前に尋ねられたことがないようですので、私は解雇します:

私たちのほとんどは、アンチパターンの概念に精通しています。ただし、アンチパターンの実装を回避すると、原則として、逆方向に大きく振れすぎて、問題自体が発生する可能性があります。例として、「委員会による設計」には、私が「マーベリックによる設計」と呼ぶ反例があります。重要な機能の設計は、レビューを目的として、個人が最もよく考えることを行うために個人に渡されます。彼らの仕事は後で、それを完成させるべきか、それとも別の反復を経るべきかを決定します。チームの他のメンバーが他のことに専念しているため、これには実際にははるかに長い時間がかかり、特にMaverick自体が経験豊富なエンドユーザーでない場合は、誰にも役立たない機能になってしまう可能性があります。

アンチパターンの反例の例は他にありますか?

0 投票する
1 に答える
76 参照

api - インターフェイスではなく抽象クラスを使用してパラメータ化する場合はありますか?

私は現在、非常にステートフルなコンポーネントベースのAPIを開発しています。トップレベルのコンポーネントは、それぞれ約12のインターフェイスを実装します。

したがって、ストックのトップレベルコンポーネントは、複数のミックスイン実装を含み、複数のミックスインインターフェイスを実装する抽象実装のスタックの上に配置されます。

これまでのところ、とても良いです(私は願っています)。

問題は、基本機能の実装が非常に複雑であるため(5層の基本クラスに1,000行)、コンポーネントライターがインターフェイス自体を実装するのではなく、基本クラス(すべてのボイラーが存在する場所)を拡張することを望んでいることです。プレートコードはすでに書かれています)。

したがって、APIが、コンポーネントライターに拡張してほしい抽象実装への参照ではなくインターフェイスを受け入れる場合、実装者が他のコード領域で必要とされる検証を実行しないリスクがあります。

したがって、私の質問は、APIメソッドが実装するインターフェイスへの参照ではなく、抽象的な実装参照を使用してAPIメソッドをパラメーター化することが有効な場合があるということです。

この手法を使用する適切に設計されたAPIの例がありますか、それとも私は自分自身を悪い習慣に話そうとしていますか?

0 投票する
4 に答える
1242 参照

c++ - いくつかの変更を加えて、例外のアンチパターンを危険にさらす..

特定のマシンで 24 時間年中無休で実行されるライブラリがあるとします。コードがしっかりしていても、遅かれ早かれハードウェア障害によって例外が発生する可能性があります。このようなイベントに備えて、何らかのフェールセーフを配置したいと考えています。1 つのアプローチは、各 API をカプセル化するラッパー関数を作成することです。

次に、ライブラリの呼び出し元がスレッド全体を再起動し、returnCode が正しくない場合はモジュールを再初期化します。

物事はひどくうまくいかない可能性があります。例えば

try ブロック (または libraryAPI1()) が次の場合:

func2() が例外をスローすると、x は決して解放されません。同様に、ファイルの破損も考えられる結果です。

このシナリオで他に何が問題になる可能性があるか教えてください。

0 投票する
6 に答える
510 参照

anti-patterns - 同じクラスの他のメソッドを呼び出すメソッド

クラス設計では、あるメソッドが同じクラスの別のメソッドを呼び出すのは悪い習慣ですか(たとえば、3つのメソッドが同じクラスの1つのメソッドを呼び出す)。

ありがとう

0 投票する
1 に答える
173 参照

naming - アルゴリズムのアンチパターンの命名

線形的に解ける場合、二次複雑さで何かを行うことの名前を思い出すのに問題があります。

たとえば、get-by-index単に a を使用する代わりに関数を使用してリンク リストを反復処理することnext-elementは、このアンチパターンの典型的なケースです。

道路を塗装しているが、ペンキのバケツを持ち運ばず、ブラシを補充する必要があるたびに出発点に戻らなければならない男の比喩として、それは「何かの画家」だったと思います。

乾杯。

0 投票する
6 に答える
13037 参照

php - PHP でのシングルトンの拡張

私は Web アプリ フレームワークで作業しており、その一部は多数のサービスで構成されており、すべてシングルトンとして実装されています。それらはすべて、シングルトンの動作が実装されている Service クラスを拡張し、次のようになります。

さて、次のように実装された FileService というクラスがあるとします。

... FileService::getInstance() を呼び出しても、必要なように FileService インスタンスは生成されませんが、Service インスタンスが生成されます。ここでの問題は、Service コンストラクターで使用される「self」キーワードにあると思います。

ここで私が望むものを達成する他の方法はありますか? シングルトン コードは数行しかありませんが、できる限りコードの冗長性を避けたいと考えています。

0 投票する
14 に答える
2615 参照

c# - variable = null の「オブジェクト破壊」はどこから来たのですか?

さまざまなバージョンの .NET で記述された多くのレガシー システムに取り組んでいて、さまざまな企業にまたがって、次のパターンの例を見つけ続けています。

.NET でメモリ管理がどのように機能するかを知っている人にとって、この種のコードは非常に不要です。nullガベージ コレクターは、古いオブジェクトを収集できることを伝えるために手動で割り当てる必要はありません。割り当てnullによって、オブジェクトをすぐに収集するように GC に指示することもありません。

このパターンは単なるノイズであり、コードが何を達成しようとしているのかを理解するのが難しくなります。

では、なぜ私はこのパターンを見つけ続けるのでしょうか? この習慣を教えている学校はありますか?nullメモリを正しく管理するために、ローカル スコープの変数に値を割り当てる必要がある言語はありますか? null私が認識していない明示的な割り当てに追加の価値はありますか?

0 投票する
2 に答える
824 参照

java - でヌル値を処理する方法