Yanlış Yaparken Yapın
Bugün işteyken meslektaşlarımdan biri, kullanım sırasındaki kullanım durumunu açıklıyordu (yanlış). Konuşmakta olduğu kişi bunun aptalca olduğunu ve ifadelerin daha iyi olacağını düşünüyorsanız basit olduğunu düşündü. Daha sonra, eşdeğer bir şeyler yazmak için en iyi yolu tartışarak günün yarısını boşa harcadık:
do
{
//some code that should always execute...
if ( condition )
{
//do some stuff
break;
}
//some code that should execute if condition is not true
if ( condition2 )
{
//do some more stuff
break;
}
//further code that should not execute if condition or condition2 are true
}
while(false);
Bu oldukça sık c bulunan bir deyimdir. Programınız koşullara bağlı olarak aşağıdaki sözde kodla aynı çıktıyı üretmelidir.
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
Bu nedenle girdi şöyle olabilir:
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
ve çıktı şöyle olmalıdır:
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
Bu kod-golf olduğundan cevaplar bayt olarak değerlendirilecektir. Standart boşluklar yasaklandı.
Evet, bu basit bir sorundur, ancak umarım bazı yaratıcı cevaplar göreceğiz, basitliğin insanları daha az güvendikleri dilleri kullanmaya teşvik edeceğini umuyorum.
return result
yerine break
. Sonra yeniden kullanılabilirlik ve arama kodunu basitleştirmenin bonuslarını alıyorsunuz. Ama belki bir şeyleri özlüyorum.
goto
kullanıyorlar çünkü goto
kötü bir form kullanıyor :)
do{}while(false)
makroların içinde. Bir basit if
yeterli değildir, çünkü else
etrafta bulunanlarla kötü etkileşime girer . Bir makro olmadan siz de kaldırabilir do
ve while
.