İşteki eski sistemimizde bunu çok gördüm - böyle bir şey yapan işlevler:
bool todo = false;
if(cond1)
{
... // lots of code here
if(cond2)
todo = true;
... // some other code here
}
if(todo)
{
...
}
Başka bir deyişle, işlevin iki bölümü vardır. İlk bölüm bir tür işlem yapar (potansiyel olarak döngüler, yan etkiler vb.) Ve yol boyunca "yapılacak" bayrağını ayarlayabilir. İkinci bölüm yalnızca "yapılacak" bayrağı ayarlanmışsa yürütülür.
Bir şeyler yapmak için oldukça çirkin bir yol gibi görünüyor ve bence aslında anlamaya zaman ayırdığım vakaların çoğu, bayrağı kullanmaktan kaçınmak için yeniden düzenlenebilir. Ama bu gerçek bir anti-desen, kötü bir fikir mi yoksa tamamen kabul edilebilir mi?
İlk belirgin yeniden düzenleme, onu iki yönteme ayırmak olacaktır. Bununla birlikte, sorum daha çok yerel bir bayrak değişkeni yaratmaya (modern bir OO dilinde) ihtiyaç duyup duymayacağı, potansiyel olarak birden çok yere ayarlayıp, daha sonra bir sonraki kod bloğunun yürütülüp yürütülmeyeceğine karar vermek için kullanılmasıyla ilgili.
["blacklisted-domain","suspicious-characters","too-long"]
, birkaç nedenin uygulandığını gösteren bir liste ile bitebilirsiniz.