Czy w C # zachęca mnie do używania słowa kluczowego var uniwersalnego dla każdej deklaracji zmiennej? Jeśli tak, to czy muszę podać te znaki specjalne dla wartości literalnych w deklaracji zmiennej, takie jak M dla dziesiętnej, w następującej instrukcji:
var myDecimal = 14.5M;
Jeśli to robi różnicę, staram się zrobić programowanie w języku C #.
c#
variables
data-types
wassimans
źródło
źródło
auto
.Odpowiedzi:
Było wiele sporów dotyczących korzystania z var. Moje ogólne zasady są następujące.
Zasadniczo celem jest ułatwienie odczytu kodu. Jeśli uważasz, że var wystarczy, ponieważ przypisanie jest oczywiste, użyj var. Użyj pełnej nazwy typu jako wskazówki dla czytelnika, jeśli uważasz, że jest to konieczne.
źródło
foreach
instrukcjach, w których zależy mi tylko na wyliczeniu kolekcji, niekoniecznie na rodzaju każdego elementu.Kiedy stosować
var
programowanie „świętej wojny”. Jest dokładnie jedno miejsce, w którym jest to wymagane: gdy wynik operacji tworzy anonimowy typ, taki jak:Gdziekolwiek indziej jest to opcjonalne i naprawdę zależy od twojego standardu kodowania, aby użyć go lub nie w innych sytuacjach.
I tak, będziesz potrzebował znaków specjalnych do literałów, aby poinformować kompilator, co znajduje się po prawej stronie. W przykładzie, bez
M
, domyślnie jestdouble
zamiastdecimal
.źródło
Z MSDN :
Naprawdę, naprawdę nie lubię niejawnego pisania. Na powierzchni sprawia, że kod jest bardziej czytelny, ale może prowadzić do wielu problemów w przyszłości. Jeśli dev zmieni inicjalizator zmiennej, powiedzmy, z
do
lub
Typ ulegnie zmianie, co spowoduje całą masę błędów kompilatora lub, jeśli jest to widok internetowy i nie używasz kroku po kompilacji do wstępnej kompilacji swoich widoków, cała masa błędów środowiska wykonawczego, które nie zostaną wychwycone bez skutecznego testy przedwdrożeniowe.
Wpisywanie niejawne również nie działa wszędzie (z tego samego łącza MSDN)
Utrzymywanie spójnego kodu (w tym przypadku używanie jawnego pisania wszędzie) jest bardzo, bardzo dobrą rzeczą. Moim zdaniem
var
jest leniwy i nie przynosi rzeczywistych korzyści, a także wprowadza kolejny potencjalny punkt awarii w już złożonym procesie.Aktualizacja 2017
Całkowicie zmieniłem zdanie. Pracując w C #, używam
var
większość czasu (z wyjątkiem rzeczy takich jak zmienne typu interfejs i tym podobne). Zachowuje zwięzły kod, który poprawia czytelność. Mimo to - zwróć uwagę na to, czym tak naprawdę jest typ rozwiązany.źródło
this.
wszędzie lub mówienieSystem.Blah.SomeType
zamiastusing
, co wciąż wydaje mi się niezwykle denerwujące, bardziej zwięzły kod jest - przynajmniej dla mnie - zazwyczaj łatwiejszy do analizy wizualnej. Nadal istnieje wiele scenariuszy, w których wyraźne wpisywanie jest właściwym wyborem. Ale w dzisiejszych czasach jestem mniej prawnikiem od języków niż ktoś, kto tylko próbuje uzyskać czysty kod za drzwiami.using namespace std;
plików .cpp. (Nie nagłówki, ponieważ wolałbym unikać smołowania iOdwołanie do C # pokazuje, co ilustruje dobre lub złe użycie tego konstruktu:
Poniższy przykład pokazuje dwa wyrażenia zapytania. W pierwszym wyrażeniu użycie var jest dozwolone, ale nie jest wymagane, ponieważ typ wyniku zapytania można jawnie podać jako IEnumerable. Jednak w drugim wyrażeniu należy użyć var, ponieważ wynik jest zbiorem anonimowych typów, a nazwa tego typu jest niedostępna z wyjątkiem samego kompilatora. Zauważ, że w przykładzie 2 element zmiennej iteracji foreach również musi być niejawnie wpisany.
źródło
Słowo kluczowe var wymaga tylko od kompilatora, aby automatycznie wydedukował typ zmiennej typu var. Dlatego jeśli chcesz przechowywać zmienną dziesiętną w zmiennej var, musisz użyć m. Podobnie, jeśli przechowujesz ciąg, musisz zawrzeć go w cudzysłowie.
źródło
Dla mnie nie używam var w następujących przypadkach:
Fruit foo = new Apple();
. W tym przypadku uważam, że var polega na unikaniu i korzystaniu z klasy nadrzędnej (tutaj Fruit) jest lepsze, umożliwiając lepsze zrozumienie logiki kodu i ograniczenie prawdopodobnych błędów (przy var, bez sprawdzania koncepcji polimorficznej!)Co do reszty, myślę, że zależy to od przypadku i pochodzenia dewelopera. Niektórzy ludzie ze świata PHP wolą nie dbać o typy zmiennych, a niektórzy ludzie ze świata Java będą myśleć, że var jest herezją, a im bardziej gadatliwa, tym lepiej.
Będziesz musiał dokonać osobistej opinii :)
źródło