Apa itu Antipattern For-Case?

17

Artikel TDWTF hari ini dimulai dengan pengakuan dari penulis:

Saya tidak tahu apa anti-pola For-Case sampai relatif baru-baru ini, ketika ada serentetan artikel yang mengutuknya sebagai anti-pola. Saya yakin saya mungkin pernah menggunakannya , pada titik tertentu, tetapi saya tidak pernah tahu namanya . Ini dianggap sebagai antipattern buku teks yang umumnya menyiratkan kesalahpahaman untuk loop, pernyataan kasus, masalah yang diselesaikan, atau kombinasi dari ketiganya.

Dia kemudian melanjutkan seolah-olah pembaca, tentu saja, tahu apa pola anti-kasing tanpa penjelasan lebih lanjut diperlukan.

Tapi saya tidak melakukannya! Saya belum melihat "serentetan artikel" yang dibicarakan Remy, dan satu-satunya referensi signifikan yang dapat saya temukan di Google (selain artikel Remy) adalah posting blog oleh Raymond Chen tentang antiputern for-if , yang tampaknya terkait . Tapi dia juga tidak mendefinisikan "pola anti-pola".

Apa ini "For-Case anti-pattern" yang dibicarakan orang-orang ini, dan apa yang membuatnya menjadi anti-pola?

Mark Amery
sumber
3
Ini umumnya dikenal sebagai (dan lebih mudah ditemukan melalui mesin pencari) sebagai loop-switch anti-pattern
David Arno

Jawaban:

23

"Pola" diperkenalkan dalam artikel WTF harian sebelumnya. Ide dasarnya adalah bahwa Anda memiliki forloop dengan casebagian dalamnya yang memilih berdasarkan forvariabel indeks loop.

Dengan asumsi variabel indeks tidak dapat diubah di dalam loop, (yang tidak selalu benar, tergantung pada bahasa yang Anda gunakan), sedikit analisis menunjukkan bahwa eksekusi persis sama seperti jika Anda menghapus fordan casesepenuhnya dan semua blok kasus hanya dieksekusi secara berurutan.

Mason Wheeler
sumber
0

Sederhananya, Anda menggunakan dua metode kontrol aliran yang berbeda, yang membuat kode lebih sulit untuk dipahami.

Jika Anda melihat for loop, Anda biasanya mengasumsikan bahwa kondisi loop akan mengontrol logika di dalam loop. Tetapi jika Anda kemudian membuat pernyataan seluruh kasus di dalam, dengan semua logikanya sendiri, itu keluar jendela.

Satanicpuppy
sumber
1
Secara inheren tidak ada yang salah dengan bersarangnya dua struktur aliran kontrol. Terkadang Anda perlu melakukannya. Tetapi dalam hal ini tidak ada gunanya.
Pasang kembali Monica
"Yang membuat kode lebih sulit dimengerti." Boy, apakah itu pernah meremehkan hari / bulan / tahun.
Peter Rowell