关于 cohesion
面向前端开发者的代码组织技能,强调将共同修改的代码放在一起。它提供按领域组织文件和集中管理常量的模式,也说明何时应避免共享。
主要功能
- 01按功能领域组织相关文件
- 02将重复的魔法数字提取为共享常量
- 03让类型定义靠近使用处
- 04缩短文件间的相对路径
- 05识别应避免共享代码的情况
适用场景
- 01整理分散在多个目录中的功能代码
- 02统一多个位置使用的数值常量
- 03让类型和实现保持紧密关联
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ toss/ frontend-fundamentals --skill cohesion安装后在 Claude Code 中输入/cohesion确认已加载。
README 原文English
来自项目 READMEREADME 暂无中文译文,以下为英文原文;中文介绍见上方。
응집도
함께 수정되는 코드는 함께 있어야 한다.
핵심 패턴
함께 수정되는 파일을 같은 디렉토리에 두기
❌ 종류별 분리 (의존 관계 파악 어려움):
src/
├── components/UserForm.tsx
├── hooks/useUserValidation.ts
├── types/userTypes.ts
└── api/userApi.ts
✅ 도메인별 배치:
src/
├── components/ # 전역 공유
└── domains/User/ # User 관련 코드 모음
├── UserForm.tsx
├── useUserValidation.ts
├── types.ts
└── api.ts
매직 넘버 제거
같은 숫자가 여러 곳에 있으면 한쪽만 수정되어 버그 발생.
❌ 분산:
// Pagination.tsx
const pages = Math.ceil(total / 20);
// useItems.ts
const offset = (page - 1) * 20;
✅ 상수로 통합:
export const PAGE_SIZE = 20;
import { PAGE_SIZE } from './constants';
빠른 참조
| 코드 냄새 | 개선 방법 |
|---|---|
| 같은 매직 넘버 3곳 이상 | 공유 상수로 추출 |
기능이 components/, hooks/, types/ 모두 수정 | domains/featureName/으로 배치 |
긴 상대 경로 ../../.. | 파일들을 가까이 배치 |
| 타입 정의가 사용처와 멀리 떨어짐 | 사용하는 코드와 함께 배치 |
예외: 중복이 나은 경우
- 두 기능이 다르게 발전할 가능성이 높을 때
- 공유 시 원치 않는 의존성이 생길 때
- 공유 코드가 5줄 미만으로 단순할 때
참고: https://frontend-fundamentals.com/code-quality/cohesive/
评论
支持 Markdown