---
name: java-design-principles
description: A comprehensive guide providing essential design principles and best practices for Java development
license: MIT
---

# Java Design Principles

A comprehensive guide providing essential design principles and best practices for Java development. Structured for step-by-step learning from beginners to advanced developers.

## When to Use This Skill

Use this skill in the following situations:

- 🏗️ **When designing new Java projects** - Apply correct principles when making architectural decisions
- 🔧 **When refactoring existing code** - Check guidelines for code quality improvement
- 👀 **When performing code reviews** - Systematically review for design principle violations
- 🎯 **When making class design decisions** - Inheritance vs composition, interface segregation, etc.
- 🧩 **When managing dependencies between modules** - Methods to reduce coupling and increase cohesion
- 📚 **When training junior developers** - Systematically convey core design principles
- 🐛 **When resolving technical debt** - Identify which principles have been violated and improve

## 📚 Learning Path

### 🌱 Beginner - Starting with Simplicity

An introductory course for those learning design principles for the first time.

1. **[Simplicity Principles](./core-concepts/simplicity-principles.md)**
   - KISS (Keep It Simple, Stupid)
   - YAGNI (You Aren't Gonna Need It)
   - Do The Simplest Thing That Could Possibly Work

   💡 *Why learn this first?* Before learning complex principles, developing the habit of writing simple code is most important.

### 🚀 Intermediate - Core Design Principles

Learn the core principles of object-oriented design.

2. **[SOLID Principles](./core-concepts/solid-principles.md)**
   - Single Responsibility Principle
   - Open/Closed Principle
   - Liskov Substitution Principle
   - Interface Segregation Principle
   - Dependency Inversion Principle

   💡 *Why is this important?* SOLID is an essential principle for writing maintainable and extensible code.

3. **[Coupling and Cohesion](./core-concepts/coupling-cohesion.md)**
   - DRY (Don't Repeat Yourself)
   - Separation of Concerns
   - Minimize Coupling / Maximize Cohesion
   - Law of Demeter
   - Composition Over Inheritance

   💡 *Practical Application:* Learn how to properly design relationships between modules.

### 🎯 Advanced - In-depth Principles and Patterns

Learn more in-depth design principles and practical patterns.

4. **[Encapsulation](./core-concepts/encapsulation.md)**
   - Encapsulation & Information Hiding
   - Encapsulate What Changes

5. **[Advanced Principles](./core-concepts/advanced-principles.md)**
   - Code For The Maintainer
   - Boy-Scout Rule
   - Avoid Premature Optimization
   - Inversion of Control
   - Command Query Separation
   - Robustness Principle (Postel's Law)

6. **[Practical Patterns](./patterns/common-patterns.md)**
   - Good vs Bad examples of 5 core patterns
   - Single Responsibility
   - Open/Closed
   - Law of Demeter
   - Composition Over Inheritance
   - DRY

## 📖 Additional Resources

- **[Best Practices & Common Pitfalls](./best-practices.md)**
  - Checklists for design/coding/maintenance
  - 8 common mistakes to avoid

- **[Resources](./resources.md)**
  - Essential books
  - Online resources
  - Practice materials

## 🎓 Learning Tips

### Recommended Order for Beginners

1. **Week 1**: Read and practice simplicity principles
2. **Week 2-3**: Learn SOLID principles one by one (one per day)
3. **Week 4**: Understand coupling/cohesion concepts
4. **Week 5**: Practice with practical patterns
5. **Week 6+**: Code review with Best Practices checklist

### For Those with Experience

- Learn selectively starting with principles of interest
- Read Common Pitfalls first and apply to your current code
- Use this guide as reference documentation during team code reviews

## 📂 Project Structure

```
java-design-principles/
├── SKILL.md (this file)
├── core-concepts/
│   ├── simplicity-principles.md
│   ├── solid-principles.md
│   ├── coupling-cohesion.md
│   ├── encapsulation.md
│   └── advanced-principles.md
├── patterns/
│   └── common-patterns.md
├── best-practices.md
└── resources.md
```

## 🤝 Contributing

If you want to contribute to this guide:
- Open an issue if you find typos or improvements
- Send a Pull Request if you have better examples
- Share practical use cases

---

**License**: MIT
**Last Updated**: November 2025

Happy Coding! 🚀
