W odpowiedzi na to pytanie jest wiele do powiedzenia, oto pierwsze myśli, które przyszły mi do głowy:
Przede wszystkim należy pamiętać, że private
jest to konstrukcja tylko w czasie kompilacji - nie można jej wymusić w czasie wykonywania (patrz tutaj i tutaj, aby zapoznać się z odpowiednią dyskusją). W związku z tym prosimy o pozbycie się wszelkich koncepcji private
użyteczności w jakikolwiek sposób ze względów bezpieczeństwa. Po prostu nie o to chodzi.
To jest o enkapsulacji, a gdy masz pole lub metodę na swojego urządzenia, które chcesz do hermetyzacji w nim, co jasne, że nie powinno być dostępne od nigdzie indziej, to należy bezwzględnie zrobić to private
: to, co private
jest dla: Sygnalizuje zamiar, że cokolwiek nałożyłeś, nie powinno być dotykane spoza klasy.
To samo dotyczy public
: jest to również konstrukcja przeznaczona tylko do kompilacji, więc fakt, że elementy składowe klasy są public
domyślnie, podczas gdy są prawdziwe, ma dokładnie zero znaczenia w czasie wykonywania. Ale kiedy masz członka, którego wyraźnie zamierzasz ujawnić światu zewnętrznemu jako część API twojej klasy, powinieneś bezwzględnie public
zasygnalizować ten zamiar: po to public
jest.
To wszystko dotyczy ogólnie maszynopisu. W szczególności w Angulara istnieją zdecydowanie ważne przypadki użycia publicznych członków w klasach komponentów: na przykład podczas implementowania wzorca kontenera / komponentu (inaczej inteligentnego / głupiego ), gdy „głupie” dzieci wstrzykują „inteligentnych” rodziców za pomocą iniekcji konstruktora, niezwykle ważne jest, aby przekazać swoje zamiary dotyczące tego, którzy członkowie rodzica powinni i nie powinni być dotykani przez dzieci: w przeciwnym razie nie zdziw się, gdy przyłapiesz te głupie dzieci na wygłupach w barku swoich rodziców.
A więc moja odpowiedź na twoje pytanie:
czy powinienem zawsze dodawać prywatne dla nich wszystkich, jak poniżej?
jest stanowczym nie . Nie powinieneś zawsze dodawać, private
ponieważ robiąc to, pokonujesz cel słowa kluczowego, ponieważ nie sygnalizuje już żadnego zamiaru, jeśli umieścisz go wszędzie: równie dobrze możesz go nigdzie nie umieścić.