سؤال

private const int THE_ANSWER = 42;

أو

private const int theAnswer = 42;

أنا شخصياً أعتقد أنه مع بيئة التطوير المتكاملة الحديثة يجب أن نستخدم CamelCase حيث يبدو ALL_CAPS غريبًا.ماذا تعتقد؟

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

المحلول

ووتسمية الموصى بها واتفاقية القيمة لاستخدام باسكال غلاف لالثوابت (مايكروسوفت لديها أداة المسمى StyleCop أن وثائق جميع الاتفاقيات المفضلة ويمكن التحقق من مصدر للحصول على الامتثال - على الرغم من أنه قليلا <م> من تتذكر شرجيا لأذواق كثير من الناس). منها مثلا.

private const int TheAnswer = 42;

ويتم توثيق اتفاقية القيمة باسكال أيضا في إطار href="https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/capitalization-conventions" rel="noreferrer"> .

نصائح أخرى

في الواقع، هو

private const int TheAnswer = 42;

وعلى الأقل إذا نظرتم الى المكتبة .NET، التي IMO هي أفضل طريقة لتحديد اصطلاحات التسمية - حتى الشفرة لا تبدو من مكان

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

const int THE_ANSWER = 42;

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

public static class Constant
{
    public static readonly int Cons1 = 1;
    public static readonly int coNs2 = 2;
    public static readonly int cOns3 = 3;
    public static readonly int CONS4 = 4;
}

// Call constants from anywhere
// Since the class has a unique and recognizable name, Upper Case might might lose its charm
private void DoSomething(){
var getCons1 = Constant.Cons1;
var getCons2 = Constant.coNs2;
var getCons3 = Constant.cOns3;
var getCons4 = Constant.CONS4;
 }

ما زلت أختار استخدام الأحرف الكبيرة لقيم const، لكن هذا ليس بالعادة أكثر من أي سبب محدد.

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

استنتاجي:اذهب مع غلاف الجمل.ربما سأغير أسلوبي أيضًا ;-)

يحرر:

ذلك الشيئ الروائح الهنغارية ليست في الحقيقة حجة صالحة، المنظمة البحرية الدولية.السؤال يجب أن يكون دائما:هل يساعد أم يضر؟

هناك حالات عندما تساعد المجرية.ليس الكثير في أيامنا هذه، لكنها لا تزال موجودة.

أولا، تدوين المجرية هو ممارسة استخدام بادئة لعرض نوع البيانات معلمة أو الاستخدام المقصود. اصطلاحات التسمية مايكروسوفت لتقول لا للتدوين المجرية http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx

ولا ينصح <ع> استخدام الحروف الكبيرة كما هو مذكور هنا: باسكال حالة هي مقبولة الاتفاقية ويصرخ CAPS. http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming

ومايكروسوفت أيضا تنص هنا أن الحروف الكبيرة يمكن استخدامها إذا فعلت ذلك لتتناسب مع نظام كان قائما. http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx

وهذا الى حد كبير مبالغ عنه.

وترك مجري إلى المجريين.

في المثال فما استقاموا لكم فاستقيموا حتى يستبعد المادة نهائية واذهبوا مع

private const int Answer = 42;

هل هذا الجواب أو أن الجواب؟

و* تحرير صنع كما باسكال صحيح تماما، ولكن كنت أفكر في مسألة تسعى أكثر من إجابة على <لأ href = "http://en.wikipedia.org/wiki/Life،_the_Universe_and_Everything" يختلط = "noreferrer" > الحياة، والكون وكل شيء .

في مقالتها الثوابت (دليل البرمجة C#), ، تقدم Microsoft المثال التالي:

class Calendar3
{
    const int months = 12;
    const int weeks = 52;
    const int days = 365;

    const double daysPerWeek = (double) days / (double) weeks;
    const double daysPerMonth = (double) days / (double) months;
}

لذلك، بالنسبة للثوابت، فإنه يبدو التي توصي Microsoft باستخدامها camelCasing.لكن لاحظ أن هذه الثوابت محددة محليا.

يمكن القول أن تسمية الثوابت المرئية خارجيًا لها أهمية أكبر.ومن الناحية العملية، تقوم Microsoft بتوثيق بياناتها الثوابت العامة في مكتبة فئة .NET كـ مجالات.وهنا بعض الأمثلة:

الأولين هما أمثلة على ذلك PascalCasing.ويبدو أن الثالث يتبع مايكروسوفت اتفاقيات الكتابة بالأحرف الكبيرة لاختصار مكون من حرفين (على الرغم من باي ليس اختصارًا).ويبدو أن الرابع يشير إلى أن قاعدة الاختصار المكون من حرفين تمتد إلى اختصار أو معرف من حرف واحد مثل E (الذي يمثل الثابت الرياضي ه).

علاوة على ذلك، في وثيقة اتفاقيات الكتابة بالأحرف الكبيرة، تنص Microsoft بشكل مباشر على أنه يجب تسمية معرفات الحقول عبر PascalCasing ويعطي الأمثلة التالية ل messageQueue.InfiniteTimeout و UInt32.Min:

public class MessageQueue
{
    public static readonly TimeSpan InfiniteTimeout;
}

public struct UInt32
{
    public const Min = 0;
}

خاتمة:يستخدم PascalCasing للثوابت العامة (والتي تم توثيقها ك const أو static readonly مجالات).

أخيرًا، على حد علمي، لا تؤيد Microsoft اصطلاحات تسمية أو كتابة بالأحرف الكبيرة بشكل محدد خاص المعرفات كما هو موضح في الأمثلة المقدمة في السؤال.

وأنا أميل في الواقع إلى يفضلون PascalCase هنا - ولكن للخروج من هذه العادة، وأنا مذنب UPPER_CASE ...

ويتم أخذ ALL_CAPS من الطريقة C و C ++ للعمل على ما أعتقد. هذه المقالة هنا يفسر كيف وجاءت الخلافات حول أسلوب.

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

FxCop ومايكروسوفت <لأ href = "http://en.wikipedia.org / ويكي / StyleCop "يختلط =" noreferrer "> StyleCop البرنامج سوف يساعد تعطيك المبادئ التوجيهية والتحقق من التعليمات البرمجية بحيث يعمل الجميع بنفس الطريقة.

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