I watched a video series from Uncle Bob on Clean Code. He makes a few points on architecture which I both agree with but I believe could have clarification.
From Uncle Bob:
- The Interactor is connected using Boundaries
- Architecture should be fluid
- Trust your team
- Use protocols (depending on language)
- I should feel free to write and change my code as needed, when needed
- For internal only applications, we have full control and we work together
However, if I don't need protocols then can I start by not using protocols and when it's necessary to use them I convert my classes/object to conform to protocols. My main concern is the development overhead of protocol (albeit small) is not beneficial until there is >1 user of the Interactor. And 99% of the time in my apps there generally is only one Controller/Presenter connecting to my Interactor.
Further, does all that above also apply to using public/private? I generally use private when I want to convey that function shouldn't be called. Generally because it's a helper, it's dangerous to call it directly, etc. But why would I spend the effort making everything private just because?