Receber por email
← Voltar para o catálogo

claude-java-plugins

Checks Java code for SOLID principles violations with Java-specific patterns. Use when user asks to "check SOLID principles", "is this good OOP", "single responsibility", "SOLID violations", "open closed principle", or "dependency inversion".

15estrelas
Atualizado há 6 meses

Ver no GitHub ↗

Como adicionar

/plugin marketplace add ducpm2303/claude-java-plugins

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/claude-java-plugins-mpsy12td/svg)](https://www.skillteca.com.br/skills/claude-java-plugins-mpsy12td)

Skills relacionadas

Ver todas de Desenvolvimento →

Alerta por categoria

Receba novas skills de Desenvolvimento toda segunda

1 email curto, só com as skills novas de Desenvolvimento. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Review the provided Java code for SOLID principles violations. For each principle, check for violations and suggest targeted improvements. Tailor suggestions to the detected Java version.

S — Single Responsibility Principle

A class should have one reason to change.

Violations to flag:

  • Classes named *Manager, *Helper, *Utils with more than 3 unrelated methods
  • Service classes that also contain validation logic, email sending, AND database calls
  • Classes with more than ~200 lines (often a signal of multiple responsibilities)
  • Methods that do multiple distinct things (parse + validate + persist + notify)

Fix pattern: Extract each responsibility into its own class. Show the split.

O — Open/Closed Principle

Open for extension, closed for modification.

Violations to flag:

  • if/else or switch chains on type/status that would require modification to add new types
  • Hard-coded behaviour that should be configurable
  • Direct instantiation of concrete classes in business logic (use interfaces)

Fix pattern: Introduce Strategy, Template Method, or polymorphism. Show the refactoring.

L — Liskov Substitution Principle

Subtypes must be substitutable for their base types.

Violations to flag:

  • Subclass overrides a method by throwing UnsupportedOperationException
  • Subclass weakens preconditions (accepts nulls when parent doesn't)
  • Subclass strengthens postconditions (returns more restricted type)
  • Square extends Rectangle anti-pattern

Fix pattern: Use composition over inheritance, or restructure the hierarchy.

I — Interface Segregation Principle

Clients should not depend on interfaces they don't use.

Violations to flag:

  • Interfaces with more than ~5 methods where implementors only use some
  • implements classes that leave methods empty or throw UnsupportedOperationException
  • Fat service interfaces used by clients that only call 1–2 methods

Fix pattern: Split the fat interface into focused role interfaces.

D — Dependency Inversion Principle

Depend on abstractions, not concretions.

Violations to flag:

  • Field or constructor takes a concrete class (new UserServiceImpl) instead of an interface (UserService)
  • new ConcreteClass() inside business logic instead of dependency injection
  • Static utility method calls deep in business logic that prevent testing
  • @Autowired on a concrete class field instead of an interface

Fix pattern: Introduce interface + constructor injection. Show the change.

Output format

For each violation:

  1. Principle violated: (S/O/L/I/D)
  2. Location: class + method
  3. Problem: what rule is broken and why it matters
  4. Fix: before/after code

End with: SOLID Score — how many of the 5 principles are cleanly satisfied (e.g., "3/5 — S, I, D pass; O and L need attention").

Next Steps

  • For O violations → run /java-design-pattern to find the right pattern
  • For D violations → run /java-refactor to extract interfaces
  • For SRP violations → run /java-refactor to split classes
Compartilhar X LinkedIn