Я пытаюсь реализовать в своем коде отличный совет на странице F# coding conventions
https://docs.microsoft.com/en-us/dotnet/fsharp/style-guide/conventions.
Раздел Use classes to contain values that have side effects
особенно интересен.Там написано
There are many times when initializing a value can have side effects, such as instantiating a context to a database or other remote resource. It is tempting to initialize such things in a module and use it in subsequent functions.
и приведен пример.Затем он указывает на три проблемы с этой практикой (я пропускаю их из-за недостатка места, но их можно увидеть в связанной статье) и рекомендует использовать простой класс для хранения зависимостей.
Интересно, как следует вводить поставщикилечиться?Например, если у меня есть следующий код,
[<Literal>]
let projDataPath = __SOURCE_DIRECTORY__ + @"\data\"
[<Literal>]
let configPath = projDataPath + "config.json"
type Cnfg = JsonProvider<Sample=configPath>
let config = Cnfg.Load(configPath)
, использующий провайдер типа для инициализации значения, является предметом проблем, связанных с инициализацией значения с побочными эффектами, описанными в статье?
Другими словами, должен ли я обернуть поставщика типов внутри класса?