[Development] QCommandLineParser

Александр Волков volkov0aa at gmail.com
Thu Aug 1 20:49:00 CEST 2013

On Mon, Jul 29, 2013 at 08:38:38PM +0200, David Faure wrote:
> I also ported all of KDE Frameworks 5's executables.

Just compare how it was (kconf_update):
> KCmdLineOptions options;
> options.add("debug", ki18n("Keep output results from scripts"));
> options.add("check <update-file>", ki18n("Check whether config file 
> itself requires updating"));
> options.add("+[file]", ki18n("File to read update instructions from"));
> ...
> KCmdLineArgs::init(argc, argv, &aboutData);
> KCmdLineArgs::addCmdLineOptions(options);

And how it looks now:
> QCommandLineParser *parser = new QCommandLineParser;
> parser->addVersionOption("1.1");
> parser->addHelpOption(QCoreApplication::translate("main", "KDE Tool 
> for updating user configuration files"));
> parser->addOption(QCommandLineOption(QStringList() << "debug", 
> QCoreApplication::translate("main", "Keep output results from scripts")));
> parser->addOption(QCommandLineOption(QStringList() << "check", 
> QCoreApplication::translate("main", "Check whether config file itself 
> requires updating"), QCommandLineOption::WithValue));
> parser->addOption(QCommandLineOption(QStringList() << "+[file]", 
> QCoreApplication::translate("main", "File to read update instructions 
> from")));

It's really bad to make programmers write an excessive code like 
"QCommandLineOption(QStringList() <<".
It's even worse in uic and moc:
> QCommandLineOption dependenciesOption(QStringList() << 
> QStringLiteral("d") << QStringLiteral("dependencies"));
> dependenciesOption.setDescription(QStringLiteral("Display the 
> dependencies."));
> parser.addOption(dependenciesOption);

Why??? It must be like that: options.add("d").add("dependencies", 
QStringLiteral("Display the dependencies."));
I feel like I'm in a nightmare. What's the point to invent a bicycle 
that's worse than the existing one?

More information about the Development mailing list