Do Repeat Yourself

Quoting lead developer of Godot1:

Since everyone is talking about OOP, here is my take: I think different persons have different priorities or philosophies when designing software. For me, as a tech stack developer and as a user, clean and easy to understand API interfaces were always my #1 priority. Then, what the code does and how clean is organized internally, how much it reuses, etc. I don’t really care as much. I like to provide and to use technology that just works and does not get in the way. So, for me, OOP has always been a fantastic way to achieve this..

As you may have noticed, Juan mentioned concepts like “principles” and “philosophy” once again. He seems to have learned how to type these words but apparently hasn’t grasped their meaning! 🙃

I believe you’ll agree that a clean API should always be a top priority for all software, without exception. Failing to design a clean API would signify a failure in proper software design. Frankly, it shouldn’t be seen as merely a priority, but rather as a necessity!

Regarding “what the code does and how cleanly it is organized internally, how much it reuses, etc.,” Juan doesn’t seem to find any usefulness in these aspects. He explicitly states that he “doesn’t really care as much.” Even though Juan didn’t mention Godot specifically when discussing this (although most of his tweets are about Godot anyway), he made these remarks while telling the community that Godot is easy to modify from the source code, allowing users to tweak it themselves, which often requires tinkering with the implementation. But can it truly be easy to do so if Godot doesn’t even follow the DRY principle to begin with?

The DRY principle emphasizes avoiding redundant code by promoting code reuse and abstraction. OOP, as a programming paradigm, provides several mechanisms that support code organization, encapsulation, and reuse, which align with the goals of the DRY principle. The most amusing part is that Juan sees OOP as a way to uphold his careless style, which often involves code duplication and a severe lack of code reuse. This contradicts the very essence of OOP, which can facilitate the use of the DRY principle.

The existence of these contradictory elements raises numerous questions, to say the least. Read on!

References