On 22/10/2011, at 10:44 PM, Thiago Macieira wrote:

> On Saturday, 22 de October de 2011 11:29:38 craig.sc...@csiro.au wrote:
>> With that out of the way, I've put the class definition up on pastebin for
>> comment. I've withheld the implementation until I've had a chance to clear
>> it with our legal people. In the meantime, I think the interface of the
>> class is probably enough to get some feedback on whether people think this
>> has the potential to be a viable candidate for a command line parser for
>> Qt:
>> 
>> http://pastebin.com/45PiHzLA
>> 
>> Note that the code currently does not adhere to the Qt coding guidelines (it
>> follows ours instead), but if we do end up contributing it to Qt, then it
>> should not be too difficult to bring it into line.
> 
> Hi Craig
> 
> It's not just the coding guideline, it's the architecture. I'm not a fan of 
> tool classes with virtuals...
> 

The usage() function should not have been virtual in the first place and could 
be easily made non-virtual without lose of functionality, so that just leaves 
validate(). One could potentially leave validate() as non-pure virtual if you 
want to allow subclasses to not bother validating, but I think that's sending 
the wrong message to developers. Seems like a poor compromise just to allow 
people to use the class without having to subclass it. If you want to validate 
your flags/arguments, you are either going to have to create a new class for it 
at some point (in which case why not use a virtual validate since you are 
creating a new class anyway), or you are going to have to inline your 
validation in the code where you make use of the flags. I guess that latter 
case seems justifiable, but I'd personally prefer to see all the argument 
handling code within the one (sub)class - one class, one responsibility and all 
that. But I do think there's value in making the class encourage dev
 s towards thinking about validation. I've already seen that in our code, it 
has had the effect that devs think about and implement validation as they go 
rather than "getting around to it" later.

That said, if you have suggestions for how to achieve the same goals without 
using a virtual function, I'm open to it. The cases I've seen so far though 
just seen unnecessarily complex compared to the simplicity of the approach 
we've gone with.


--
Dr Craig Scott
Computational Software Engineering Team Leader, CSIRO (CMIS)
Melbourne, Australia



_______________________________________________
Qt5-feedback mailing list
Qt5-feedback@qt.nokia.com
http://lists.qt.nokia.com/mailman/listinfo/qt5-feedback

Reply via email to