Re: Как правильно: публичный метод возвращает список...
От: samius Япония http://sams-tricks.blogspot.com
Дата: 08.07.21 17:30
Оценка: 16 (1) +4
Здравствуйте, Shmj, Вы писали:

S>Вы делаете библиотеку и один из методов вашей либы возвращает список файлов, для примера. Какой тип вы вернете?


S>К примеру, Directory.GetFiles() возвращает string[]. Насколько это правильно? Ведь потом кто-то может модифицировать и написать files[0] = "???". Нарушается сама суть — этот список не подлежит изменению.


Вполне правильно. Метод Directory.GetFiles() гарантирует то, что он вернет коллекцию адекватную (на какой-то момент времени в прошлом). Есть гарантии, что получатель ответа (вызвавший Directory.GetFiles()) получит эту коллекцию в должном виде. Но Directory.GetFiles() не обязан гарантировать что кто-то, получив эту коллекцию, не сможет сломать её.

S>Емнип, сами MS в своих Guidelines рекомендовали типа ReadOnlyCollection<T> в общих случаях.

что это меняет в случае Directory.GetFiles()? Кто-то, получив такой ответ от GetFiles(), сможет подменить его другим ответом и сломать себе ногу.

Эта рекомендация для других случаев. Это если кому-то придется возвращать не ответ сам в себе, актуальный на момент вызова, а часть своего состояния, когда сам объект, возвращающий свое состояние чувствителен к его изменению извне.

S>Кто серьезно относится к этому вопросу и что делаете?

Все вполне серьезно. Надо просто провести разделитель, когда надо свое состояние спасать от изменений, а когда возвращается Value, пусть даже изменяемое...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.