Ich finde intern weit überstrapaziert. Sie sollten bestimmte Funktionen wirklich nicht nur bestimmten Klassen aussetzen, die Sie anderen Verbrauchern nicht anbieten würden.
Dies bricht meiner Meinung nach die Schnittstelle, bricht die Abstraktion. Dies bedeutet nicht, dass es niemals verwendet werden sollte, aber eine bessere Lösung besteht darin, auf eine andere Klasse umzugestalten oder wenn möglich auf eine andere Weise verwendet zu werden. Dies ist jedoch möglicherweise nicht immer möglich.
Der Grund dafür kann sein, dass ein anderer Entwickler möglicherweise eine andere Klasse in derselben Assembly wie Ihre erstellt. Interna verringern die Klarheit der Abstraktion und können bei Missbrauch zu Problemen führen. Es wäre das gleiche Problem, als ob Sie es öffentlich gemacht hätten. Die andere Klasse, die vom anderen Entwickler erstellt wird, ist wie jede externe Klasse immer noch ein Verbraucher. Klassenabstraktion und Kapselung dienen nicht nur dem Schutz für / vor externen Klassen, sondern für alle Klassen.
Ein weiteres Problem ist, dass viele Entwickler denken werden sie müssten es möglicherweise an anderer Stelle in der Baugruppe verwenden und es trotzdem als intern markieren, obwohl sie es zu diesem Zeitpunkt nicht benötigen. Ein anderer Entwickler könnte dann denken, dass es für die Aufnahme da ist. Normalerweise möchten Sie privat markieren, bis Sie einen endgültigen Bedarf haben.
Aber einiges davon kann subjektiv sein, und ich sage nicht, dass es niemals verwendet werden sollte. Einfach bei Bedarf verwenden.