कभी-कभी एक एल्गोरिथ्म को दो तरीकों से लिखा जा सकता है:
- छोटा, फैंसी तरीका; या
- लंबा, आसान तरीका।
उदाहरण के लिए, C में स्ट्रिंग source
को कॉपी करने का एक लंबा, आसान तरीका dest
है:
*dest = *source;
while (*source != '\0') {
source++;
dest++;
*dest = *source;
} (true);
और यहाँ एक छोटा, फैंसी तरीका है।
// Copy string source to dest
while (*dest++ = *source++);
मैंने हमेशा सुना है और पढ़ा है कि फैंसी कोड से बचा जाना चाहिए, और मैं सहमत हूं। लेकिन क्या होगा अगर हम टिप्पणियों को ध्यान में रखते हैं? मान लें कि, ऊपर के उदाहरणों की तरह, हमारे पास एक असंबद्ध, लंबा और माना जाने वाला आसान-से-समझने वाला कोड है, और एक अच्छी तरह से टिप्पणी की गई, संक्षिप्त, फैंसी कोड है? क्या गैर-फैंसी कोड अभी भी पसंद किया जाता है?
संपादित करें: कई लोगों ने चर नामों पर टिप्पणी की है, इसलिए मैंने उदाहरण कोड को संशोधित किया है ताकि दूसरे पर पसंद करने पर वह कारक न बने। मैंने पहले उदाहरण में दोहरे असाइनमेंट को हटाने की कोशिश की, लेकिन इसने केवल कोड को कम पठनीय बनाया।
शायद यह सबसे अच्छा उदाहरण नहीं था क्योंकि कई लोग 'फैंसी' कोड को लंबे कोड की तुलना में अधिक पठनीय और समझने योग्य पाते हैं। विचार के लिए एक लंबा कोड होना चाहिए जो कि बहुत ही कम लेकिन जटिल कोड की तुलना में समझने में बहुत आसान था।
EDIT2: यहाँ एक नया परीक्षा है जो मुझे 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;
}