Linked by Thom Holwerda on Tue 15th Jan 2013 21:24 UTC
General Development "I was really excited to write this article, because it gave me an excuse to really think about what beautiful code is. I still don't think I know, and maybe it's entirely subjective. I do think the two biggest things, for me at least, are stylistic indenting and maximum const-ness. A lot of the stylistic choices are definitely my personal preferences, and I'm sure other programmers will have different opinions. I think the choice of what style to use is up to whoever has to read and write the code, but I certainly think it's something worth thinking about. I would suggest everyone look at the Doom 3 source code because I think it exemplifies beautiful code, as a complete package: from system design down to how to tab space the characters." John Carmack himself replies in the comments.
Thread beginning with comment 548938
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE: Good article
by ssokolow on Tue 15th Jan 2013 23:57 UTC in reply to "Good article"
ssokolow
Member since:
2010-01-21


One thing that struck me is the part about where to put the braces. Personally, braces just look messy to me, so I'd rather use a language without them. IMHO, having a terminating statement like 'END IF' is a lot more elegant than having braces all over the f**king place.

And don't even get me started on semi-colons ;)


I'll agree with you on the semicolons and I do like Python's indent-based block syntax, but using words rather than curly braces is one of the reasons I've never tried to learn Ruby and refer to it as the bastard child of Java, Perl, and BASIC.

(Though by no means the only reason. The standard library and core language syntax are full of caveats, the Unicode support is inferior to Python's, it's not used much outside of Rails and apps based on it, etc.)

I think curly braces stand out more from the rest of the code than yet another word.


Agreed. The only thing that stands out more is probably the indenting itself.

You'll learn to love them; like the most of us ;)

You can start flamewars just because of mentioning where the curly braces should be!!

I actually prefer writing:

int main()
{
}


to

int main() {
}

but, apart of feeling it more natural and making easier to see where a block starts and ends, I do not have any excuse to prefer it over the other one.


Seeing all that wasted vertical space just drives me nuts. (Partly because it means more scrolling, more time spent repositioning my Vim cursor when scrolling drags it along for the ride, and more time reacquiring my train of thought when scrolling sometimes disrupts it)

...not to mention it doesn't fit as nicely with my Python-originated mental model that an indent level (syntactic block) is generally associated with the first line prior.

In fact, I'm sure that, in some places, I've been guilty of writing slightly less than ideal code using things like the ternary operator (PHP, mostly) and list comprehensions (Python) in order to vertically-compact my code.

Edited 2013-01-15 23:59 UTC

Reply Parent Score: 4

RE[2]: Good article
by kwan_e on Wed 16th Jan 2013 00:07 in reply to "RE: Good article"
kwan_e Member since:
2007-02-18

In fact, I'm sure that, in some places, I've been guilty of writing slightly less than ideal code using things like the ternary operator (PHP, mostly) and list comprehensions (Python) in order to vertically-compact my code.


I personally think list comprehensions are a cool feature and should be used more, not just in Python. It may be harder to figure out what it does, but at a glance, at least you can tell what kind of things are in the list.

Reply Parent Score: 2

RE[3]: Good article
by ssokolow on Wed 16th Jan 2013 06:28 in reply to "RE[2]: Good article"
ssokolow Member since:
2010-01-21

I personally think list comprehensions are a cool feature and should be used more, not just in Python. It may be harder to figure out what it does, but at a glance, at least you can tell what kind of things are in the list.


I normally agree wholeheartedly (one of many reasons why I love using CoffeeScript in place of writing Javascript directly), but even they can be abused.

See, for example, this inefficient one-liner I've used as a disposable snippet for doing 90% of the parsing of simple, un-sectioned, unquoted rcfile-like key=value files in reference-counted implementations of Python:

dict([line.strip().split('=') for line in open(whatever) if line.strip() and not line.lstrip().startswith('#')])

(90% because it still needs an extra step to trim whitespace from the key and value names but I don't remember off-hand how to cram that into the same line.)

Reply Parent Score: 2

RE[2]: Good article
by galvanash on Wed 16th Jan 2013 00:43 in reply to "RE: Good article"
galvanash Member since:
2006-01-25

Yeah... The beauty of indent-controlled blocking in languages like Python and Coffeescript is that it kills multiple birds with one stone:

1. It eliminates a lot of noise.
2. It makes something that everyone does anyway for readability actually mean something.
3. It effectively kills most styling arguments (not all, but most).

Anyway, I'm quite fond of it.

Reply Parent Score: 2

RE[2]: Good article
by moondevil on Wed 16th Jan 2013 10:04 in reply to "RE: Good article"
moondevil Member since:
2005-07-08

And then the nicely formatted code gets thrown away when another team member gets to touch the code.

That is why I just follow what is the project guidelines, regardless how I feel about them.

Reply Parent Score: 3