Wpis z mikrobloga

Wiem jaka jest teoretyczna różnica między public i private, ale do tej pory nie spotkałem się z żadnym praktycznym przykładem, dlaczego miałbym wszystkiego nie robić public. Wręcz odnoszę wrażenie, że to jest tylko informacja dla człowieka (innych programistów z zespołu i ewentualnie mnie, jak wrócę do kodu po miesiącach), a nie dla komputera. Że jak zrobię wszystko public i niczego sam nie popieprzę w kodzie, to po prostu nic złego się nie stanie, będzie działało jak trza.

Dodam, że jestem początkującym hobbystą amatorem.
#programowanie a konkretnie #csharp
  • 14
@Goryptic: Napewno spotkałeś się już z teoria, ze jedna metoda robi jedna rzecz, zatem pewne rzeczy powinny zadziac się np tylko w ramach jednej klasy i jej wywoływanie potrzebne jest tylko w niej - wtedy takie metody są prywatne dla danej klasy i nie powinny być dostępne z zewnątrz
via Wykop Mobilny (Android)
  • 8
@Goryptic: pomyśl o tym jak o urządzeniu. Private o wszystko co jest w środku obudowy, a public to wszystko co na zewnątrz. Jak ktoś sobie bierze takie urządzenie to wtedy widzi z czym może wchodzić w interakcje a z czym nie. Może póki klasa jest w twoim kodzie to nie jest to takie oczywiste. Wszystko public to tak jakbyś miał fabrykę i wszystkie urządzenia miałyby zdjęte obudowy. Jak w tej fabryce
Wręcz odnoszę wrażenie, że to jest tylko informacja dla człowieka (innych programistów z zespołu i ewentualnie mnie, jak wrócę do kodu po miesiącach), a nie dla komputera.


@Goryptic: To prawda. Co więcej - nawet jak coś jest oznaczone jako private to możesz to ustawić z zewnątrz korzystając np. z refleksji.

Że jak zrobię wszystko public i niczego sam nie popieprzę w kodzie, to po prostu nic złego się nie stanie, będzie
@Goryptic: spójrz na to inaczej. Ludzie nie programują od wczoraj. Skoro coś wymyślono i wdrożono techniki i sztukę robienia czegoś w jakiś sposób to pewnie czemuś to służy i jak jesteś pokorny to doczekasz się momentu kiedy powiesz "o kurła dobrze to ktoś wymyślił".
Chyba widać w programistach tendencję do ułatwiania sobie życia i uproszczania jak się tylko da ( ͡° ͜ʖ ͡°)
@Goryptic: bo nie da się spamiętać i zrozumieć całego programu, zwłaszcza, jak nie piszesz samemu programu. Jak funkcjonalność klasy/metody/funkcja jest jasna to możesz ją łatwo zrozumieć i użyć ponownie. Przykładowo jak twoja metoda do zmiany małych liter na duże wypisuje wynik na ekran, to możesz użyć takiej metody tylko w jednym kontekście. Jak usuniesz wypisywanie na ekran i ta metoda będzie po prostu zwracała wynik, to możesz ją użyć w dowolnym
@Goryptic a po co Ci klasy jeśli wszystko jest publiczne? Równie dobrze mógłbyś zrobić zbiór funkcji i zmiennych skoro i tak musisz znać wszystkie szczegóły implementacyjne, żeby wiedzieć czego użyć. Jak dopisuje coś w projekcie, który robiło dziesiątki ludzi przede mną i będzie robiło dziesiątki ludzi po mnie, gdzie masz mnóstwo klas, to mając klasę z interfejsem wiem w jakie interakcje z obiektem mogę wejść, a co jest szczegółem implementacyjnym, który nie