Greetings,
I am trying to convert my mind from OO (C#) to one more functionally
friendly. I am increasingly comfortable with simple applications in
clojure, but as I start to build more complex applications, I start to fall
down about how to structure my application. I don't want to just shove OO
ideas into the functional nature of Clojure. I'm looking for any help
someone can provide to help shimmy my brain into the right mental patterns.
Background: Long time C# developer who leans heavily on IoC / DI /
Interfaces / Testing / Object Encapsulation.
*Specific Question: Object Encapsulation*
I feel like my function parameter lists are much "wider" than they would be
in C#. This is due to the "lack" of a constructor. So if I previously had a
C# class that looked like:
public class AccountRepository : IAccountRepository
{
IDatabaseConnection _connection;
public AccountRepository(IDatabaseConnection connection)
{
_connection = connection;
}
public void Save(Account account)
{
_connection.Execute("UPDATE accounts SET coupon=@coupon WHERE id=@id",
{ coupon = account.Coupon, id=account.Id});
}
}
In the above I have encapsulated the "_connection", the other methods don't
have to deal with it. In Clojure (especially if you are following Sierra's
Component pattern) you end up with
(defn save [db account]
(update db (:coupon account) (:id account))
)
I end up having to pass this 'db' around all over the place. I think that
this is just something I'll have to get used to more than anything. Am I
missing anything?
Thank you for your time.
-d
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.