때때로 알고리즘은 두 가지 방식으로 작성 될 수 있습니다.
- 짧고 멋진 길; 또는
- 더 길고 이해하기 쉬운 방법.
예를 들어, C에서 문자열 source
을 복사하는 길고 쉬운 방법은 dest
다음과 같습니다.
*dest = *source;
while (*source != '\0') {
source++;
dest++;
*dest = *source;
} (true);
여기에 짧고 멋진 방법이 있습니다.
// Copy string source to dest
while (*dest++ = *source++);
나는 항상 멋진 코드를 피해야한다는 말을 듣고 읽었으며 동의하는 경향이 있습니다. 그러나 의견을 고려하면 어떻게 될까요? 위의 예에서와 같이 주석 처리되지 않은, 더 길고 이해하기 쉬운 코드와 잘 작성된 짧고 멋진 코드가 있다고 가정하십시오. 비 팬시 코드가 여전히 선호됩니까?
편집 : 많은 사람들이 변수 이름에 대해 언급 했으므로 다른 예제를 선호 할 때 그 요소를 고려하지 않도록 예제 코드를 수정했습니다. 첫 번째 예제에서 이중 할당을 제거하려고 시도했지만 코드를 읽기 어렵게 만들었습니다.
아마도 많은 사람들이 '팬시'코드가 더 긴 코드보다 더 읽기 쉽고 이해하기 쉽기 때문에 이것이 최상의 예가 아닐 수도 있습니다. 아이디어는 매우 짧지 만 복잡한 코드보다 이해하기 훨씬 쉬운 하나의 긴 코드를 갖는 것이 었습니다.
EDIT2가 : 저는 여기에서 가져온 새로운 examle의 SO :
멋진 버전의 댓글 :
//direct formula for xoring all numbers from 1 to N
int Sum = (N & (N % 2 ? 0 : ~0) | ( ((N & 2)>>1) ^ (N & 1) ) );
주석 처리되지 않은 긴 버전 :
int Sum = 0;
for (int i = 1; i < N; ++i)
{
Sum ^= i; //or Sum = Sum ^ i;
}