For-Case Antipattern nedir?


17

Bugünün TDWTF makalesi yazarın itirafıyla başlıyor:

For-Case anti-paterninin nispeten yakın zamana kadar, onu anti-patern olarak kınayan bir sürü eşya olduğunda ne olduğunu bilmiyordum. Ben muhtemelen eminim kullanılan bir noktada, bunu, ama ben bunu bilmiyordum isim . Genellikle döngü, vaka ifadeleri, çözülen problem veya her üçünün bir kombinasyonunu yanlış anlama anlamına gelen bir ders kitabı antipatterni olarak düşünülür.

Daha sonra okuyucu, doğal olarak, For-Case anti-paterninin ne olduğunu daha fazla açıklamaya gerek olmadan biliyormuş gibi ilerliyor.

Ama istemiyorum! Remy'in bahsettiği "makalelerin akıntısını" görmedim ve Google'da bulabileceğim tek önemli referans (Remy'nin makalesinin yanı sıra), Raymond Chen tarafından for-if antipattern hakkında bir blog yazısı. . Yine de "durum-karşıtı" tanımlamıyor.

Bu adamların bahsettiği "For-Case anti-pattern" nedir ve onu anti-pattern yapan nedir?



Yanıtlar:


23

"Desen" daha önceki bir Daily WTF makalesinde tanıtıldı . Temel fikir, bir olması forbir ile döngü caseseçer dayalı bunun iç fordöngü indeksi değişken.

Dizin değişkeninin döngü içinde değiştirilemeyeceğini varsayarsak (hangi dili kullandığınıza bağlı olarak her zaman doğru değildir), biraz analiz yürütmenin forve casetamamen kaldırdığınızla aynı olduğunu gösterir. ve tüm vaka blokları basitçe ardışık olarak yürütüldü.


0

Basitçe söylemek gerekirse, kodun anlaşılmasını zorlaştıran iki farklı akış kontrol yöntemini iç içe geçiriyorsunuz.

For döngüsü görürseniz, genellikle döngü koşullarının döngü içindeki mantığı kontrol edeceğini varsayarsınız. Fakat daha sonra kendi mantığıyla birlikte bütün bir vaka deyimini iç içe yerleştirirseniz, bu pencereden dışarı çıkar.


1
İki kontrol akış yapısını iç içe yerleştirmenin doğasında yanlış bir şey yoktur. Bazen ihtiyacın var. Ancak bu durumda işe yaramaz.
Monica'yı

"bu da kodun anlaşılmasını zorlaştırır." Çocuk, o gün / ay / yılın yetersizliği.
Peter Rowell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.