Передовой опыт обычно цитируется так:
Сделать все настолько ограничительным, насколько это возможно и только неограниченным, когда это необходимо
Значения по умолчанию - это C #
- классы: внутренние
- члены класса: частные
Закрытые классы, если они не вложенные, редко бывают полезны, но не обращайте на это внимания.
Теперь последний битмое мнение.Читаемость кода и простота понимания очень важны, поэтому я бы сказал, что лучше всего явно указывать уровни доступа, даже если они совпадают со значениями по умолчанию