news 2026/4/30 9:22:31

【IT研发实用Skill】coding-standards 技能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【IT研发实用Skill】coding-standards 技能

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

技能概述

coding-standards 技能提供了适用于所有项目的通用编码标准和最佳实践指南。该技能强调代码质量原则,包括可读性优先、KISS(保持简单)、DRY(不要重复自己)和YAGNI(你不会需要它)等核心理念,帮助开发者编写清晰、可维护的代码。

下载地址:https://github.com/affaan-m/everything-claude-code/tree/main/skills

主要功能

  • 代码质量原则: 可读性优先、KISS、DRY、YAGNI等核心原则
  • 命名规范: 变量、函数、组件的命名最佳实践
  • 不可变性模式: 使用展开运算符避免直接变异
  • 错误处理: 全面的错误处理和异常管理
  • 异步编程: Async/Await最佳实践和并行执行优化
  • 类型安全: TypeScript类型定义和类型检查
  • React最佳实践: 组件结构、自定义Hook、状态管理

触发条件

在以下情况下应该调用此技能:

  • 编写新的代码或功能模块
  • 重构现有代码以提高质量
  • 进行代码审查和质量检查
  • 设计组件和函数接口
  • 处理异步操作和错误处理
  • 定义TypeScript类型和接口

使用场景

场景1: 新项目初始化

当开始新项目时,使用此技能建立统一的编码规范和最佳实践标准。

场景2: 代码审查

在进行代码审查时,参照此技能的标准检查代码质量和规范性。

场景3: 重构优化

当重构代码时,使用此技能的原则指导重构方向,提高代码可维护性。

处理过程

1. 应用代码质量原则

遵循可读性优先原则,编写自文档化的代码,避免过度工程化。

2. 遵循命名规范

使用描述性的变量和函数名称,采用动词-名词模式命名函数。

// ✅ GOOD: 描述性名称
const marketSearchQuery = 'election';
const isUserAuthenticated = true;
const totalRevenue = 1000;

// ❌ BAD: 不清晰的名称
const q = 'election';
const flag = true;
const x = 1000;

3. 实现不可变性

使用展开运算符创建新对象,避免直接变异。

4. 错误处理

实现全面的错误处理,包括try-catch、错误日志和用户友好的错误消息。

5. 异步优化

使用Promise.all并行执行独立的异步操作,提高性能。

输入要求

使用此技能时,用户需要提供:

  • 项目使用的编程语言和框架
  • 需要审查或优化的代码片段
  • 项目的编码规范要求(如果有)
  • 性能和可维护性目标

输出说明

技能将提供:

  • 符合规范的代码示例
  • 代码质量改进建议
  • 命名规范指导
  • 错误处理模式
  • 异步编程最佳实践
  • TypeScript类型定义示例

使用示例

示例1: 不可变性模式

// ✅ ALWAYS use spread operator
const updatedUser = { ...user, name: 'New Name' };
const updatedArray = [...items, newItem];

// ❌ NEVER mutate directly
user.name = 'New Name'; // BAD
items.push(newItem); // BAD

示例2: 错误处理

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');
}
}

示例3: 异步并行执行

// ✅ GOOD: 并行执行
const [users, markets, stats] = await Promise.all([
fetchUsers(),
fetchMarkets(),
fetchStats()
]);

// ❌ BAD: 不必要的顺序执行
const users = await fetchUsers();
const markets = await fetchMarkets();
const stats = await fetchStats();

示例4: React组件结构

interface ButtonProps {
children: React.ReactNode;
onClick: () => void;
disabled?: boolean;
variant?: 'primary' | 'secondary';
}

export function Button({
children,
onClick,
disabled = false,
variant = 'primary'
}: ButtonProps) {
return (
<button
onClick={onClick}
disabled={disabled}
className={`btn btn-${variant}`}
>
{children}
</button>
);
}

最佳实践

  1. 可读性优先: 代码被阅读的次数远多于被编写的次数
  2. 保持简单: 选择最简单有效的解决方案,避免过度设计
  3. 不要重复: 提取通用逻辑到函数和组件中
  4. 避免过早优化: 只在需要时添加复杂性
  5. 使用类型: 避免使用any,定义明确的类型和接口
  6. 处理错误: 实现全面的错误处理和日志记录
  7. 并行执行: 对独立的异步操作使用Promise.all

核心原则详解

  • 可读性优先: 代码被阅读的次数远多于被编写的次数,清晰的命名和结构比聪明的代码更重要
  • KISS原则: 保持简单,选择最简单有效的解决方案,避免过度工程化和过早优化
  • DRY原则: 不要重复自己,提取通用逻辑到函数和组件,避免复制粘贴编程
  • YAGNI原则: 你不会需要它,不要构建尚未需要的功能,从简单开始,需要时再重构
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 9:18:45

CKS考试通关后,我总结的这16个K8s安全加固实战场景(含详细命令)

CKS认证工程师必备&#xff1a;16个Kubernetes生产级安全加固场景深度解析 在云原生技术快速发展的今天&#xff0c;Kubernetes已成为企业容器编排的事实标准&#xff0c;但随之而来的安全挑战也日益严峻。作为通过CKS认证的工程师&#xff0c;我们不仅需要掌握考试要求的修复技…

作者头像 李华
网站建设 2026/4/30 9:17:51

外边距问题 塌陷问题 HTML CSS

外边距问题-塌陷问题 一、参考资料 【前端Web开发HTML5CSS3移动web视频教程&#xff0c;前端web入门首选黑马程序员】 https://www.bilibili.com/video/BV1kM4y127Li/?p65&share_sourcecopy_web&vd_source855891859b2dc554eace9de3f28b4528 二、笔记总结

作者头像 李华
网站建设 2026/4/30 9:16:01

主从DNS服务器实验

【实验要求】&#xff1a;完成DNS的主服务器配置完成DNS的从服务器配置完成客户端配置【步骤】&#xff1a;一、DNS主服务器配置登录主服务器&#xff0c;完成IP等一切先前配置后&#xff0c;安装bind&#xff0c;进入目录/etc编辑主配置文件named.confvim /etc/named.conflist…

作者头像 李华
网站建设 2026/4/30 9:15:59

uboot学习笔记

一、学习uboot前需要掌握的知识1、什么是内存和外存参考博客&#xff1a;https://zhuanlan.zhihu.com/p/375053359https://blog.csdn.net/h_8410435/article/details/101718769https://zhuanlan.zhihu.com/p/714402846内存&#xff08;Memory&#xff09;&#xff0c;又称主存&…

作者头像 李华
网站建设 2026/4/30 9:11:34

java面试知识点复习

集合: ArrayList 和 LinkedList 区别 ArrayList&#xff1a;数组结构&#xff0c;查询快&#xff0c;增删慢&#xff0c;线程不安全 LinkedList&#xff1a;双向链表&#xff0c;增删快&#xff0c;查询慢, 线程不安全ArrayList: 为什么线程不安全? 不具备原子特性, 没有锁,没…

作者头像 李华