The key thing I disagree about in the article is this:
> What about interfaces/abstract base classes?
Just try writing without them, I promise it's going to be OK.
You could write the code without formal interfaces, but I hope you're going to at least put in comments that define what things you expect to be on the modules/objects you're plugging in. And hopefully your large system is composed of many modules that work together in harmony, as opposed to being just a huge mass of code.
In any non-trivial codebase, having good interfaces / contracts is key to keeping a good clean design. You can make a nice clean large codebase without OO, but you can't without good clear interfaces. It's important to know what you can change in one part of the code without having to go change the rest of the code to adapt to that change.
Python doesn't have the equivalent of C# interfaces or Java interfaces, but having a clear definition of what's expected is still helpful even in a dynamic language like Python. These definitions are helpful to make the code clear, maintainable, and understandable. At a bare minimum it's helpful to do that with comments, but doing that with something like python's ABC module is even better.
> What about interfaces/abstract base classes? Just try writing without them, I promise it's going to be OK.
You could write the code without formal interfaces, but I hope you're going to at least put in comments that define what things you expect to be on the modules/objects you're plugging in. And hopefully your large system is composed of many modules that work together in harmony, as opposed to being just a huge mass of code.
In any non-trivial codebase, having good interfaces / contracts is key to keeping a good clean design. You can make a nice clean large codebase without OO, but you can't without good clear interfaces. It's important to know what you can change in one part of the code without having to go change the rest of the code to adapt to that change.
Python doesn't have the equivalent of C# interfaces or Java interfaces, but having a clear definition of what's expected is still helpful even in a dynamic language like Python. These definitions are helpful to make the code clear, maintainable, and understandable. At a bare minimum it's helpful to do that with comments, but doing that with something like python's ABC module is even better.