# Coding Standards

适用于 TypeScript、JavaScript、React 和 Node.js 开发的通用编码标准、最佳实践与模式。

- Repository: https://github.com/xu-xiang/everything-claude-code-zh (2012 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-03-05
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add xu-xiang/everything-claude-code-zh --skill coding-standards -g -a claude-code -y`
Codex: `npx skills add xu-xiang/everything-claude-code-zh --skill coding-standards -g -a codex -y`
Cursor: `npx skills add xu-xiang/everything-claude-code-zh --skill coding-standards -g -a cursor -y`
Gemini CLI: `npx skills add xu-xiang/everything-claude-code-zh --skill coding-standards -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add xu-xiang/everything-claude-code-zh`

## Description

适用于 TypeScript、JavaScript、React 和 Node.js 开发的通用编码标准、最佳实践与模式。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 编码标准与最佳实践

适用于所有项目的通用编码标准。

## 何时激活

- 开始新项目或模块时
- 进行代码质量与可维护性审查时
- 为了遵循约定而重构现有代码时
- 强制执行命名、格式或结构的一致性时
- 设置 Lint、格式化或类型检查规则时
- 引导新贡献者了解编码约定时

## 代码质量原则

### 1. 可读性优先
- 代码被阅读的次数远多于编写的次数
- 变量和函数命名应清晰明确
- 优先选择自描述代码而非注释
- 保持一致的格式

### 2. KISS (Keep It Simple, Stupid - 保持简单)
- 采用最简单的可行方案
- 避免过度工程（Over-engineering）
- 不要进行过早优化
- 易于理解胜过奇技淫巧

### 3. DRY (Don't Repeat Yourself - 不要重复自己)
- 将公共逻辑提取到函数中
- 创建可复用的组件
- 在模块间共享工具函数
- 避免“复制粘贴式”编程

### 4. YAGNI (You Aren't Gonna Need It - 你不会需要它)
- 不要在功能被需要之前就构建它
- 避免投机性的通用设计
- 仅在必要时增加复杂度
- 从简单开始，在需要时重构

## TypeScript/JavaScript 标准

### 变量命名

```typescript
// ✅ 推荐：描述性名称
const marketSearchQuery = 'election'
const isUserAuthenticated = true
const totalRevenue = 1000

// ❌ 不推荐：命名不清晰
const q = 'election'
const flag = true
const x = 1000
```

### 函数命名

```typescript
// ✅ 推荐：动词-名词模式
async function fetchMarketData(marketId: string) { }
function calculateSimilarity(a: number[], b: number[]) { }
function isValidEmail(email: string): boolean { }

// ❌ 不推荐：不清晰或仅用名词
async function market(id: string) { }
function similarity(a, b) { }
function email(e) { }
```

### 不可变模式 (Immutability Pattern)（至关重要）

```typescript
// ✅ 始终使用展开运算符 (Spread Operator)
const updatedUser = {
  ...user,
  name: 'New Name'
}

const updatedArray = [...items, newItem]

// ❌ 严禁直接修改 (Mutate)
user.name = 'New Name'  // 错误
items.push(newItem)     // 错误
```

### 错误处理

```typescript
// ✅ 推荐：全面的错误处理
async function fetchData(url: string) {
  try {
    const response = await fetch(url)

    if (!response.ok) {
      throw new Error(`HTTP ${response.status}: ${response.statusText}`)
    }

    return await response.json()
  } catch (error) {
    console.error('Fetch failed:', error)
    throw new Error('Failed to fetch data')
  }
}

// ❌ 不推荐：没有错误处理
async function fetchData(url) {
  const response = await fetch(url)
  return response.json()
}
```

### Async/Await 最佳实践

The rest: https://github.com/xu-xiang/everything-claude-code-zh/blob/HEAD/.agents/skills/coding-standards/SKILL.md
