Building at a Single Level of Abstraction

Learn how to tackle different levels of abstractions in code.

Handling abstractions

As we’re building the quiz, we’ll continue to build single-purpose functions that are easy to compose. One of the things that makes code easy or hard to read is the number of abstractions a programmer has to deal with at once. In programming, abstraction is just a way to simplify a complex idea or action. It turns out that we can handle many different abstractions if those abstractions are:

  • Well named

  • Well organized

  • Close together

This concept is the single level of abstraction principle introduced by Bob Martin.

Choosing a random question

The single level of abstraction principle says that each line of a function or method should be at the same level of abstraction. It’s a tough principle to articulate, but you’ll generally know it when you see it. A good example of that principle is ourselect_question function. We’ll open up /lib/mastery/core/quiz.ex and key this in:

Get hands-on with 1200+ tech skills courses.