Co oznacza modyfikator private w języku C# można znaleźć z łatwością. Ale zastanawia mnie fakt, po co się go w ogóle używa? W jednej z książek o testowaniu znalazłem cytat:
R. Osharove napisał(a):
Metody prywatne lub chronione - zazwyczaj zgodnie z tym, co myśli deweloper - nie bez powodu są prywatne. Czasami chodzi o to, aby ukryć szczegóły implementacji, tak aby później można było zmienić implementację, nie zmieniając ostatecznej funkcjonalności. Może to być również związane z bezpieczeństwem lub dotyczyć ochrony kodu (na przykład zaciemniania).
VS2017 (nie jestem pewien co do poprzednich wersji) przy automatycznym generowaniu metod domyślnie tworzy je jako private
. Można by pomyśleć "hmm, chyba tak jest lepiej". Ale dlaczego lepiej? Przecież publiczne metody są testowalne i dostępne z innych klas. W takim razie w jakim celu je ukrywać dla innych klas? Rozumiem, że proste funkcje, lub funkcje które jedynie korzystają z biblioteki/frameworka nie wymagają testowania i mogą pozostać prywatne. Ale dalej ciekaw jestem, po co? Można też refaktoryzować większe metody na mniejsze prywatne, ale czemu mają być prywatne?
Podsumowując, co może się stać złego jak metoda będzie publiczna? W jakich sytuacjach jest to niebezpieczne?