2012-03-29 12 views
13

naming convention for constants in C# jest Pascal obudowa:nazewnictwa stałe API systemu Windows w C#

private const int TheAnswer = 42; 

Ale czasami musimy reprezentować już istniejących stałych z Windows API.

Na przykład, nie wiem jak nazwać to:

/// <summary> 
/// With this style turned on for your form, 
/// Windows double-buffers the form and all its child controls. 
/// </summary> 
public const int WS_EX_COMPOSITED = 0x02000000; 

Co należy nazwać to?

Utrzymanie go jako WS_EX_COMPOSITED pozwala mi szybko skojarzyć go z the WinAPI, ale jest źle.

Niektóre opcje:

  • WsExComposited- Too węgierskie
  • Composited- Zbyt krótki
  • WsEx enum z Composited w nim - Still węgierski
  • ExtendedWindowsStyles.Composited-- Cons w klasie? Enum?

Należy zauważyć, że cele dla dobrego nazewnictwa to:

  • To musi być czytelny.
  • Nie może wywoływać FxCop i StyleCop, nawet jeśli oznacza to ukrywanie przed nimi.
+13

IMO, myślę, że nieposłuszeństwo wobec wytycznej jest całkowicie w porządku w tej sytuacji. Komentarz podsumowujący i jego rażący interfejs WinAPI są wystarczająco dobre, aby pozostawić go takim, jaki jest - większość ludzi by to zrozumiał.Jeśli * musisz * wybrać format, myślę, że najbardziej podobał mi się 'ExtendedWindowStyles.Composited' jako stała w klasie. –

+1

Jak to może być * zbyt * węgierskie? –

+0

@Cory Więc mówisz, że powinienem udekorować takie rzeczy, żeby FxCop i StyleCop nie narzekały? –

Odpowiedz

14

WS_EX_COMPOSITED jest całkowicie w porządku dla części, która bezpośrednio łączy się z Win API (lub innym udokumentowanym interfejsem API). Część, która ma być eksponowana, powinna być zgodna ze standardowymi konwencjami - posiadać oddzielną fasadę publiczną, aby wywoływać funkcje natywne z dobrymi nazwami metod (w końcu zapomnisz, co badałeś na temat konkretnych kombinacji flag, ale dobra nazwa metody opakowania będzie co najmniej pozwalała używasz tego).

Dodatkową zaletą utrzymywania nazwy jak najbliżej natywnego API jest możliwość wyszukiwania stałej bezpośrednio w MSDN/innej dokumentacji i natychmiast znajdowania odpowiedzi. Będzie o wiele trudniej, jeśli zmienisz nazwę.

+0

Właśnie z tego powodu uważam, że nie powinienem zmieniać nazwy. Uważam, że masz rację. –

0

Być może this pomoże nowym użytkownikom w uzyskaniu tego pytania.

Jeśli pole lub zmienna nazwa ma być zgodna z nazwą elementu związanego z Win32 lub COM, a zatem musi zaczynać się od znaku podkreślenia, to pole lub zmiennej w klasie specjalnej NativeMethods. Klasa NativeMethods to dowolna klasa, która zawiera nazwę kończącą się NativeMethods i jest przeznaczona jako element zastępczy dla wrapperów Win32 lub COM. StyleCop zignoruje to naruszenie, jeśli element zostanie umieszczony w klasie NativeMethods.

Powiązane problemy