I’ve written before about the somewhat doubtful advantages of Class-Based Views.
Since then, I’ve done more work as maintenance programmer on a Django project, and I’ve been reminded that library and framework design must take into account the fact that not all developers are experts. Even if you only hire the best, no-one can be an expert straight away.
Thinking through things more from the perspective of a maintenance programmer, my doubts about CBVs have increased, to the point where I recently tweeted that CBVs were a mistake.
So I thought I’d explain my reasons here. First, I’ll look at the motivation behind CBVs, how they are doing at solving what they are supposed to solve, and then analyse the problems with them in terms of the Zen of Python.