Elazar Leibovich:

I personally, would have no idea what this piece of code is doing upon first sight. I'll have to look at the documentation of
at least two functions to understand that, and I'll have to
think carefully about what and who would throw in case of an error.

Something like

    while (n != EOF) {
        n = read(fd, buf, sizeof(buf));
        if (n==-1) throw(...);
        if (strcmp(buf, PREFIX) == 0) {
             return buf;
        }
    }
    return NULL;

Requires no prior knowledge, and have similar effect.

I'd rather have a loop written by hand in my production code any day, so that when debugging it, and reading it I'll have easier time
to understand it, even though it would cost me a few more lines
when writing the code.

Unfortunately your thinking is mostly obsolete, the programming world (well, most of it, Go is one exception) is going in the opposite direction, and for good reasons. An explanation:
https://channel9.msdn.com/Events/GoingNative/2013/Cpp-Seasoning

Bye,
bearophile

Reply via email to