هل تسمية الاتفاقيات تجعل رمزًا يمكن صيانته بشكل أفضل؟

StackOverflow https://stackoverflow.com/questions/3930388

سؤال

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

public class Account
{
    public decimal Balance { get; set; }
}

Account account = new Account();
account.Balance = 1000;

قد يختار بعض الناس الذهاب لما يلي ، وهو أمر لا معنى لي حقًا ، إلا إذا كنت طباعًا كسولًا.

Account acc = new Account();
acc.Balance = 1000;

المشكلة هي عندما يكون لديك منطق مع هذه الاختصارات. تشعر بالارتباك الشديد فيما يحدث.

تخيل الأشياء التالية.

public class Account { public DebitOrder DebitOrder { get; set; } }
public class DebitOrder { BankDetail BankDetail { get; set; } }
public class BankDetail {}

Account acc = new Account();
DebitOrder do = new DebitOrder();
BankDetail bd = new BankDetail();

if(acc.DebitOrder.SomeProperty == do.SomeProperty)
{

}

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

هل تسمية الاتفاقيات تجعل رمزًا يمكن صيانته بشكل أفضل؟

هل كانت مفيدة؟

المحلول

نعم, ، بالطبع اتفاقيات التسمية تجعل رمزًا يمكن صيانته بشكل أفضل.

لهذا السبب ، في يومك الأول في فصل البرمجة ، سيضربك المحاضر إذا اتصلت بمتغير X ، أو ...

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

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

نصائح أخرى

نعم ، لأي متغير ليس لديه نطاق محدود للغاية.

عندما يكون نطاق المتغير محدودًا للغاية ، وعندما يدور الرمز حول هذا المتغير ، يمكنك الابتعاد عن اسم متغير رمي.

على سبيل المثال ، يمكن أن يكون للعداد في حلقة اسم بسيط إذا كان جسم الحلقة صغيرًا ولم يكن للعداد أي معنى آخر:

for (int i = 0; i < 10; i++) arr[i] = 0;

يمكن أن تكون تعبيرات Lambda أكثر قابلية للقراءة باستخدام اسم قصير:

var items = source.Select(n => n.ToString() + ".");

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

على سبيل المثال ، باستخدام n للحصول على قيمة رقمية ، كما هو الحال في Lambda Selecression أعلاه ، ستعمل. استخدام شيء أطول لا يزال اختصارًا ، مثل itnum أو itmid يجعل الاسم يحمل المزيد من المعلومات ، ولكن ليس بما يكفي ليكون مفيدًا ، لذلك itemNumber أو itemId سيكون أفضل.

عندما أقوم برمجة بلغات مثل C#، سأعطي في كثير من الأحيان أسماء قصيرة متغيرات لمجرد أنه من الأسهل الكتابة ويمكنني أن أتناسب مع المزيد من التعليمات البرمجية على الشاشة. هذا يعمل بشكل جيد عندما تكون في المنطقة وتعرف بالضبط ما هو كل شيء ، ولكن للأسباب التي ذكرتها بالضبط ، سيكون الأمر مربكًا للغاية بالنسبة إلى شخص غريب ، أو حتى نفسك بعد ساعات قليلة. تجعل Nice IDE's من السهل إعادة تسمية المتغيرات ، والتي أقترحها بالتأكيد قبل الابتعاد عن مشروعك طوال الليل ، أو بالتأكيد قبل مشاركتها.

يثير Guffa بعض النقاط الجيدة حول عندما تكون الأسماء المتغيرة القصيرة مناسبة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top