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