أكاديمية الترميز السيئة: الخطوط الجديدة والمسافات والمسافات البادئة

مرحبا هبر! أقدم انتباهكم إلى ترجمة المقالة "أكاديمية نمط الرمز المظلمة: فواصل الأسطر ، والتباعد ، والمسافة البادئة" من قبل المؤلفزيكين 2207



صورة



مرحبا الناس! اسمحوا لي أن أكمل مع أكاديمية كود سيئة لدينا. في هذا المنشور ، سنكشف عن طريقة أخرى لإبطاء قراءة الكود الخاص بك. يمكن أن تساعدك الحيل التالية في تقليل فهمك لشفرتك وزيادة فرص حدوث أخطاء فيها. جاهز؟ لنبدأ.



يمكن أن تقتل فواصل الأسطر والمسافات والمسافات البادئة.



كيف يقرأ الناس الكتب؟ من أعلى إلى أسفل ومن اليسار إلى اليمين (على الأقل في معظم الحالات). يحدث الشيء نفسه عندما يقرأ المطورون الكود. يجب أن يحتوي سطر واحد من التعليمات البرمجية على فكرة واحدة ، لذلك يجب أن يحتوي كل سطر على أمر واحد فقط. إذا كنت تريد إحراج مطورين آخرين ، فمن الأفضل أن تنتهك هذه الإرشادات. واسمحوا لي أن أريكم كيفية القيام بذلك.



المثال رقم 1



انظر إلى هذا الجزء من الكود. فكرة واحدة في سطر واحد. الرمز نظيف للغاية يجعلني أشعر بالمرض.



return elements
    .Where(element => !element.Disabled)
    .OrderBy(element => element.UpdatedAt)
    .GroupBy(element => element.Type)
    .Select(@group => @group.First());


يمكننا دمج جميع العبارات في سطر واحد ، لكن ذلك سيكون سهلاً للغاية. في هذه الحالة ، سوف يفهم دماغ المطور أن هناك شيئًا خاطئًا ، وسوف يقسم المشغلين من اليسار إلى اليمين. سهل جدا!



من الأفضل الاحتفاظ ببعض العبارات على نفس السطر والبعض الآخر لتقسيمها. الخيار الأفضل هو عندما لا يلاحظ المطور حتى بعض المشغلين ، مما سيؤدي إلى سوء الفهم وفي النهاية إلى حدوث خطأ. خيار آخر هو تقليل فهمه لهذا الرمز ببطء حتى يصرخ ، "ما هذا بحق الجحيم!؟"



return elements.Where(e => !e.Disabled)
    .OrderBy(e => e.UpdatedAt).GroupBy(e => e.Type)
    .Select(g => g.First());


كيف يعجبك هذا؟ يمكنك إضافة بعض المسافة البادئة حتى يقوم المطورون الآخرون بتنسيق التعليمات البرمجية الخاصة بك لعقود إذا كانوا بحاجة إلى إعادة تسمية متغير العناصر.



return elements.Where(e => !e.Disabled)
               .OrderBy(e => e.UpdatedAt).GroupBy(e => e.Type)
               .Select(g => g.First());


أرسل لي بطاقة بريدية إذا تمت مراجعة هذا الأسلوب من قبل فريقك.



نصيحة : اترك عبارتين في سطر واحد واثنين في سطور منفصلة.



مثال رقم 2



تمامًا نفس الفكرة هنا. هذا هو الكود الوحيد الذي تراه كثيرًا.



var result = 
    (condition1 && condition2) || 
    condition3 || 
    (condition4 && condition5);


الإجراء هو نفسه. أسطر منفصلة لإرباك القارئ قدر الإمكان. العب قليلاً مع الأسطر الجديدة للحصول على أفضل نتيجة.



var result = (condition1 && condition2) || condition3 || 
    (condition4 && condition5);


وأضف بعض المسافة البادئة لجعل الشفرة تبدو طبيعية.



var result = (condition1 && condition2) || condition3 || 
             (condition4 && condition5);


تذكر ، يجب أن توازن بين عدم وضوح الكود الخاص بك ومصداقية أسلوبك.



نصيحة : العب مع الخطوط الجديدة للحصول على أفضل النتائج.



مثال # 3



ماذا عن هذا؟



if (isValid) 
{ 
    _unitOfWork.Save();
    return true; 
} 
else 
{ 
    return false; 
} 


نفس المشكلة ولكن من ناحية أخرى. هنا ، سيكون الخيار الأفضل هو دمج العوامل في سطر واحد ، بالطبع ، عن طريق وضع الأقواس المتعرجة.



if (isValid) { _unitOfWork.Save(); return true; } else { return false; } 


لن ينجح هذا النهج إلا إذا كان لديك القليل من العبارات في الكتل حينئذٍ وغير ذلك. خلاف ذلك ، قد يتم رفض الرمز الخاص بك في مرحلة مراجعة التعليمات البرمجية.



نصيحة : ادمج عبارات if / for / foreach الصغيرة في سطر واحد.



المثال رقم 4



80 حرفًا في كل سطر هو المعيار الحالي الموصى به. يتيح لك هذا الحفاظ على تركيز المطور أثناء قراءته للكود. علاوة على ذلك ، يمكنك فتح مستندين في نفس الوقت على نفس الشاشة عند الحاجة ، مما يترك لك مساحة لمستكشف الحلول.



bool IsProductValid(
    ComplexProduct complexProduct, 
    bool hasAllRequiredElements, 
    ValidationSettings validationSettings)
{
    // code
}


أسهل طريقة لإبطاء قراءة الكود الخاص بك هي جعل المطورين الآخرين يقومون بتمرير الكود الخاص بك أفقيًا. فقط تجاهل قاعدة الـ 80 حرفًا.



bool IsProductValid(ComplexProduct complexProduct, bool hasAllRequiredElements, ValidationSettings validationSettings)
{
    // code
}


الأمر سهل للغاية: ننسى ما حدث قبل أن تبدأ في التمرير ، أو تخطي السطر الذي بدأت فيه. خدعة رائعة.



نصيحة : عن قصد ، تجاهل قاعدة الـ 80 حرفًا.



مثال رقم 5: يعد



السطر الفارغ في المكان المناسب أداة قوية لتجميع التعليمات البرمجية الخاصة بك وجعلها تقرأ بشكل أسرع.



ValidateAndThrow(product);

product.UpdatedBy = _currentUser;
product.UpdatedAt = DateTime.UtcNow;
product.DisplayStatus = DisplayStatus.New;

_unitOfWork.Products.Add(product);
_unitOfWork.Save();

return product.Key;


يمكن أن يساعدك سطر فارغ في المكان الخطأ ، بالإضافة إلى النصائح الأخرى الواردة في هذه المقالة ، في حفظ عملك. أي سطر فارغ تفضل؟



ValidateAndThrow(product);
product.UpdatedBy = _currentUser;
product.UpdatedAt = DateTime.UtcNow;

product.DisplayStatus = DisplayStatus.New;
_unitOfWork.Products.Add(product);

_unitOfWork.Save();
return product.Key;


نصيحة : أدخل الأسطر الفارغة بشكل عشوائي.



مثال # 6



عندما تلتزم بمستودع ما ، لديك فرصة ضئيلة لمعرفة ما ستلتزم به بالضبط. لا تفعل ذلك! لا بأس إذا قمت بإضافة سطر فارغ إضافي مثل هنا.



private Product Get(string key) 
{
    // code
}

private void Save(Product product) 
{
    // code
}


أو ، من الأفضل ، إضافة بضع مسافات على سطر فارغ (لفهم الاختلاف ، حدد السطر الخامس).



private Product Get(string key) 
{
    // code
}
    
private void Save(Product product) 
{
    // code
}


لماذا تحتاج هذه؟ يستمر الرمز في العمل (لكنه ليس مؤكدًا). ستستمر في فهم شفرتك ، لكن المطور الآخر لن يفهم شفرتك كثيرًا. لا يمكنك فقط إضافة القليل من المسافات البيضاء إلى الطرق الشائعة في وقت واحد (مراجعات الكود هي عدونا) ، ولكن استخدام هذه الممارسة سيخلق فوضى بعد أسبوعين من التطوير النشط.



فائدة أخرى إضافية لاستخدام مسافات إضافية في سلسلة هي عندما يلتزم المطورون الآخرون بوظائف ذات صلة ، يمكن لـ IDE تصحيح التنسيق تلقائيًا. في مراجعة الكود ، سيشاهدون ألف خط أحمر وأخضر. إذا فهمت ما أعنيه ؛)



لنفس السبب ، يمكنك إعداد علامات تبويب في IDE الخاص بك إذا كنت تستخدم مسافات في مشروعك ، والعكس صحيح.



نصيحة : لا تنظر إلى الكود قبل الالتزام.



المثال رقم 7:



تجاوز هؤلاء المطورين الذين قد يرون مسافات إضافية في الكود. إنهم يشكلون خطرا على حياتك المهنية.



product.Name = model.Name;
product.Price = model.Price;
product.Count =  model.Count;


نصيحة : اعرف عدوك.



من الصعب جعل شفرتك غير مدعومة. عندما تتراكم العديد من المشاكل الصغيرة ، فإنها تنمو بدون مشاركتك. سيقوم المطورون الشباب بكتابة التعليمات البرمجية الخاصة بهم وفقًا للقوالب الخاصة بك. ذات يوم ، أثناء مراجعة الكود ، تسمع "ما هذا بحق الجحيم؟" من قائد فريقك ، وستتمكن هنا من استخدام العبارة الشائعة: "ماذا؟ نحن نفعل هذا دائمًا "، ونعرض له آلاف الأماكن في الكود حيث تتم كتابته بنفس الطريقة.



إستمتع.



All Articles