For-Case Antipatternとは何ですか?


17

今日のTDWTFの記事は、著者からの告白から始まります。

For-Caseアンチパターンが何であるかは、比較的最近まで、アンチパターンとして非難する記事が相次いだときまで知りませんでした。おそらくある時点で使用したと思いますが、名前でそれを知らなかったのです。これは、一般にforループ、caseステートメント、解決される問題、または3つすべての組み合わせの誤解を意味する教科書のアンチパターンと考えられています。

それから、読者は、当然のことながら、For-Caseアンチパターンが何であるかを知っているかのように進み、それ以上の説明は必要ありません。

しかし、私はしません!Remyが語る「一連の記事」を見たことはありません。Googleで見つけることができる唯一の重要な参照(Remyの記事以外)は、for-ifアンチパターンに関するRaymond Chenのブログ投稿です。 。しかし、彼は「for-case anti-pattern」も定義していません。

これらの人々が話しているこの「For-Caseアンチパターン」とは何ですか?



3
これは、一般的として知られている(と検索エンジンを経由して見つけやすい)などのループスイッチアンチパターン
デビッドアルノ

回答:


23

「パターン」は、以前のDaily WTFの記事で紹介されました。 基本的な考え方は、ループインデックス変数に基づいて選択するforループがcase内部にあるということforです。

インデックス変数と仮定すると、分析のビットを削除したかのように実行はまったく同じであることを実証している(これはあなたが使用している言語に応じて、常に真ではない)ループ、内部で変更することはできませんforし、case完全にそして、すべてのケースブロックは単に連続して実行されました。


0

簡単に言うと、2つの異なるフロー制御メソッドをネストしているため、コードが理解しにくくなります。

forループが表示される場合、通常、ループ条件がループ内のロジックを制御すると想定します。しかし、独自のロジックをすべて使用して、caseステートメント全体を内部にネストすると、ウィンドウの外に出てしまいます。


1
2つの制御フロー構造をネストすることに本質的に問題はありません。時にはあなたがする必要があります。しかし、この場合は役に立ちません。
モニカを

「これによりコードが理解しにくくなります。」少年、それは日/月/年の控えめな表現です。
ピーターローウェル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.