# felipe-augusto/clean-code-javascript

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/felipe-augusto-clean-code-javascript).**

4,891 stars · 606 forks · JavaScript · mit

## Links

- GitHub: https://github.com/felipe-augusto/clean-code-javascript
- awesome-repositories: https://awesome-repositories.com/repository/felipe-augusto-clean-code-javascript.md

## Topics

`clean-code` `javascript`

## Description

This project is a comprehensive guide and set of engineering standards for writing readable, maintainable, and scalable JavaScript code. It provides a framework for software architecture, refactoring patterns, and clean coding practices designed to improve codebase health and longevity.

The guide emphasizes the application of SOLID principles and architectural strategies such as dependency inversion and the separation of concerns. It focuses on transforming complex conditional logic through polymorphism and refactoring, while promoting a transition from imperative loops to declarative functional programming patterns.

The project covers a wide range of capabilities including object design through composition and encapsulation, asynchronous flow management using promises, and immutable state management. It also establishes standards for naming conventions, function design, and error handling, alongside strategies for creating testable code and maintaining consistent formatting.

## Tags

### Software Engineering & Architecture

- [Clean Coding Standards](https://awesome-repositories.com/f/software-engineering-architecture/clean-coding-standards.md) — Establishes a comprehensive set of engineering standards and naming conventions for writing clean, self-documenting JavaScript.
- [Readability Refactorings](https://awesome-repositories.com/f/software-engineering-architecture/code-complexity-metrics/readability-refactorings.md) — Provides specific refactoring patterns to simplify complex logic and improve the readability of JavaScript codebases.
- [Error Handling Strategies](https://awesome-repositories.com/f/software-engineering-architecture/error-handling-strategies.md) — Implements robust architectural strategies for capturing exceptions and managing promise rejections in JavaScript.
- [Atomic Function Design](https://awesome-repositories.com/f/software-engineering-architecture/functional-application-structuring/atomic-function-design.md) — Implements guidelines for creating atomic functions that perform a single task to improve testability. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Functional Programming](https://awesome-repositories.com/f/software-engineering-architecture/functional-programming.md) — Advocates for declarative functional programming patterns over imperative loops to improve logic clarity. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Naming Conventions](https://awesome-repositories.com/f/software-engineering-architecture/naming-conventions.md) — Defines standards for meaningful, searchable, and consistently worded variable and function names. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Dependency Inversion Patterns](https://awesome-repositories.com/f/software-engineering-architecture/project-management-governance/dependency-boundary-enforcers/dependency-inversion-patterns.md) — Provides patterns for decoupling high-level business logic from low-level infrastructure using abstractions.
- [Software Architecture](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture.md) — Provides a framework for organizing JavaScript modules using SOLID principles and dependency inversion.
- [Immutable State Patterns](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/immutable-data-strategies/immutable-state-patterns.md) — Implements read-only patterns and centralized services to ensure predictable state transitions.
- [Composition Patterns](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/scope-and-hierarchy-management/closure-based-state-encapsulations/component-based-encapsulations/composition-patterns.md) — Promotes composition over deep inheritance hierarchies to build maintainable object behaviors.
- [Composition Over Inheritance](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/modular-decoupled-design/structural-design-paradigms/composition-over-inheritance.md) — Promotes building complex functionality by composing small, focused objects instead of using deep inheritance. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Interface Segregation Principles](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/foundational-theory-and-guidance/software-architecture-principles/solid-principles/interface-segregation-principles.md) — Applies the interface segregation principle to keep configuration objects small and dependencies minimal. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Liskov Substitution Principles](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/foundational-theory-and-guidance/software-architecture-principles/solid-principles/liskov-substitution-principles.md) — Ensures subclasses can replace parent classes without altering program correctness according to Liskov substitution. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Open/Closed Principles](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/foundational-theory-and-guidance/software-architecture-principles/solid-principles/open-closed-principles.md) — Implements the open-closed principle to allow modules to be extended with new behavior without modifying existing code. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Single Responsibility Principles](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/foundational-theory-and-guidance/software-architecture-principles/solid-principles/single-responsibility-principles.md) — Implements the Single Responsibility Principle as a core standard for dividing software modules into focused units.
- [Testability Optimizations](https://awesome-repositories.com/f/software-engineering-architecture/testability-optimizations.md) — Promotes the use of pure functions and dependency injection to optimize code for easier automated testing. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Abstraction Level Management](https://awesome-repositories.com/f/software-engineering-architecture/abstraction-level-management.md) — Ensures functions stay at a single level of abstraction by extracting lower-level implementation details. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Polymorphism](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/object-oriented-foundations/polymorphism.md) — Replaces complex conditional branching with polymorphic interfaces to handle varying behaviors.
- [Async Flow Patterns](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-task-managers/async-flow-patterns.md) — Uses promises and async/await to flatten callback chains and standardize asynchronous flow.
- [Internal Member Protection](https://awesome-repositories.com/f/software-engineering-architecture/behavioral-design-patterns/internal-member-protection.md) — Employs composition and private members to encapsulate behavior and protect internal object data. ([source](https://github.com/felipe-augusto/clean-code-javascript/blob/master/README.md))
- [Code Duplication Reduction](https://awesome-repositories.com/f/software-engineering-architecture/code-duplication-reduction.md) — Establishes practices for eliminating redundant logic through architectural abstraction and consolidation. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Error Management](https://awesome-repositories.com/f/software-engineering-architecture/error-handling/error-management.md) — Provides strategies for catching runtime errors and routing them to logging and notification services. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Graceful Promise Recovery](https://awesome-repositories.com/f/software-engineering-architecture/exception-traceback-capture/process-exception-interception/graceful-promise-recovery.md) — Defines processes for capturing exceptions and rejected promises to ensure systems fail gracefully. ([source](https://github.com/felipe-augusto/clean-code-javascript/blob/master/README.md))
- [Options Objects](https://awesome-repositories.com/f/software-engineering-architecture/functional-design-patterns/functional-options/options-objects.md) — Provides guidelines for limiting function parameters by utilizing options objects for complex inputs. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Named Constants](https://awesome-repositories.com/f/software-engineering-architecture/naming-conventions/named-constants.md) — Provides a strategy for replacing magic numbers with named constants to improve searchability. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Guard Clauses](https://awesome-repositories.com/f/software-engineering-architecture/negative-conditional-logic/guard-clauses.md) — Utilizes guard clauses to simplify function logic by exiting early on invalid conditions.
- [Optimization Deferral](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/code-optimization/optimization-deferral.md) — Promotes writing straightforward code and avoiding premature optimization until profiling identifies bottlenecks. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Service Layers](https://awesome-repositories.com/f/software-engineering-architecture/service-layers.md) — Isolates side effects and external inputs within dedicated service layers to protect business logic.
- [Closure-Based State Encapsulations](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/scope-and-hierarchy-management/closure-based-state-encapsulations.md) — Implements state encapsulation using JavaScript closures to create private object members.
- [Public Interface Optimization](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/foundational-theory-and-guidance/software-architecture-concepts/object-oriented-design/public-interface-optimization.md) — Implements getters, setters, and method chaining to hide internal data and create expressive public interfaces. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [API Type Consistency](https://awesome-repositories.com/f/software-engineering-architecture/typescript-type-definitions/static-type-checking/api-type-consistency.md) — Promotes the use of consistent APIs and type systems to eliminate manual type checking in functions. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))

### Programming Languages & Runtimes

- [Asynchronous JavaScript Programming](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-javascript-programming.md) — Guides the use of promises and async/await to manage non-blocking operations and eliminate callback nesting.
- [Refactoring Patterns](https://awesome-repositories.com/f/programming-languages-runtimes/conditional-logic/refactoring-patterns.md) — Provides techniques for refactoring complex conditionals into named functions and polymorphic structures. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Asynchronous Programming Patterns](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-programming-patterns.md) — Manages non-blocking background operations using modern asynchronous syntax for better error capture. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Closure-Based Privacy](https://awesome-repositories.com/f/programming-languages-runtimes/private-member-conventions/closure-based-privacy.md) — Uses closures to implement private object members that cannot be accessed or deleted externally. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Polymorphic Dispatch](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/functional/generic-function-definitions/polymorphic-dispatch.md) — Implements polymorphic method dispatch in subclasses to replace switch or if-else chains. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))

### Artificial Intelligence & ML

- [Semantic Consistency](https://awesome-repositories.com/f/artificial-intelligence-ml/vocabulary-management/custom-vocabularies/semantic-consistency.md) — Encourages the use of a consistent vocabulary to avoid confusion across the codebase. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))

### Data & Databases

- [Explicit Data Cloning](https://awesome-repositories.com/f/data-databases/data-transfer-objects/object-duplicators/explicit-data-cloning.md) — Uses object cloning to ensure that modifications to a copy do not affect original references. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))

### Development Tools & Productivity

- [Structural Organization Guidelines](https://awesome-repositories.com/f/development-tools-productivity/code-organization/structural-organization-guidelines.md) — Provides guidelines for organizing data structures to hide internal details and expose necessary behavior. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Dead Code Cleanup](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/project-scaffolding-configuration/project-configuration/project-cleanup-utilities/dead-code-cleanup.md) — Provides a process for identifying and removing unused functions, variables, and modules. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))

### Education & Learning Resources

- [Encapsulation Techniques](https://awesome-repositories.com/f/education-learning-resources/educational-resources/languages-and-programming-concepts/programming-language-mastery-guides/object-oriented-programming-concepts/encapsulation-techniques.md) — Employs getter and setter methods to encapsulate internal object state and provide validation. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))

### Testing & Quality Assurance

- [Testing Strategy and Process](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-strategy-process.md) — Establishes a strategic process for test coverage and test-driven development guidelines. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
- [Testing Best Practices](https://awesome-repositories.com/f/testing-quality-assurance/testing-best-practices-methodologies/testing-best-practices.md) — Provides guidelines for writing maintainable tests by focusing each case on a single concept. ([source](https://github.com/felipe-augusto/clean-code-javascript/blob/master/README.md))

### Web Development

- [Pure Function Patterns](https://awesome-repositories.com/f/web-development/side-effect-management-libraries/pure-function-patterns.md) — Minimizes side effects through the use of pure functions and object cloning. ([source](https://github.com/felipe-augusto/clean-code-javascript#readme))
