[Development] Upgrading the sources to C++11 keywords (Q_NULLPTR, etc.)
Olivier Goffart
olivier at woboq.com
Tue Feb 10 13:05:32 CET 2015
On Tuesday 10 February 2015 11:37:28 Smith Martin wrote:
> >For those guys, no amount of documentation will save them from writing
> >bad code, so I don't think we should concern ourselves much with this case.
> >
> >I'm happy with the documentation if an educated developer reads it, and
> >is able to make the correct decision on which container class to use.
>
> You're sort of nullifying the concept of recommending best practices at all.
>
> We won't be asking the developers to include basic CS concepts when
> documenting a new class, if that's a worry. In this case, I asked for
> clarification of some points, so I could add a recommendation to QMap
> myself.
>
> I use QMap all the time, and almost certainly in situations where a vector
> would be better. Why? Because it's dead simple and I need to get it running
> now. I suppose we get used to doing the same thing the same way and don't
> always pay attention to these details when a deadline is fast approaching.
> It helps to be reminded of best practice tips from time to time when
> checking a class I use out of habit.
I think using a QMap is fine in most case.
You can sometimes get better performances with a QVector or QHash in some
cases.
However, using QVector in place of a QMap tends to lead to code that might be
more complicated to write and understand.
Also using a QVector when QMap would have been better might lead to O(n^2)
complexity which is even worse.
So I'd be careful recommending to use QVector over QMap.
Regarding the documentation:
The complexity of QList, QVector, QMap and QHash is already explain in the
documentation. http://doc.qt.io/qt-5/containers.html .
There are implementation details about QList which are not documented but
probably should because they make the difference.
About the best practice, there could perhaps be a wiki page with them. Just
like the Qt coding style do not belong in the documentation.
--
Olivier
Woboq - Qt services and support - http://woboq.com - http://code.woboq.org
More information about the Development
mailing list