views:

91

answers:

5

Is it possible to use the results of studies made into human learning in order to identify how code might be laid out to improve comprehension?

Code layout wars almost always end up defending consistency and the prevailing style, but could there be ways of laying out code that are provably better than others?

A: 

I think this comes down to personal preference. I prefer to have very little shorthand in my codes, I think it's the best way for me to comprehend what's going on inside my codes without having to remember which order shorthand works in, maybe my memory is bad.

Possibly it would be a good idea to use such studies say on a class of students learning to make codes the same way, but everyone develops their own way of coding after time. There are already "provably better ways" as laid out by the best practice suggestions for each language.

Interesting question.

Kyle Sevenoaks
+4  A: 

What is Code Layout to you?

On one hand there are these evil things called coding conventions, which place everyone in a corset. I loathe these and I believe we're far behind schedule to eliminate them. We can parse code and I do not understand, why our IDEs still display code based on the very textual format it is stored in. What's so hard in allowing each user set up his layout prefences and the IDE displays all source code accordingly? Most IDEs offer some kind of auto-format option, yet you often cannot customize how it works.

However, a far more interesting approach is whether our current point of view on source code is suitable for learning at all. Projects like Code Bubbles are pioneering a new way there. And then of course, we have model-based approaches which are often more accessible from a learner's point of view.

I'm afraid there is no definite answer to this question. In fact, if you can write down a detailed answer for it, don't forget to claim a PhD for it ;)

Frank
"Code Bubble". Looks very interseting. Do we have something similar for .NET?
ydobonmai
A: 

The biggest problem for me with understanding code is not code layout (however code should be formatted consistently) but following execution order. In complex OO source code it is hard to see the complete code involved in execution.

I think that IDE functions can help a lot for code understanding. For me (as a java developer) tools like the Call Hierarchy view in Eclipse and Mylyn are very useful.

An interesting (new) way of understanding code is shown in the Code Bubbles Project.

I expect more steps in these directions in the future.

Csaba_H
A: 

I think teaching programming may have given me some skill in this area, because to get ideas across to students you have to keep things small, simple, and introducing only one concept at a time.

However, as one of my colleagues used to say to his students:

Teaching is my job.
Learning is yours.

As that applies to programming, I think it is the programmer's responsibility to write the code so as to educate others as to what he/she is trying to accomplish, but there is no code that will be clear to readers who do not put in effort.

Mike Dunlavey
+1  A: 

Could there be ways of laying out code that are provably better than others?

Yes. This problem was studied extensively in the 1980s. You could read all about it :-)
A good university library should have Human Factors and Typography for More Readable Programs by Ronald M. Baecker and Aaron Marcus, published by Addison-Wesley in 1990.

Norman Ramsey
Funnily enough my university library card stopped working in the 80s. From the popularity of the book it doesn't seem like many of the ideas made it into general useage. Are you aware of any?
David Sykes
@David: My copy's at work, and I'm on vacation. All I can say is that with the advent of HTML, using fonts in code is more popular than ever, and I bet hackers are just churning stuff out the door---nobody cares about the science. Regarding that library card: until you get your broken card fixed, many public libraries can get stuff for you on interlibrary loan.
Norman Ramsey