иногда private пишут только потому что так захотелось
Если класс имеет общее с кем то имя, у программиста после этого жопа может статус на public поменять.
А что значит "общее с кем то имя"? С соседом дядей Васей или что? И при чём тут имя класса если речь о методе? Или даже если была бы речь о классах, то при чём тут имя если есть неймспейсы?(если они конечно есть)
Каждый класс создаётся с конкретной целью. Один или несколько публичных методов исполняют контракт класса. Остальные методы вспомогательные, существуют только для обеспечения выполнения основных методов и они не должны быть публичными, поскольку засоряют собой пространство имён класса, чем усложняют его использование к примеру другими людьми .
В таких случаях private можно заменить на protected и сделать сверху свой класс-обертку.
Но вот иногда private ставят потому, что метод реально не должен вызываться извне иначе что-то сломается.
Но вот иногда private ставят потому, что метод реально не должен вызываться извне иначе что-то сломается.
Не вижу проблемы поменять контракт класса, если он в привате, как оказалось, делает нечто, что может быть полезно извне. Или вообще вынести к херам этот функционал в отдельный класс.
Для относительно неспецифического, то есть, не привязанного к конкретной задаче, класса - вполне частый кейс.
Для относительно неспецифического, то есть, не привязанного к конкретной задаче, класса - вполне частый кейс.
Вынести да, изменить контракт класса который кем то используется - так себе идея, в лучшем случае тесты упадут, в худшем баг в продакшн. Изменение на public усложнит код создавая лишние зависимости. Если бизнес логика изменится, что происходит довольно таки часто, придется проверять все связанные ветки выполнения. На больших проектах single responsibility - хлеб и соль.
Если это, например, хитрая коллекция/холдер/монада, а пртватный метод позволяет узнать некоторое, по мнению автора класса коллекции, "ненужное" свойство внутреннего состояния этой коллекции, то тут только открытие приватного метода, ну или новый метод, вызывающий тот приватный. И ни на какие тесты и прочее это не повлияет, если этот метод не вносит изменений(а вообще, copy on write рулит).
Или потому что IDE сказала что его можно сделать private, а кто я такой чтобы спорить с IDE.
Если private можно поставить, его нужно поставить!
public delegate
кажется я обосрался
Шаблон "паблик Морозов".
Чтобы написать коммент, необходимо залогиниться