Existe um oposto conciso de "está vazio"?

As interfaces para as classes de sequência geralmente têm o método denominadoIsEmpty (VCL) ouempty (STL) Isso é absolutamente razoável, porque é um caso especial, mas o código que usa esses métodos geralmente precisa negar esse predicado, o que leva a um"óptico (e até psicológico)a sobrecarga" (o ponto de exclamação não é muito óbvio, especialmente depois de um parêntese de abertura). Veja, por exemplo, este código (simplificado):

/// format an optional time specification for output
std::string fmtTime(const std::string& start, const std::string& end)
{
    std::string time;
    if (!start.empty() || !end.empty()) {
        if (!start.empty() && !end.empty()) {
            time = "from "+start+" to "+end;
        } else {
            if (end.empty()) {
                time = "since "+start;
            } else {
                time = "until "+end;
            }
        }
    }
    return time;
}

Temquatro negações, porque os casos vazios são aqueles a serem ignorados. Costumo observar esse tipo de negação, também ao projetar interfaces, e énão é um grande problema mas é chato. Eu só desejo apoiar a escrita de códigos compreensíveis e fáceis de ler. Espero que você entenda meu ponto de vista.

Talvez eu esteja apenas com cegueira: como você resolveria o problema acima?

Editar: Depois de ler alguns comentários, acho que é necessário dizer que o código original usa a classeSystem::AnsiString do VCL. Esta classe fornece umaIsEmpty método, que é muito legível:

 if (text.IsEmpty()) { /* ... */ } // read: if text is empty ...

se não for negado:

 if (!text.IsEmpty()) { /* ... */} // read: if not text is empty ... 

...ao invés dese o texto não estiver vazio. Eu acho que o literalis era melhor deixar à fantasia do leitor deixar que a negação também funcionasse bem. Ok, talvez não seja um problema generalizado ...

questionAnswers(11)

yourAnswerToTheQuestion