Visual studio - Properties oraz metody statyczne

0

Witam,
Mam kilka praktycznych pytań dotyczących programowania, mam nadzieję że ktoś będzie potrafił mi odpowiedzieć.

  1. Czy da się zmienić widoczność atrybutów komponentów w okienku "Properties" ? Wiem że z poziomu kodu można to zmienić, lecz
    chodzi mi o takie rozwiązanie użytkowe, czyli żeby domyślnie pojawiało się 5 najczęściej używanych atrybów. Czy jest jakiś taki
    dodatek do VisualStudio ? Często pracuje na WinForms i niestety bardzo drażni przeszukiwanie atrybutów gdy tak naprawdę używa się tylko kilku.
  2. Przykład : int Sum() czy Sum(ref int value) ? jaki sposób tworzenia metod jest bardziej efektowny i dlaczego ?
  3. Resharper często mi podpowiada że daną metodę można ustawić na statyczną. Czy dla szybkości i efektywności działania programu lepiej jest
    korzystać z metod statycznych ?
0

ad 2. Obie metody są całkowicie różne (dodatkowo zapis Sum(ref int value) jest nieprawidłowy bo metoda powinna albo zwracać jakąś wartość albo void)
ad 3. To czy metoda powinna być statyczna powinieneś wiedzieć Ty. Metody statyczne różnią się od niestatycznych tym że można je wywołać z poziomu klasy (bez tworzenia obiektu) i nie wpływa to na szybkość działania programu.

0

Przykład : int Sum() czy Sum(ref int value) ? jaki sposób tworzenia metod jest bardziej efektowny i dlaczego ?

ref powoduje, że funkcja dostaje zmienną i ją modyfikuje. Jeżeli nie masz absolutnie ważnego powodu, dla którego chcesz uzyskać akurat taki efekt, to normalnie zwracaj wartość funkcji za pomocą return, a nie modyfikuj parametrów wejściowych. I pamiętaj, że istnieje różnica semantyczna pomiędzy ref oraz out ;-)

Dlaczego? Przede wszystkim dlatego, że nie masz możliwości robienia łańcuszków wywołań, np.

Console.WriteLine(Sum(3).ToString("C2"));

CA1201 - Avoid "out" parameters: https://msdn.microsoft.com/en-us/library/ms182131(VS.80).aspx

Jednym z powodów dla których istnieje out jest możliwość zwrócenia z funkcji więcej niż jednej wartości wyjściowej - ale wraz z C# 7.0 i ValueTuple to chyba odejdzie trochę do lamusa.

1

Funkcje statyczne są chętniej i łatwiej optymalizowane przez kompilator i środowisko(np. można je łatwiej z inline'ować). Ich wywołanie jest nie co szybsze i przez to że nie mogę być napisane w klasach potomnych są szybsze niż metody wirtualne. Ale to wszystko bez znaczenia i powinieneś kierować się "dobrymi praktykami" i czytelnością kodu, a nie skróceniem czasu wykonania o ćwierć sekundy ;).

0

Ad. 2 Chyba chodziło o "efektywny", efektowne to mogą być fajerwerki ;)

0

Ad 2. Metody to funkcje, a funkcja, jak wiemy z matematyki, to takie coś, co przyporządkowuje argumentom wynikowe wartości. Logiczne jest zatem zwracanie wartości z funkcji jako jej wyniku, a nie argumentu.
Nigdy nie powinno się używać ref we własnym kodzie, bo to syfienie i oznaka słabego stylu.

Ad 3. Tak, jeśli coś może być statyczne, rób to statyczne. Nawet nie chodzi o te nanosekundy wydajności, ale o czytelność - od razu widać, że dana metoda nie modyfikuje stanu obiektu, a co za tym idzie - prawdopodobnie nie powinna należeć do tej klasy i należałoby ją przenieść do innej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1