Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问clear审计通过

clean-code干净的代码

Agent Skill

clean-code 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

4,568

周安装

183

GitHub Stars

35

下载量

1,479
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:clean-code(干净的代码)
来源仓库:https://github.com/ratacat/claude-skills
仓库路径:skills/clean-code
安装命令:
npx skills add https://github.com/ratacat/claude-skills --skill clean-code
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/ratacat/claude-skills --skill clean-code

简介

clean-code 用于查找、检索和筛选相关信息。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中根据关键词快速定位结果。
  • 可结合来源仓库和原始 README 继续核验具体用法,建议确认权限范围。
  • 安装命令:npx skills add https://github.com/ratacat/claude-skills --skill clean-code
  • 安装前建议检查维护状态及是否涉及文件读写或网络请求。

SKILL.md

Clean Code

Overview

Clean code reads like well-written prose. Every name reveals intent. Every function tells a story. Every class has a single purpose. The goal isn't just working code—it's code that others can understand quickly, modify safely, and extend confidently.

"Clean code always looks like it was written by someone who cares." — Michael Feathers
"You know you are working on clean code when each routine turns out to be pretty much what you expected." — Ward Cunningham

The Boy Scout Rule: Leave the code cleaner than you found it. Every commit should improve quality, even if just slightly. Small improvements compound.

Chapter References

This skill provides an overview with quick references. For detailed guidance with examples, see the chapter files:

  • chapters/names.md - Meaningful Names (intention-revealing, searchable, pronounceable)
  • chapters/functions.md - Functions (small, do one thing, few arguments)
  • chapters/comments.md - Comments (why to avoid, what's acceptable)
  • chapters/objects-and-data.md - Objects and Data Structures (Law of Demeter, DTOs)
  • chapters/error-handling.md - Error Handling (exceptions, null handling, Special Case Pattern)
  • chapters/tests.md - Unit Tests (TDD, F.I.R.S.T., clean tests)
  • chapters/classes.md - Classes (SRP, cohesion, OCP, DIP)
  • smells-and-heuristics.md - Complete code smells reference (66 smells with explanations)

Quick Reference: Names

Names should reveal intent and be searchable.

RuleBadGood
Reveal intentdelapsedTimeInDays
Avoid disinformationaccountList (not a List)accounts
Make distinctionsa1, a2source, destination
PronounceablegenymdhmsgenerationTimestamp
Searchable7MAX_CLASSES_PER_STUDENT
Classes = nounsProcessCustomer, Account
Methods = verbsdatapostPayment(), save()

Avoid: Manager, Processor, Data, Info in class names—they hint at unclear responsibilities.

Key insight: If you need a comment to explain what a variable is, rename it instead.

Quick Reference: Functions

Size and Scope

  • Ideal: 4-10 lines, rarely over 20
  • Indent level: Never more than one or two
  • Do one thing — if you can extract another function with a non-restating name, it's doing too much

Arguments

CountGuidance
0Best
1Good
2Acceptable
3+Avoid—wrap in object

Flag arguments (booleans) are ugly. They proclaim the function does two things. Split it:

# Bad
def render(is_suite: bool): ...

# Good
def render_for_suite(): ...
def render_for_single_test(): ...

Key Rules

  • Command Query Separation: Do something OR answer something, not both
  • No side effects: If checkPassword() also initializes a session, it lies
  • Prefer exceptions to error codes: Separates happy path from error handling
  • Extract try/catch blocks: Error handling is one thing

Quick Reference: Comments

Comments are, at best, a necessary evil. The proper use of comments is to compensate for our failure to express ourselves in code.

Delete These Comments

  • Redundant — restating what code says
  • Journal/changelog — use git
  • Commented-out code — an abomination, git remembers
  • Noise// default constructor, // increment i
  • Closing brace} // end if means too much nesting

Acceptable Comments

  • Legal notices
  • Explanation of intent (why, not what)
  • Warning of consequences (// takes 30 minutes)
  • TODO (but clean them up)
  • Clarifying external library behavior

The Rule: When you feel the urge to comment, first try to refactor the code so the comment would be unnecessary.

Quick Reference: Error Handling

Error handling is important, but if it obscures logic, it's wrong.

RuleDetails
Use exceptions over return codesSeparates algorithm from error handling
Provide contextInclude operation that failed and type of failure
Wrap third-party APIsMinimizes dependencies, enables mocking
Use Special Case PatternReturn object that handles special case (empty list, default values)
Don't return nullCreates work, invites NullPointerException
Don't pass nullWorse than returning null—forbid it by default
# Bad - null checks everywhere
if employees is not None:
    for e in employees:
        total += e.pay

# Good - return empty collection instead of null
for e in get_employees():  # Returns [] if none
    total += e.pay

Quick Reference: Classes

Single Responsibility Principle (SRP)

A class should have one, and only one, reason to change.

Tests:

  • Can you derive a concise name? (Avoid Manager, Processor, Super)
  • Can you describe it in 25 words without "if," "and," "or," "but"?

Cohesion

Methods should use the class's instance variables. When methods cluster around certain variables but not others, the class should be split.

Open-Closed Principle (OCP)

Classes should be open for extension but closed for modification. Add new behavior via subclassing, not modifying existing code.

Dependency Inversion Principle (DIP)

Depend on abstractions, not concrete details. Inject dependencies for testability.

# Bad - can't test without network
class Portfolio:
    def __init__(self):
        self.exchange = TokyoStockExchange()

# Good - injectable, testable
class Portfolio:
    def __init__(self, exchange: StockExchange):
        self.exchange = exchange

Quick Reference: Tests

The Three Laws of TDD

  1. Don't write production code until you have a failing test
  2. Don't write more test than sufficient to fail
  3. Don't write more production code than sufficient to pass

F.I.R.S.T. Principles

  • Fast — Run quickly so you run them often
  • Independent — Don't depend on each other
  • Repeatable — Same result in any environment
  • Self-Validating — Boolean output (pass/fail)
  • Timely — Written just before production code

Clean Tests

  • Readability is paramount
  • Use BUILD-OPERATE-CHECK pattern
  • Create domain-specific testing language
  • One concept per test (not necessarily one assert)

Warning: Test code is just as important as production code. If you let tests rot, your code will rot too.

Objects vs Data Structures

ConceptHidesExposesEasy to add...
ObjectsDataFunctionsNew types
Data StructuresNothingDataNew functions

The idea that everything is an object is a myth. Sometimes you want simple data structures with procedures operating on them.

Law of Demeter

A method should only call methods of:

  • The class itself
  • Objects it creates
  • Objects passed as arguments
  • Objects held in instance variables

Don't call methods on objects returned by allowed functions (train wrecks):

# Bad
output_dir = ctxt.get_options().get_scratch_dir().get_absolute_path()

# Good - tell the object to do the work
bos = ctxt.create_scratch_file_stream(class_file_name)

The Most Critical Smells

From Chapter 17's comprehensive list, these are the most important:

G5: Duplication

The root of all evil in software. Every duplication is a missed abstraction opportunity:

  • Identical code → extract to function
  • Repeated switch/if-else → polymorphism
  • Similar algorithms → Template Method or Strategy pattern

G30: Functions Should Do One Thing

If you can extract another function from it, the original was doing more than one thing.

N1: Choose Descriptive Names

Names are 90% of what makes code readable. Take time to choose wisely.

F1: Too Many Arguments

Zero is best, then one, two, three. More requires justification.

F3: Flag Arguments

Boolean parameters mean the function does two things. Split it.

G9: Dead Code

Code that isn't executed. Delete it—version control remembers.

G11: Inconsistency

If you do something one way, do all similar things the same way.

C5: Commented-Out Code

An abomination. Delete it immediately.

The Craft

"Writing clean code requires the disciplined use of a myriad little techniques applied through a painstakingly acquired sense of 'cleanliness.' The code-sense is the key."

Clean code isn't written by following rules mechanically. It comes from values that drive disciplines—caring about craft, respecting readers of your code, and taking pride in professional work.

How do you write clean code? First drafts are clumsy—long functions, nested loops, arbitrary names, duplication. You refine: break out functions, change names, eliminate duplication, shrink methods. Nobody writes clean code from the start.

Getting software to work and making it clean are different activities. Most of us have limited room in our heads, so we focus on getting code to work first. The problem is that too many of us think we are done once the program works. We fail to switch to organization and cleanliness. We move on to the next problem rather than going back and breaking overstuffed classes into decoupled units.

Don't. Go back. Clean it up. Leave it better than you found it.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

30.49%
按下载量换算451

Antigravity

24.03%
按下载量换算355

trae

17.73%
按下载量换算262

OpenCode

13.37%
按下载量换算198

Gemini CLI

7.5%
按下载量换算111

windsurf

3.09%
按下载量换算46

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

来源信息

继续浏览同类 Skills