On Wednesday, 18 March 2015 at 12:45:50 UTC, CraigDillabaugh
wrote:
On Wednesday, 18 March 2015 at 12:11:52 UTC, bearophile wrote:
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
Bearophile,
You said that "Unfortunately" this thinking is going out of
style "for good reasons". I am confused (sorry, I am at work,
and didn't have time to watch the 1+ hour video you linked to -
maybe some clues were there)!
I often find myself feeling a bit like Elazar. Not long ago I
wrote some Python code using a bunch of the functional style
programming tools and I was very please with the very concise
code I had generated. Then, I had to make some modifications
to the code. It took me an inordinate amount of time just to
figure out what the code was doing, and I had written it myself
just a few days earlier!
Craig
Simple solution: use comments :-)