Обнародование поля folderList
- наихудший случай Предоставление подробностей реализации через открытые поля или через плохо спроектированную публичную собственность (нет различий для коллекций между публичными полями и публичной собственностью с помощью getter и setter).
С открытыми полями вы не можете рекламировать поле как свойство, если хотите добавить проверку, изменить уведомление, поместить его в интерфейс или изменить тип коллекции с одного типа на другой.
Кстати, Джеффри Рихтер в аннотации к Framework Design Guideline упомянул, что "Лично я всегда делаю свои поля приватными. Я даже не выставляю поля как внутренние , потому что это даст мне нет защиты от кода в моей собственной сборке "
Я думаю, что лучший способ добавить явный интерфейс, который предоставляет строгую абстракцию клиентам MyClass.
Например, вы можете добавить два отдельных метода для извлечения папок и добавления новой папки в это хранилище:
class MyClass {
//You should return IList<string>
public IList<string> MyList {get {return myList;} }
//Or even IEnumerable<string>, because you should return
//as minimal interface as your clients needs
public IEnumerable<string> MyList {get {return myList;} }
//You may expose this functionality through internal
//method, or through protected internal method,
//but you should avoid direct access to your implementation
//even for descendants or another classes in your assembly
public void AddElement(string s) {myList.Add(s);}
private List<string> myList;
}