So yes, a component or “module” can be broken up into smaller parts. You’re contradicting what you said here:
If all logic is in the same component, it doesn’t necessarily mean the same class! (In fact it most certainly does not in most cases!). So yes, all GUI code should be in its own COMPONENT but that component can (And should if we follow SRP) be split into sub-components, or submodules as you just referred to them.
Again this goes back to your misuse of SRP/SoC. In this scenario a component fulfils a concern, that component may be made up of many classes. SRP is applied at a class level, not a component level. This has been explained to you by Scott and others on at least a dozen occasions.
Let’s put it this way: If SRP and SoC are the same thing, why do they have different wikipedia pages?
First of all, the MVC patterns/ architecture says nothing about classes in particular at all. This is obviously another one of your misunderstandings or twisting of facts to fit your prerogatives.
Secondly, you need more than three classes, because a view, or a controller or a model aren’t singular responsibilities, but rather main concerns within the application’s architecture. To me, overall, the MVC pattern is the main behavior an MVC framework offers. Each one of the 3 MVC concerns also have a good number of objects and tasks needed to achieve the goals of the framework and the application. These objects and tasks are the responsibilities.
It looks like you are mixing up the concerns of MVC and understanding them as single responsibilities. This is why your framework is missing out on class fidelity ( a term I just coined myself).
class fidelity - when an experienced programmer new to an application can relatively easily determine the single responsibilities of classes.
No more or no less than any source that you can quote. The fact that there are thousands of different articles on the internet on any given subject, and these articles are filled with different and sometimes contradictory opinions is a constant source of confusion for everyone. The only option is to choose the articles that make the most sense to you. The fact that you and I have different opinions on so many subjects is a fact of life, so get used to it. Just because my opinion is different does not automatically make it wrong, just different.
That is because I cannot answer that question with a simple “yes” or “no”. It is such a complicated subject that sometimes the only sensible answer is “it depends”.
Neither does any book or internet article, they just represent an opinion with which you can either agree or disagree. I agree with some but not others - so what??? I cannot possibly agree with every opinion out there, so stop making a fuss about it.
The title of that document is “The Single Responsibility Principle” and in it he uses the words “This is the reason we separate concerns”. Any reasonable person would therefore conclude that “separation of responsibilities” has EXACTLY the same meaning as “separation of concerns”.
No I have not. I have clearly demonstrated that I agree with SOME opinions, just not the same ones as you. So what??? There are so many contradictory opinions out there it is physically impossible to agree with every one of them.
If you read the numerous articles on my website you will see references to those opinions with which I DO agree. so claiming that I disagree with everyone is a terminological inexactitude of gargantuan proportions.
And you don’t???
I do not work in the academic sphere, I work in the commercial sphere which operates under a different set of rules where there has to be a compromise between “perfection” and “workable”
But you do take concepts that come from academia and redefine them so they fit your existing code. There is a difference between theory and practice, of course, but that doesn’t mean that practice gets to redefine theoretical concepts. You don’t get to redefine relativity because you don’t like not being able to travel faster than the speed of light.
Because you clearly don’t understand what an authority is, who comes up with the concepts you abuse in the first place and even why they exist. You just see your own framework and then see someone say “SRP” and you then say “Well I must already be doing that” go look at the definition and try to make it fit, unsuccessfully, I might add.
Lets put it this way: If you were looking up a treatment for a disease would you trust wikipedia over a study in the BMJ? The same applies in computing, we just have different journals. IEEE is probably the most well known journal publisher in computing/engineering.
In object-oriented programming, the single responsibility principle states that every class should have responsibility over a single part of the functionality provided by the software, and that responsibility should be entirely encapsulated by the class. All its services should be narrowly aligned with that responsibility.
The MVC design pattern specifically mentions three components or objects, so it is reasonable to assume that each of those objects can be supplied from its own class. To say otherwise is to read something which isn’t there.
I disagree. A Controller is responsible for (or concerned with) all control logic. A View is responsible for (or concerned with) all view logic. A Model is responsible for (or concerned with) all domain or business logic.
It is therefore reasonable to assume that I can have a single class for each.
“concerned with” and “responsible for” mean exactly the same thing.
In a purely english sense perhaps, however they have been used to describe particular concepts in OOP. It’s like saying “Car and Automobile mean exactly the same thing” ignoring the fact that “car” can also be used in the context of trains. In which case, they are not the same thing at all. Nuance really isn’t your strong point.
Question: What is the difference between Theory and Practice.
Answer: In Theory there is no difference but in Practice there is.
In practice a theory is sometimes toned down so that it can be applied in a practical way. Theory may define “purity” but sometimes in the real world a working solution can be quicker and cheaper to build than a 100% pure solution. It is a question of balance, of trade-offs.
So you are the only person who can decide which articles have “authority” and which are worthless? Pull the other one, it’s got bells on!!
I have learned not to trust every opinion by every so-called “expert”, especially government experts. How many “expert opinions” have been completely reversed by a different opinion a few years later?
That is EXACTLY what I have implemented. Each of my Model classes is responsible for the business rules associated with a single database table. I have separate classes which deal with control logic, view logic and data access logic. You may have a different opinion, but that doesn’t mean that your opinion is the only one worth having.
Unlike you, most people build their code to fit the underlying concepts.
But again, that doesn’t mean you get to redefine the theoretical terms to fit your application. So far you’ve redefined encapsulation, SRP, SoC, coupling and “software component” in order to fit your needs and make the claim “My code follows the concepts!!”. Instead, you should build your code based on the concepts, not redefine the concepts to fit your code.
I am not deciding anything at all. Peer Reviewed Journals are authoratitive because they are published after having extensive scrutinization by experts in the field. Nothing gets into a journal before being heavily critiqued by people at the top of the field. Again, I suggest you go and look up what peer review is because you clearly don’t understand it.
Exactly. And this is a good thing: New data comes along to show that the old theory was wrong and we change treatments based upon the new evidence. At any time the evidence can change, of course but your approach is ignoring the evidence and sticking to what you already have even if a new, measurably better treatment has come out and then claiming “The old treatment is better!!!” or saying “I’m already using the new treatment!!” by redefining what others mean.