Skip to content

Instantly share code, notes, and snippets.

@eiriktsarpalis
Created March 17, 2017 12:42
Show Gist options
  • Save eiriktsarpalis/a8bf785191bc8d7e0a7daf587243de7c to your computer and use it in GitHub Desktop.
Save eiriktsarpalis/a8bf785191bc8d7e0a7daf587243de7c to your computer and use it in GitHub Desktop.
Spot the antipattern
module Client =
let connectionString = Environment.GetEnvironmentVariable("CONN")
let session = new Session(connectionString)
let doA (a : A) = session.Send a
let doB (b : B) = session.Send b
type Client(connectionString : string) =
let session = new Session(connectionString)
member __.DoA(a : A) = session.Send a
member __.DoB(b : B) = session.Send b
@vasily-kirichenko
Copy link

type Client =
  { DoA: A -> unit
    DoB: B -> unit }

module Client = 
  let create (connectionString : string) =
    let session = new Session(connectionString)
    { DoA = session.Send
      DoB = session.Send }

@smoothdeveloper
Copy link

let doWithSession connectionString doIt =
  use session = new Session(connectionString)
  doIt (session :> ISessionForConsumer)

@smoothdeveloper
Copy link

type SessionHandler(connectionString) =
   member x.ManageSession doIt =
     doWithSession connectionString doIt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment