kossebau added a comment.

  As excuse for bad drive-by comment, here now hopefully making up a bit by 
giving some in-detail review, please see in-line comments.
  
  No idea about exceptions.
  
  I would the noexcept also make a different commit, for more separation of 
concerns. When looking at the history, such "All kind of tool-found 
improvements" are not nice when checking for changes which could have added 
regressions. IMHO.

INLINE COMMENTS

> kcoredirlister.cpp:1551
>          DirItem *dir = itu.value();
> -        QUrl oldDirUrl(itu.key());
> +        const QUrl &oldDirUrl(itu.key());
>          qCDebug(KIO_CORE_DIRLISTER) << "itemInUse:" << oldDirUrl;

For consistency I would make this an assignment, IMHO also easier to read and 
not to be mixed up with a function call on quick sight (quick sights might be a 
problem of mine, but surely also others :) ):

  onst QUrl &oldDirUrl = itu.key();

> kcoredirlister.cpp:1944
>      for (; itu != ituend; ++itu) {
> -        const QUrl deletedUrl(itu.key());
> +        const QUrl &deletedUrl(itu.key());
>          if (dirUrl == deletedUrl || dirUrl.isParentOf(deletedUrl)) {

dito

> slavebase.h:363
>       */
> -    QString configValue(QString key, const QString &defaultValue=QString()) 
> const;
> +    QString configValue(const QString &key, const QString 
> &defaultValue=QString()) const;
>  

while touching the line, please also add spaces around the = -> `defaultValue = 
QString())`

> ftp.cpp:1378
>      Q_ASSERT(!filename.isEmpty());
> -    QString search = filename;
> +    const QString &search = filename;
>  

This here makes the code fragile and more confusing. What is the difference 
between `filename` & `search`? Why is `filename` not const? Can it ever change? 
Would that be fine for `search` to change as well?
So while seemingly a correct optimization, as `filename` seems not passed to 
any method modifying it, the resulting code is very strange to a human reader, 
the intent behind to have `search` being a const reference to `filename` seems 
mysterious.

Without having understood the code, I would simply also make `filename` a const 
variable, and add a hint why search is a const reference only (hinting this is 
for optimization).
Though actually `search` could be possibly be removed and checked what the 
purpose of the asserts have been and merge this with the code upfront. But 
outside of scope here, so leaving just a TODO for the next person should be 
fine. One can still be the next person oneself :)

> kcookiejar.cpp:1103
>  {
> -    QString domain(_domain);
> +    const QString &domain(_domain);
>      KHttpCookieList *cookieList = m_cookieDomains.value(domain);

This here seems some overleft from when the method actually needed a modfyable 
copy of _domain. Seems this in no longer the case.
So we can just rename `_domain` to `domain` in the arg list instead, and be 
done.

> script.cpp:201
>  // @returns true if @p host doesn't contains a domain part
> -Q_INVOKABLE QJSValue IsPlainHostName(QString string)
> +Q_INVOKABLE QJSValue IsPlainHostName(const QString &string)
>  {

Not an expert on Q_INVOKABLE & script access, I have seen people using 
non-const-ref arguments, perhaps they are needed other than with signals & 
slots?

Asked the person who wrote this code in D23801#556957 
<https://phabricator.kde.org/D23801#556957>

> sslui.cpp:87
>                  QList<KSslError::Error> errors;
> -                for (const KSslError &error : qAsConst(ud->sslErrors)) {
> +                for (const QSslError &error : qAsConst(ud->sslErrors)) {
>                      if (error.certificate() == cert) {

Seems this slipped in, being out of scope :) So please remove from patch again.

REPOSITORY
  R241 KIO

REVISION DETAIL
  https://phabricator.kde.org/D25039

To: meven, #frameworks, dfaure
Cc: kossebau, kde-frameworks-devel, LeGast00n, GB_2, michaelh, ngraham, bruns

Reply via email to