Sprawdziłem kilka artykułów msdn, które dotyczą konwencji kodowania C# i wytycznych dotyczących nazewnictwa (C# Coding Conventions i Naming Guidelines), a także similar question na przepełnienie stosu z kilku miesięcy wstecz.Konwencja nazewnictwa C# dla zmiennych o tych samych danych, ale różnych typów
Nie jestem pewien, jak obsługiwać dwie zmienne, które są w tym samym czasie, które posiadają [koncepcyjnie] te same dane w różnych typach.
Przykładem, który pomógłby zilustrować problem, byłby identyfikator, który początkowo jest przechowywany jako ciąg znaków, ale następnie jest przesyłany/parsowany do liczby całkowitej.
Wymyśliłem 3 możliwe kierunki działań i jestem pewien, że opuściłem prawdopodobne opcje.
COA # 1:
int iRecordId;
string sRecordId;
Jeżeli jeden lub oba zmienne prefiks skrót typu. Narusza to wytyczne kodowania MS stwierdzające, że nazwy prefiksów nie powinny być poprzedzane węgierską notacją typu.
COA # 2:
int recordId;
string recordIdString;
Jeżeli jeden lub oba zmienne wyraźnie określać typ w nazwie. Wydaje się to po prostu niezręczne i chociaż nie korzysta z węgierskiej notacji, wydaje się, że narusza on ducha poprzedniego COA.
COA # 3:
int recordIdForDatabase;
string recordIdFromUrl;
Gdzie każda zmienna jest dodatkowo przez wykwalifikowany gdzie dane pochodzą, czy będzie.
Wniosek
Moja myśl jest, że ostatecznie chcą odróżnić dwóch zmiennych, które różnią się tylko według typu, więc gdy istnieją wytyczne, które wyraźnie stwierdzają, aby nie prefiks zmiennych z informacjami typu, jestem pochylony w kierunku za pomocą węgierskiego prefiksu. Ponieważ w pozostałej części kodu jest to całkowicie sprzeczne z konwencjami nazewnictwa, wydaje się, że podkreśli to okoliczność łagodzącą. Czy to rozsądne podejście?
Pytania, komentarze i okrzyki oburzenia są mile widziane.
Tak, po prostu ponownie przeczytałem to, co napisałem. Wciąż powinno się trzymać true - tylko przechowywać int _or_ string, a nie oba. Następnie przekształć w razie potrzeby. Zachowałbym wartość int, ponieważ ToString() jest _rarely_ zawiedzie, ale Int32.Parse() może łatwo zawieść. –