Why not directly on TwitterClient ? That would be easiest for the user, then they do not need to know about TwitterConfiguration. Anyway, that is how I do it most often. The disadvantage is that TwitterClient might become a bit heavy, API wise, but you can delegate internally.
> On 11 Feb 2018, at 16:25, Peter Uhnák <i.uh...@gmail.com> wrote: > > Hi, > > are there any best practices/idioms in regards to object > configuration/building? > > Let's say I want to configure a TwitterClient that requires a username and a > password that is stored in a separate object TwitterConfiguration > > a) the basic approach (either separate sends or via cascade, that is not > relevant here) > > client := TwitterClient new. > client configuration username: 'XX'. > client configuration password: 'YY'. > > > b) #in: ... > > It feels a bit more organized as it basically groups related operations > together. > Also maybe avoiding demeter a bit? > > client := TwitterClient new. > client configuration in: [ :config | > config username: 'XX'. > config password: 'YY'. > ]. > > c) custom #somethingDo: method that basically does #in: > > Again, feels more organized. Additionally one could perform some validation > afterwards (to make sure the credentials are ok or whatever). > > client := TwitterClient new. > client configurationDo: [ :config | > config username: 'XX'. > config password: 'YY' > ]. > > Any thoughts on this? > > Thanks, > Peter