Ответ 1
Вы указываете "круговые зависимости", чтобы быть ясным, F # никогда не позволит вам распространять круговые зависимости между файлами. Если тип Foo
относится к типу Bar
, а тип Bar
относится к типу Foo
, то Foo
и Bar
должны быть определены в том же файле в той же группе type ... and ...
в F #.
Здесь речь идет о организации и навигации, в основном о инструментах. Исследователь VS-решений отображает список файлов; папки позволяют вам "сворачивать" группы файлов, которые упрощают организацию ваших мыслей или перемещаются по "большим расстояниям" многих файлов. Однако для навигации существуют различные другие инструменты (Go To Definition, поиск текста в текущем проекте,...), чтобы вы могли перейти к, например, определение конкретного класса. (Надеемся, что эти инструменты будут продолжать улучшаться для F # в частности, а также VS вообще, в будущих выпусках.)
В любом случае я твердо уверен, что "довольно большая система взаимосвязанных компонентов (Controller - ViewModel - View, > 300 классов)" - это запах кода. Если вы не можете распутать их, чтобы иметь архетектное расслоение, так что есть части, которые не зависят от других частей (и таким образом могут быть определены "сначала" в предыдущем файле в F #), тогда у вас есть больше проблем, чем просто "как для организации вашего кода F #". Мое упрямое мнение, пожалуй, лучше всего выражено здесь.