Dlaczego ReSharper sugeruje mi żeby deklarować zmienne w ten sposób:
var myList = new List<String>();
zamiast:
List<String> myList = new List<String>();
Czy rodzaj deklaracji jest zależny od tego gdzie je deklaruję? Jak powinienem deklarować je w klasie, a jak w metodzie? Czy to naprawdę ma jakieś znaczenie? ( ͡°͜ʖ͡°)
@super: var oznacza, że kompilator domyśli się, jakiego typu jest zmienna. Takie ułatwienie w czytaniu, ogarnianiu kodu i estetyki. Działa tylko w wypadku metod i zmiennych w metodach.
@super: @trzynasta_rano: Czytelność kodu. Jak po prawej masz new List() to wiesz jakiego typu będzie zmienna i nie musisz tego pisać drugi raz. Z drugiej strony jak masz coś w stylu db.Posts.Where(...).GroupBy(...) to już wypadałoby ten typ napisać.
@super: Nigdy var (chyba że to JS). Widok takich zmiennych w kodzie drastycznie zaniża jego poziom i czytelność. ReSharper dobry tool ale jak przyjdzie potem przerzucić się na pisanie bez żadnych ułatwień to czasem idzie zapomnieć się i yyy jak to się pisało ( ͡°͜ʖ͡°)
@gammarish: zawsze var tam gdzie typ jest oczywisty bo jest po prawej stronie deklaracji (new, generyki lub rzutowanie) . Powtarzanie się drastycznie zaniża poziom i czytelność kodu.
Dlaczego ReSharper sugeruje mi żeby deklarować zmienne w ten sposób
@super: Odpowiedź: bo takie masz ustawienia konwencji. Można to zmienić.
A tak jest kilka szkół. Jedni mówią, żeby używać var tylko jeśli po prawej stronie wiadomo z góry jaki będzie typ (new, rzutowanie), inny twierdzą, żeby używać zawsze. Resharper domyślnie postuluje drugą wersję. Wydaję mi się, że powodem jest to, że jeśli zmienisz typ zwracany przez metodę to w wielu przypadkach
zamiast:
Czy rodzaj deklaracji jest zależny od tego gdzie je deklaruję? Jak powinienem deklarować je w klasie, a jak w metodzie? Czy to naprawdę ma jakieś znaczenie? ( ͡° ͜ʖ ͡°)
#csharp
@super: Odpowiedź: bo takie masz ustawienia konwencji. Można to zmienić.
A tak jest kilka szkół. Jedni mówią, żeby używać var tylko jeśli po prawej stronie wiadomo z góry jaki będzie typ (new, rzutowanie), inny twierdzą, żeby używać zawsze. Resharper domyślnie postuluje drugą wersję. Wydaję mi się, że powodem jest to, że jeśli zmienisz typ zwracany przez metodę to w wielu przypadkach