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.uhnak@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