Linked by Thom Holwerda on Fri 15th Feb 2013 10:40 UTC
General Development "Since I left my job at Amazon I have spent a lot of time reading great source code. Having exhausted the insanely good idSoftware pool, the next thing to read was one of the greatest game of all time: Duke Nukem 3D and the engine powering it named 'Build'. It turned out to be a difficult experience: The engine delivered great value and ranked high in terms of speed, stability and memory consumption but my enthousiasm met a source code controversial in terms of organization, best practices and comments/documentation. This reading session taught me a lot about code legacy and what helps a software live long." Hail to the king, baby.
Thread beginning with comment 552754
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[2]: Comment by ilovebeer
by ilovebeer on Sat 16th Feb 2013 16:08 UTC in reply to "RE: Comment by ilovebeer"
ilovebeer
Member since:
2011-08-08

If nobody needs to read the code, who cares how readable it is.

Presumable it's going to be read by at least one person.


Yes, the person writing it. I don't see a big risk there that he has no clue how to read his own work.

If nobody needs to add things to it, who cares how readable it is. If nobody needs to maintain it, who cares how readable it is.

No, because programming is engineering and there are right ways of doing things and wrong ways of doing things.


I see this argument all the time... One group (which I lean towards), says if it's stable and works then it's stable and works and you can not argue with that. The other group says no it's wrong because they disagree with how something was done.

You can't get around the fact that if the software works it has been engineered correctly because it's doing what it was designed to do. One of the worst things people do is try to fix things that aren't broken. Unless there's an actual need to rewrite something, it's a complete waste to do so.

Reply Parent Score: 2

RE[3]: Comment by ilovebeer
by Soulbender on Sun 17th Feb 2013 02:29 in reply to "RE[2]: Comment by ilovebeer"
Soulbender Member since:
2005-08-18

You can't get around the fact that if the software works it has been engineered correctly because it's doing what it was designed to do.


Uh no. That's like saying Trabant was a good car because it worked. Working is not a measurement of good engineering, for numerous reasons. For one, badly written code is hard to verify by both manual or automatic means so it's hard to know if it actually works and under what circumstances it will work or fail. Secondly, what works right now might not work tomorrow or next week. We don't live in a static world and it's a lot easier to adapt well-written and structured code to changing requirements.

In my experience, most people who argue that the end, "working" programs, justifies the means are those who write terrible and fragile code.

One of the worst things people do is try to fix things that aren't broken. Unless there's an actual need to rewrite something, it's a complete waste to do so.


Sure but it's a completely different thing and we're not talking about rewriting code. We're talking about doing it right in the first place.

Reply Parent Score: 3

RE[4]: Comment by ilovebeer
by ilovebeer on Sun 17th Feb 2013 03:48 in reply to "RE[3]: Comment by ilovebeer"
ilovebeer Member since:
2011-08-08

You can't get around the fact that if the software works it has been engineered correctly because it's doing what it was designed to do.

Uh no. That's like saying Trabant was a good car because it worked. Working is not a measurement of good engineering, for numerous reasons. For one, badly written code is hard to verify by both manual or automatic means so it's hard to know if it actually works and under what circumstances it will work or fail. Secondly, what works right now might not work tomorrow or next week. We don't live in a static world and it's a lot easier to adapt well-written and structured code to changing requirements.

You're assuming something other than using the software is required to know if it works. You're assuming the software working is conditional. You're playing "what if" by suggesting it may not work tomorrow. In _some cases_ you have a valid point. However, in other cases it simply doesn't apply or is untrue.

Also, your idea of what is "well-written and structured" can be and is very different from what other people deem as the same. One huge thing you seem to be missing is that personal opinion plays a large role in making judgments about someones code. I know several great coders who are often times in disagreement about code-related issues. To put it simply, coding is not black & white the way you think it is. It's not correct or incorrect. It's not right or wrong. There is a lot of grey area and more than one way to skin a cat.

In my experience, most people who argue that the end, "working" programs, justifies the means are those who write terrible and fragile code.

In many cases that may be true. In many cases it is not.

One of the worst things people do is try to fix things that aren't broken. Unless there's an actual need to rewrite something, it's a complete waste to do so.

Sure but it's a completely different thing and we're not talking about rewriting code. We're talking about doing it right in the first place.

Again, what's "right" is often times a matter of opinion therefore there is no right or wrong -- only working and non-working.

Making assumptions about things that don't apply (when they don't apply) is pointless. Unnecessarily over-complicating things is pointless. "Fixing" something that isn't broken is pointless. Deeming software to be "wrong" because it doesn't follow your own coding philosophies is pointless.

Earlier you pointed that we don't live in a static world. In addition to that, coding `rightness` and `wrongness` isn't always static either.

Reply Parent Score: 2

RE[3]: Comment by ilovebeer
by allanregistos on Mon 18th Feb 2013 23:24 in reply to "RE[2]: Comment by ilovebeer"
allanregistos Member since:
2011-02-10

"If nobody needs to read the code, who cares how readable it is.

Presumable it's going to be read by at least one person.


Yes, the person writing it. I don't see a big risk there that he has no clue how to read his own work.

If nobody needs to add things to it, who cares how readable it is. If nobody needs to maintain it, who cares how readable it is.

No, because programming is engineering and there are right ways of doing things and wrong ways of doing things.


I see this argument all the time... One group (which I lean towards), says if it's stable and works then it's stable and works and you can not argue with that. The other group says no it's wrong because they disagree with how something was done.

You can't get around the fact that if the software works it has been engineered correctly because it's doing what it was designed to do. One of the worst things people do is try to fix things that aren't broken. Unless there's an actual need to rewrite something, it's a complete waste to do so.
"

Hi ilovebeer.
I agree with your first point that arguing against some coding styles sometimes will not make any sense. But coding style and the choice of language sometimes matters even if you think at the time of your code writing that nobody will going to peruse your code. I think it is important because we need to maintain the code, you have to go to your code again and again to debug/modify something and it helps when you put things
in order. It is better to have our own coding conventions as our guide.

Reply Parent Score: 1