Review request for KSecretsService components
Albert Astals Cid
aacid at kde.org
Thu Nov 10 01:08:12 GMT 2011
A Dijous, 10 de novembre de 2011, Valentin Rusu vàreu escriure:
> On 11/10/2011 01:00 AM, Valentin Rusu wrote:
> > On 11/10/2011 12:48 AM, Albert Astals Cid wrote:
> >>>> * createItem falls in the "let's use a bool instead of an
> >>>> enum
> >>>> because it>
> >>>>
> >>>> just have two values" trap for the replace parameter
> >>>
> >>> Well, I don't agree. When presenting a new item to the collection,
> >>> you
> >>> should specify to replace existing item or not. Yes/No is boolean
> >>> for me.
> >>
> >> That is the problem, that a boolean is Yes/No, and then you end up
> >> with a call
> >> that says
> >>
> >> foo->createItem(label, attributes, mySecret, false);
> >>
> >> And it seems you do not want to create the item :D while
> >>
> >> foo->createItem(label, attributes, mySecret, DoNotReplace);
> >>
> >> is much more obvious.
> >> More on my side at
> >> http://wiki.qt-project.org/API_Design_Principles#The_Boolean_Parameter
> >> _Trap
> >>
> >> and
> >> http://ariya.ofilabs.com/2011/08/hall-of-api-shame-boolean-trap.html
> >
> > Ok, I see. I'll change that.
>
> Well, In fact I changed my mind, as the enum must be a member of
> Collection class, but required to be used in the create job and nested
> enums cannot be forward declared. So that'll require to move the enum
> outside of the Collection class, leading to even uglier code.
There is a solution for this, the CreateCollectionItemJob constructor should
accept a CreateCollectionItemJobPrivate instead of all the params (since i
understand it does not make sense for me creating one directly and I will only
get one thought Collection::createItem (reason to make it private too?)). This
way you do not need a replace member in the constructor since Collection
passes the CreateCollectionItemJobPrivate directly.
Probably the same argument for making the constructor private for all the
other jobs applies too.
Albert
> So I'll
> stay with the boolean, wich also corresponds to the freedesktop.org dbus
> interfaces spec, btw.
>
> --
> Valentin Rusu (IRC valir, KDE vrusu)
> KSecretsService (former KSecretService, KWallet replacement)
More information about the kde-core-devel
mailing list