거짓 동안 행하십시오
오늘 직장에서 동료 중 한 명이 수행하는 동안 유스 케이스를 설명하고있었습니다 (거짓). 그가 말한 사람은 이것이 어리 석고 단순한 if 문이 훨씬 나을 것이라고 생각했습니다. 그런 다음 하루의 절반을 낭비하여 다음과 같은 내용을 쓰는 가장 좋은 방법을 논의했습니다.
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);
이것은 c에서 자주 발견되는 관용구입니다. 프로그램은 조건에 따라 아래 의사 코드와 동일한 출력을 생성해야합니다.
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
따라서 입력은 다음과 같습니다.
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
출력은 다음과 같아야합니다.
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
이것은 코드 골프이므로 답은 바이트로 판단됩니다. 표준 허점은 금지되어 있습니다.
예, 이것은 간단한 것이지만, 희망적으로 우리는 창의적인 답을 보게 될 것입니다. 단순함이 사람들이 덜 자신감있는 언어를 사용하도록 장려하기를 바랍니다.
return result대신에 방법을 사용하여 동일한 것을 수행 할 수있는 것 같습니다 break. 그런 다음 재사용 성 및 호출 코드 단순화의 이점도 얻을 수 있습니다. 하지만 아마도 뭔가 빠졌을 것입니다.
goto사용하는 goto것이 좋지 않기 때문에 대신이 작업을 수행합니다 :)
do{}while(false)은 매크로 내부입니다. 간단한 if것은 충분하지 않습니다 else. 존재하는 주변의 s 와 잘못 상호 작용하기 때문 입니다. 매크로없이 당신은뿐만 아니라 제거 할 수 있습니다 do와 while.