Google JavaScript Best Practices
Comprehensive JavaScript style and best practices guide based on Google's official JavaScript Style Guide, designed for AI agents and LLMs. Contains 47 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
-
Writing new JavaScript or ES6+ code
-
Structuring modules and managing imports/exports
-
Adding JSDoc type annotations and documentation
-
Reviewing code for naming and style consistency
-
Refactoring existing JavaScript code
Rule Categories by Priority
Priority Category Impact Prefix
1 Module System & Imports CRITICAL module-
2 Language Features CRITICAL lang-
3 Type Safety & JSDoc HIGH type-
4 Naming Conventions HIGH naming-
5 Control Flow & Error Handling MEDIUM-HIGH control-
6 Functions & Parameters MEDIUM func-
7 Objects & Arrays MEDIUM data-
8 Formatting & Style LOW format-
Quick Reference
- Module System & Imports (CRITICAL)
-
module-avoid-circular-dependencies
-
Prevent loading failures from circular imports
-
module-file-extension-in-imports
-
Include .js extension in import paths
-
module-named-exports-over-default
-
Prefer named exports for consistency
-
module-no-duplicate-imports
-
Import from same file only once
-
module-no-import-aliasing
-
Keep original export names
-
module-source-file-structure
-
Follow standard file structure order
- Language Features (CRITICAL)
-
lang-const-over-let-over-var
-
Use const by default, never var
-
lang-es6-classes-over-prototypes
-
Use class syntax over prototype manipulation
-
lang-explicit-semicolons
-
Always use explicit semicolons
-
lang-no-eval
-
Never use eval or Function constructor
-
lang-no-modify-builtins
-
Never modify built-in prototypes
-
lang-no-non-standard-features
-
Use only standard ECMAScript features
-
lang-no-primitive-wrappers
-
Never use primitive wrapper objects
-
lang-no-with-statement
-
Never use the with statement
- Type Safety & JSDoc (HIGH)
-
type-cast-with-parentheses
-
Use parentheses for type casts
-
type-enum-annotations
-
Annotate enums with static literal values
-
type-explicit-nullability
-
Use explicit nullability modifiers
-
type-jsdoc-required-for-exports
-
Require JSDoc for exported functions
-
type-template-parameters
-
Always specify template parameters
-
type-typedef-for-complex-types
-
Use typedef for complex object types
- Naming Conventions (HIGH)
-
naming-constant-case-for-constants
-
Use CONSTANT_CASE for immutable values
-
naming-descriptive-over-brief
-
Prefer descriptive names over brevity
-
naming-file-naming-conventions
-
Use lowercase with dashes or underscores
-
naming-lowercamelcase-for-methods
-
Use lowerCamelCase for methods and variables
-
naming-no-dollar-prefix
-
Avoid dollar sign prefix in identifiers
-
naming-uppercamelcase-for-classes
-
Use UpperCamelCase for classes
- Control Flow & Error Handling (MEDIUM-HIGH)
-
control-comment-empty-catch
-
Document empty catch blocks
-
control-for-of-over-for-in
-
Prefer for-of over for-in
-
control-strict-equality
-
Use strict equality except for null checks
-
control-switch-default-last
-
Always include default case in switch
-
control-throw-error-objects
-
Always throw Error objects
- Functions & Parameters (MEDIUM)
-
func-arrow-functions-for-nested
-
Prefer arrow functions for nested functions
-
func-arrow-parentheses
-
Always use parentheses around arrow params
-
func-default-parameters
-
Use default parameters instead of conditionals
-
func-rest-parameters-over-arguments
-
Use rest parameters over arguments
-
func-spread-over-apply
-
Use spread operator instead of apply
- Objects & Arrays (MEDIUM)
-
data-array-literals-over-constructor
-
Use array literals over Array constructor
-
data-destructuring-for-multiple-values
-
Use destructuring for multiple properties
-
data-no-mixing-quoted-unquoted-keys
-
Never mix quoted and unquoted keys
-
data-object-literals-over-constructor
-
Use object literals over constructor
-
data-spread-over-concat-slice
-
Use spread over concat and slice
-
data-trailing-commas
-
Use trailing commas in multi-line literals
- Formatting & Style (LOW)
-
format-braces-required
-
Always use braces for control structures
-
format-column-limit
-
Limit lines to 80 characters
-
format-one-statement-per-line
-
Place one statement per line
-
format-single-quotes
-
Use single quotes for string literals
-
format-two-space-indent
-
Use two-space indentation
How to Use
Read individual reference files for detailed explanations and code examples:
-
Section definitions - Category structure and impact levels
-
Rule template - Template for adding new rules
Full Compiled Document
For a complete compiled guide with all rules, see AGENTS.md.
Reference Files
File Description
AGENTS.md Complete compiled guide with all rules
references/_sections.md Category definitions and ordering
assets/templates/_template.md Template for new rules
metadata.json Version and reference information