Channels ▼

Christopher Diggins

Dr. Dobb's Bloggers

What is the Definition of Elegant Code?

December 05, 2009

I always try to write elegant code, but what does that mean exactly? Up until now, it was always a "I knows it when I sees it" kind of thing, but I believe I have captured the key points that define elegant code for myself.

In commenting an algorithm I wrote recently in theHeron interpreterfor resolving types,I felt an apology was in order to the reader. The algorithm I used for resolving types didn't feel very elegant, but I couldn't think of anything better. The problem I had at first was that I wasn't sure what made the algorithm inelegant.

In short the algorithm is this: when creating the abstract syntax tree (AST) I create place-holders of type "UnresolvedType" which contain the type name as a string. These are then replaced with the concrete type during a second pass over the AST. This is because the necessary information to create a proper HeronType is not available until the AST is fully constructed.

In forcing myself to try and write the comment, I realize that the source of inelegance was that it was too easy for a programmer to forget to resolve a type afterwards (which I had in fact done, and am currently correcting!).

However, I also realized that some of the other criteria I have for elegance were satisfied. This prompted me to summarize herewhat my criteria for elegant code:

  • It is succinct
  • It is easy to understand
  • Each function does one well-defined task
  • It conveys the programmer's intent
  • It reflects the problem domain
  • It is easy to modify and reuse
  • If it fails, it is easy to identify that it is has failed, where it has failed, and why it has failed.
  • Its behavior (in good and bad conditions) is easy to predict

So what is your definition of elegant code?

Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video