アルゴリズムは2つの方法で記述できる場合があります。
- 短く、派手な方法。または
- より長く、理解しやすい方法。
たとえば、Cに文字列source
をコピーする、より長く簡単な方法を次に示しますdest
。
*dest = *source;
while (*source != '\0') {
source++;
dest++;
*dest = *source;
} (true);
そして、ここに短い、派手な方法があります。
// Copy string source to dest
while (*dest++ = *source++);
私はいつも派手なコードを避けるべきだと聞いて読んでおり、私は同意する傾向があります。しかし、コメントを考慮するとどうなりますか?上記の例のように、コメントのない、より長く、おそらく理解しやすいと思われるコードと、コメントの良い、短い、派手なコードがあるとしますか?派手なコードはまだ優先されますか?
編集:多くの人が変数名についてコメントしているので、他のコードよりも優先する場合に要因にならないようにサンプルコードを変更しました。最初の例では二重の割り当てを削除しようとしましたが、コードが読みにくくなりました。
おそらく、これは最良の例ではありませんでした。なぜなら、多くの人は、長いコードよりも「派手な」コードの方が読みやすく理解しやすいためです。アイデアは、非常に短いが複雑なコードよりもはるかに理解しやすい1つの長いコードを持つことでした。
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;
}