-10

Given a class diagram , how can we find design issues in it. I am not talking about the relationships it should be representing as they exist in the real world but i am talking about design issues that make show up in it like cycle among classes.

  • 7
    Does this answer your question? How to find defects in class diagram? – πάντα ῥεῖ May 9 at 23:00
  • 1
    If one of your question gets closed, don't reask it again here (even if you just do it to write your own answer). It will only get downvoted, closed and deleted quickly (and you risk to get a ban on asking more questions). Instead, try to fix the issues with your former question to start the reopening process (which might be possible here). Asking about "most common defects" is too broad. Asking about specific things (like the SOLID principles) would be way more focussed. – Doc Brown May 10 at 7:21
  • .. and what you wrote in your answer below could be part of the question (mentioning the things you already found out by yourself usually improves a question). – Doc Brown May 10 at 7:24
-5
  • Do the classes/objects have data elements or getter/setters and no actual business methods. If yes, immediate red flag, design is probably a database model or some procedural type design.
  • Cyclic dependencies.
  • The amount of technical jargon in class and method names. Ideally none, the more there is, the worse the design probably is. Technical jargon is things like: Manager, Entity, ValueObject, Object, Repository, Service, etc. None of these things should be visible.
| improve this answer | |
  • I would agree that technical jargon should be avoided in your business classes. The closer a class gets to the infrastructure that supports the application the more you will see technical jargon, because it helps identify the class's purpose. Also, for classes that contain only data, data transfer objects are a useful pattern for communication between processes. – Greg Burghardt May 10 at 0:25
  • Best OO advice I ever read was, if you have something named "FooManager" or "FooEntity", rename it to "Foo". Only revert back to "FooManager" if that is really meaningful and necessary. – user949300 May 10 at 0:32

Not the answer you're looking for? Browse other questions tagged or ask your own question.