8 comments on “Czy programiści .NET zapomnieli o konstruktorach?

  1. Osobiście wykorzystuje takie rozwiązanie głównie przy inicjalizacji znanych kolekcji, a także w klasach, które trzymają „suche” dane – np. klasy rezultatu dla API.

    Ale fakt jest taki, że rzeczywiście niektórzy nadużywają tego mechanizmu zbyt mocno.

    Lubię

    • To wszystko „wina” ReSharpera. Gdy tylko ReShaper zobaczy, że możemy użyć inicjalizacji to każdy z Nas pewnie korzysta z takiej opcji Po paru miesiącach człowiek już sam tak robi.

      Lubię

  2. Object initializer ma jeden minus – w przypadku gdy poleci np. NullReferenceException, to linia w stack trace będzie wskazywała na początek konstruktora, a nie na faktyczną linię, która spowodowała błąd. Jeżeli mam obiekt w formie kontenera, do którego wpisuje dane z serwisów, repozytoriów itp. to wole zastosować przypisywanie kolejno po właściwościach.

    Lubię

  3. Pingback: Cleaner constructors with throw expressions in C# 7 | Piotr Perak

  4. Wszystko ładnie pięknie i zgadzam się, że konstruktory z wymaganymi parametrami czynią nasz odporniejszy na błędy, ale co w przypadku deserializacji? Musimy mieć bezparametryczny konstruktor i cała nasza układanka się rozsypuje…

    Lubię

    • To jest wyjątek. Zazwyczaj dotyczy klas z przestrzeni modeli (mówiąc o aplikacji ASP.NET MVC). A to nie jest problem. Te modele są konwertowane z/na modele naszej domeny. I to te model mają bezparametrowe konstruktory.
      Mogę się również mylić, ale wydaje mi się, że narzędzia do deserializacji potrafią wykorzystać konstruktor prywatny i protected. W takim przypadku znowu wszystko jest ok. Akurat dodawałem dzisiaj takie konstruktory. Jest to jedna z niewielu sytuacji, gdy uważam za stosowne dodanie komentarza w kodzie. // for JSON deserialization 🙂

      Lubię

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s