In a comment on another blog site I had written:
Poor programmers create spaghetti code.
Average/Good/Agile programmers create “ravioli” code… Thousands of little objects.
Architects (especially ones that plan more over longer time frames) create the ideal: Lasagna code, which is a layered architecture.
Choose your pasta wisely
A few people had wanted me to blog about it so they could link to it.
I just wanted to expand on the ravioli aspect because different people have different feelings about what ravioli code is.
To some people — ravioli code — is encapsulated spaghetti. Eg, it’s spaghetti on the inside but it looks like an object on the outside. I would call this “spaghetti stuffed ravioli”.
I feel ravioli code is the “spaghetti like interaction” between the various ravioli objects…
Eg, from the outside, it’s hard to tell which Ravioli is stuffed with lobster, which one with cheese, etc.
Further reading: http://en.wikipedia.org/wiki/Spaghetti_code goes into all the code models listed above not just spaghetti.