The Chronicle 4 min read
Object-Oriented Design

Common LLD Design Mistakes (And How to Spot Them on a Class Diagram)

Train your eye for God classes, wrong inheritance, and coupling problems before the interviewer does

L
LLDCanvas Team·Engineering
October 10, 2026
4 min read 14 views 0 likes
☰ Jump to section

In LLD rounds, interviewers often care as much about what you refuse to put in a class as what you include. Candidates who can name smells on a diagram — before writing a line of implementation — look senior. Candidates who only notice problems after the code is a mess look junior, even if they eventually fix it.

This guide catalogs the common LLD design mistakes you should recognize from structure alone, plus the visual cues that give them away on a class diagram.


011. God Class / Blob

One type owns the universe: validation, storage, email, pricing, and UI mapping.

  • Diagram cue: long method list; many associations leaving a single box.
  • Interview cue: you struggle to name the class in one phrase.
  • First question: “What are the reasons this class would change?” If you list three unrelated reasons, SRP is already on fire.
text
OrderManager
  + createOrder()
  + validatePayment()
  + chargeCard()
  + sendEmail()
  + updateInventory()
  + renderInvoicePdf()
  + writeMetrics()

022. Wrong Inheritance

Inheritance models is-a that preserves behavior expectations (Liskov). Using it as a cheap share-methods tool creates fragile hierarchies.

  • Classic smell: Stack extends ArrayList — stacks are not array lists.
  • Classic smell: Square extends Rectangle when setters break invariants.
  • Diagram cue: inheritance arrow between types that need different lifecycles or contracts.

033. Missing Abstraction at a Volatility Point

If the prompt mentions multiple providers, channels, or strategies, and your diagram only shows concrete classes calling each other, OCP pain is coming.

  • Diagram cue: no interfaces near payment, notification, or pricing.
  • Fix direction: introduce a port (interface) and keep the domain service depending on it.

044. Tight Coupling Hubs

A hub knows everyone and everyone knows the hub. Changes radiate.

SmellWhat you seeTypical fix direction
God ClassOne huge classifierExtract collaborators by responsibility
Feature envyMethods mostly use another type’s dataMove behavior closer to the data
Concrete dependencyService → StripeClient directlyDepend on PaymentGateway
Anemic domainData bags + procedural servicePush behavior onto domain types or accept DTO stereotype

055. Relationship Lies

  • Using inheritance where association belongs.
  • Composition (filled diamond) for a shared, independently lifecycle’d object.
  • Omitting multiplicity when cardinality is the whole point (seats, inventory).

06A 90-Second Diagram Scan Checklist

  1. Can I name each type’s job in under six words?
  2. Which types change when product adds a new vendor/channel/rule?
  3. Are there interfaces at those change points?
  4. Is any box a dependency magnet?
  5. Do inheritance arrows survive a Liskov sniff test?

Spotting is a skill of its own. Debug Lab puts real violations on UML diagrams and asks you to annotate them before revealing the authoritative breakdown — critique practice without rewriting yet.


07Practice: Annotate This Mental Diagram

UserController validates input, hashes passwords, writes to MySQL, sends welcome email, and updates a Redis session. Without drawing tools, list three smells and the diagram cue for each.

  • God / SRP — one type with unrelated change reasons (auth, persistence, mail, cache).
  • Concrete coupling — MySQL and Redis named inside a controller-shaped type.
  • Missing ports — no UserRepository, PasswordHasher, or Mailer abstractions.

If you only wrote “bad design,” push yourself to the cue level. Interviewers buy specificity.


08From Spotting to Fixing

Recognition is step one. Interviews also ask you to restructure. When you are ready to remediate God Classes and SRP breaches on the canvas, continue with how to fix a broken object-oriented design and the hands-on Debug & Fix mode.


09Key Takeaways

  • Learn diagram-level cues for God Class, wrong inheritance, and coupling hubs.
  • Ask what would force each type to change — SRP becomes concrete.
  • Put abstractions where requirements historically churn.
  • Practice spotting on purpose; do not wait for production pain.

Train your eye on authored broken diagrams in Debug Lab, then graduate to repairing them when you are ready.

Frequently Asked Questions

AA God Class concentrates too many responsibilities — persistence, business rules, notifications, formatting — into one type. On a diagram it often shows a huge method list and many outgoing dependencies.

L

LLDCanvas Team

Engineering at LLDCanvas

Ready to practice?

Turn reading into results

110+ LLD interview questions, a live canvas, and timed Interview Mode.

Reader’s Notes (0)

Sign in to join the discussion

Sign in

Loading notes…