01.07.2016, 21:37, "Thiago Macieira" <thiago.macie...@intel.com>: > Premises not under discussion: > > Qt source code is product and meant to be read by our users > Qt source code must be clean and readable > > The above is not up for debate. > > For some time now, we've had a flurry of changes to Qt source code that uses > the Standard Library's containers and algorithms, in the name of performance > and often code size gains. > > I'm not disputing that there is a gain. But I am wondering about the trade-off > we're making with regards to readability. For example, I was just reviewing > this code: > > if (d->currentReadChannel >= d->readHeaders.size() > || d->readHeaders[d->currentReadChannel].empty()) { > Q_ASSERT(d->buffer.isEmpty()); > > The use of the Standard Library member "empty" is highly confusing at first > sight because it does not follow the Qt naming guidelines. It's even more > confusing because the next line has "isEmpty". When I read this code, I had to > wonder if that "empty" was a verb in the imperative, meaning the author was > trying to remove all elements from the container. > > I had to look up the definition of readHeaders in the review and note that it > was a std::deque, not a Qt container.
STL was standardized 18 years ago, I think it should be enough to get used to empty(). > > What do we do? > > Option 1: > Not use Standard Library containers, just use the Qt containers as they exist. > > Option 2: > Create new Qt containers to have the same complexity as Standard Library > containers, but following the Qt naming conventions. Possibly with implicit > sharing. > > Option 3: > Create Qt API wrappers for those containers like std::deque, adding only a few > inline functions to match the Qt-style API where the Standard Library API > deviates. Examples are: > empty -> isEmpty > push_back -> append > front -> first > pop_front -> takeFirst > cbegin -> constBegin > cfind -> constFind > > -- > Thiago Macieira - thiago.macieira (AT) intel.com > Software Architect - Intel Open Source Technology Center > > _______________________________________________ > Development mailing list > Development@qt-project.org > http://lists.qt-project.org/mailman/listinfo/development -- Regards, Konstantin _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development