Konwencja nazewnictwa C # dla stałych?

private const int THE_ANSWER = 42;

Lub

private const int theAnswer = 42;

Osobiście uważam, że z nowoczesnymi Idami powinniśmy wybrać camelCase, ponieważ ALL_CAPS wygląda dziwnie. Co o tym myślisz?

Author: AK47, 2008-10-28

9 answers

Zalecaną konwencją nazewnictwa i kapitalizacji jest użycie obudowy Pascala dla stałych (Microsoft ma narzędzie o nazwie StyleCop , które dokumentuje wszystkie preferowane konwencje i może sprawdzić Twoje źródło pod kątem zgodności - choć jest to trochę zbyt analnie retentive dla wielu ludzi upodobań). np.

private const int TheAnswer = 42;
W języku Pascala używa się również skrótów klawiszowych (ang. "Pascal capitalization convention").]}
 400
Author: Greg Beech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-13 12:56:08

Właściwie to jest

private const int TheAnswer = 42;

Przynajmniej jeśli spojrzysz na bibliotekę. NET, która IMO jest najlepszym sposobem decydowania o konwencjach nazewnictwa - aby Twój kod nie wyglądał nie na miejscu.

 61
Author: bh213,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 08:23:12

Wizualnie Wielkie Litery to najlepszy sposób. Jest tak rozpoznawalny. Ze względu na wyjątkowość i brak szans na zgadywanie, Głosuję na UPPER_CASE!

const int THE_ANSWER = 42;

Notatka: wielkie litery będą przydatne, gdy stałe mają być używane w tym samym pliku na górze strony i do celów intellisense; jednak, jeśli mają być przeniesione do niezależnej klasy, użycie wielkich liter nie zrobiłoby dużej różnicy, jako przykład:

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;
 }
 44
Author: usefulBee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-15 20:06:19

Nadal używam wielkich liter dla wartości const, ale jest to bardziej z przyzwyczajenia niż z jakiegokolwiek konkretnego powodu.

Oczywiście sprawia, że łatwo od razu zobaczyć, że coś jest const. Pytanie do mnie brzmi: czy naprawdę potrzebujemy tych informacji? Czy pomaga nam to w jakiś sposób uniknąć błędów? Jeśli przypisam wartość do const, kompilator powie mi, że zrobiłem coś głupiego.

Mój wniosek: idź z łuską wielbłąda. Może ja też zmienię swój styl ;-)

Edit:

To, że coś pachnie węgierskim nie jest tak naprawdę słusznym argumentem, IMO. Pytanie zawsze powinno brzmieć: Czy to pomaga, Czy boli?

Są przypadki, kiedy Węgierski pomaga. Obecnie nie jest ich tak wiele, ale nadal istnieją.

 20
Author: Treb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 08:21:42

Po pierwsze, notacja węgierska jest praktyką używania prefiksu do wyświetlania typu danych parametru lub zamierzonego zastosowania. Konwencje nazewnicze Microsoftu mówi " nie " Węgierskiej notacji http://en.wikipedia.org/wiki/Hungarian_notation http://msdn.microsoft.com/en-us/library/ms229045.aspx

Używanie wielkich liter nie jest zalecane, jak podano tutaj: Przypadek Pascala to akceptowalna konwencja i krzykliwe czapki. http://en.wikibooks.org/wiki/C_Sharp_Programming/Naming

Microsoft stwierdza również tutaj, że wielkie litery mogą być używane, jeśli jest to zrobione, aby dopasować istniejący schemat. http://msdn.microsoft.com/en-us/library/x2dbyw72.aspx

To wszystko podsumowuje.

 14
Author: user31939,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 10:37:47

Zostaw Węgrów Węgrom.

W przykładzie pominąłbym nawet ostateczny artykuł i po prostu poszedł z

private const int Answer = 42;

To jest odpowiedź czy to jest odpowiedź?

*wykonane edit jako Pascal ściśle poprawne, jednak myślałem, że pytanie szukało bardziej odpowiedzi na życie, wszechświat i wszystko .

 13
Author: dove,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-03 11:19:37

W artykule Constants (C# Programming Guide) Microsoft podaje następujący przykład:

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;
}

Zatem dla stałych wydaje się, że Microsoft zaleca użycie camelCasing. Ale zauważ, że te stałe są zdefiniowane lokalnie .

Prawdopodobnie nazewnictwo widocznych na zewnątrz stałych jest bardziej interesujące. W praktyce Microsoft dokumentuje swoje stałe publiczne w bibliotece klas. NET jako pola . Oto kilka przykładów:

Pierwsze dwa są przykładami PascalCasing. Trzeci wydaje się być zgodny z konwencjami Microsoftu z kapitalizacją dla dwuliterowego akronimu (chociaż pi nie jest akronimem). A czwarty wydaje się sugerować, że zasada dla dwuliterowy akronim rozszerza się na pojedynczy akronim lub identyfikator, taki jak E (który reprezentuje stałą matematyczną e).

Ponadto, w dokumencie Konwencji kapitalizacji, Microsoft Bardzo bezpośrednio stwierdza, że identyfikatory pól powinny być nazwane za pomocą PascalCasingi podaje następujące przykłady dla MessageQueue.InfiniteTimeout i UInt32.Min :

public class MessageQueue
{
    public static readonly TimeSpan InfiniteTimeout;
}

public struct UInt32
{
    public const Min = 0;
}

Wniosek: Użyj PascalCasing dla stałych publicznych (które są udokumentowane jako pola const lub static readonly).

Wreszcie, o ile wiem, Microsoft nie opowiada się za konkretnymi konwencjami nazewnictwa lub kapitalizacji dla prywatnych identyfikatorów, Jak pokazano w przykładach przedstawionych w pytaniu.

 11
Author: DavidRR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 13:22:19

Właściwie wolę PascalCase tutaj-ale z przyzwyczajenia, jestem winny UPPER_CASE...

 6
Author: Marc Gravell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 08:27:45

ALL_CAPS jest pobrany z C i C++ sposób pracy wierzę. Ten artykuł tutaj wyjaśnia, jak powstały różnice w stylu.

W nowych IDE, takich jak Visual Studio, łatwo jest zidentyfikować typy, zakres i jeśli są one stałe, więc nie jest to bezwzględnie konieczne.

Oprogramowanie FxCop i Microsoft StyleCop pomoże Ci podać wytyczne i sprawdzić kod, aby każdy działał tak samo.

 6
Author: John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-03 11:07:58