Ну, люди свободны иметь свое мнение. Я не уверен, как «внутренние» побеждают основные принципы ООП .. возможно, ссылка поможет мне оценить их позицию.
Я использую внутренние, чтобы скрыть типы, которые я не хочу, чтобы кто-либо вне сборки использовал. Это про-ООП на мой взгляд
- раскрыть поведение, но скрыть реализацию.
- использовать максимально ограниченный доступ
например. Я рефакторинг некоторого общего кода из 2 открытых типов; этот новый тип начинается как внутренний. Если какой-то клиент / тест не заставит меня увеличить видимость. Также я иногда использую его как временную читерскую программу, чтобы избежать написания тестов для некоторых типов (у всех открытых типов должны быть тесты). Это послужило мне хорошо.