版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
代码编写规范范本1.总则1.1目的为统一代码编写标准,提升代码可读性、可维护性、可扩展性和安全性,降低团队协作成本,减少潜在bug,确保项目代码质量的一致性和规范性,特制定本规范。本规范适用于项目所有开发人员、测试人员及相关协作人员,所有代码编写、修改、评审均需严格遵循。1.2适用范围本规范适用于项目中所有代码文件,包括但不限于前端(HTML、CSS、JavaScript、Vue等)、后端(Java、Python、Go等)、脚本文件(Shell、Batch等),涵盖代码编写、注释、命名、格式、提交等全流程。1.3核心原则可读性优先:代码是写给人看的,其次才是机器,确保他人能快速理解代码逻辑和用途。一致性原则:同一项目、同一模块的代码,在命名、格式、注释等方面保持统一,避免混乱。简洁高效原则:在保证代码清晰的前提下,简化冗余逻辑,提升代码执行效率,避免不必要的复杂实现。安全性原则:规避常见安全隐患(如SQL注入、XSS攻击、空指针异常等),遵循各语言安全编码规范。可维护性原则:代码结构清晰、模块化,便于后续修改、扩展和排查问题,降低维护成本。2.通用编写规范2.1命名规范2.1.1通用命名原则命名需简洁、准确、有意义,直接体现变量、函数、类、文件等的用途,避免无意义的命名(如a、b、temp1等);禁止使用中文、拼音(特殊场景除外,需团队统一确认)、特殊字符(除下划线_、连字符-外);区分大小写,严格遵循各语言的命名约定。2.1.2变量命名局部变量/成员变量:采用小驼峰命名法(camelCase),如userName、orderId、totalAmount。常量命名:采用全大写+下划线分隔(UPPER_SNAKE_CASE),如MAX_PAGE_SIZE、USER_STATUS_ACTIVE、DB_CONNECTION_URL。全局变量:尽量避免使用全局变量,若必须使用,采用前缀g_+小驼峰(如g_globalConfig),或遵循对应语言的全局变量命名规范。2.1.3函数/方法命名采用小驼峰命名法(camelCase),以动词开头,明确表示函数的动作或用途,如getUserInfo、submitOrder、checkPermission。函数命名需简洁明了,避免过于冗长,若函数功能复杂,可拆分多个子函数,每个子函数负责单一功能。布尔型函数/方法:命名需体现“是否”含义,可前缀is、has、can、check等,如isValidUser、hasPermission、canSubmit。2.1.4类/接口命名类:采用大驼峰命名法(PascalCase),以名词开头,体现类的实体或功能,如User、OrderService、DataBaseUtil。接口:采用大驼峰命名法,前缀统一为I(部分语言可省略,如JavaScript),如IUserService、IOrderDao。抽象类:前缀可统一为Abstract,如AbstractBaseService;工具类:后缀统一为Util,如StringUtil、DateUtil。2.1.5文件/文件夹命名文件命名:遵循对应语言的约定,前端文件(HTML、CSS、JS、Vue)可采用小驼峰或连字符分隔(kebab-case),如user-list.vue、login.css、apiRequest.js;后端文件(Java、Python)采用大驼峰(类文件)或小驼峰(脚本文件),如UserController.java、orderService.py。文件夹命名:采用小驼峰或连字符分隔,按功能模块划分,如userManage、orderSystem、commonUtil,避免层级过深(建议不超过4层)。2.2代码格式规范2.2.1缩进统一使用4个空格缩进(禁止使用Tab缩进,避免不同编辑器显示不一致),每一层逻辑块(如if、for、while、类、函数)缩进一次。嵌套逻辑的缩进需严格对齐,确保代码结构清晰,便于区分层级关系。2.2.2换行每个独立的语句占一行,避免一行多句(如:leta=1;letb=2;需拆分为两行)。逻辑块(if、for、while、try-catch等)的左大括号{紧跟语句后,右大括号}单独占一行,且与逻辑块开头对齐;如:正确示例:if(userStatus===1){//逻辑代码}错误示例:if(userStatus===1){//逻辑代码}或if(userStatus===1){逻辑代码}函数参数过多时,可换行对齐,每个参数占一行,便于阅读;如:functiongetUserInfo(userId,userName,userPhone,userAddress){//逻辑代码}可拆分为:functiongetUserInfo(userId,userName,userPhone,userAddress){//逻辑代码}2.2.3空格运算符(+、-、*、/、=、==、===、!=、!==、&&、||等)前后各加一个空格,如:letsum=a+b;if(a===b)。逗号(,)、分号(;)后加一个空格(分号若在句尾可省略),如:letarr=[1,2,3];functionfn(a,b)。括号(()、[]、{})内部两侧不加空格,如:letobj={name:'test'};letlist=[1,2,3];fn(1,2)。注释符号(//、/*)与注释内容之间加一个空格,如://这是单行注释/*这是多行注释*/。2.2.4分号遵循对应语言的约定,如JavaScript建议每行语句结尾加半角分号(避免自动分号插入机制导致的异常);Python无需加半角分号;Java、C++等必须在语句结尾加半角分号,确保代码语法正确。2.3注释规范2.3.1注释原则注释需简洁、准确、有用,避免冗余注释(如//定义变量a,leta=1;),也避免无注释(复杂逻辑不注释,他人无法理解)。注释与代码同步更新,代码修改后,对应的注释需及时修改,避免注释与代码不一致。禁止使用无意义注释、侮辱性注释、与代码无关的注释(如吐槽、无关备注)。2.3.2单行注释使用//开头,用于注释单个语句、变量用途、临时说明等,注释位于被注释内容的上方或右侧(右侧注释需与代码保持一定距离,确保可读性)。示例1(上方注释)://用户状态(1-正常,2-禁用,3-注销)letuserStatus=1;示例2(右侧注释):letuserStatus=1;//用户状态(1-正常,2-禁用,3-注销)2.3.3多行注释使用/*...*/包裹(部分语言如Python使用'''...'''或"""..."''"),用于注释代码块、类、函数、复杂逻辑等,说明其功能、参数、返回值、注意事项等。类注释:位于类定义上方,说明类的用途、作者、创建时间、修改记录等。函数注释:位于函数定义上方,说明函数的功能、参数(名称、类型、含义)、返回值(类型、含义)、异常情况、注意事项等。示例(Java函数注释):/**根据用户ID查询用户信息*@paramuserId用户ID(必填,正整数)*@returnUser用户信息对象(null表示无此用户)*@throwsException数据库查询异常*/publicUsergetUserById(IntegeruserId)throwsException{//逻辑代码}2.3.4特殊注释TODO:表示待完成的功能,格式为//TODO:待完成内容(如//TODO:完善异常处理逻辑),便于后续跟踪。FIXME:表示代码中存在bug或问题,需要修复,格式为//FIXME:问题描述(如//FIXME:此处可能出现空指针异常),需优先处理。NOTE:表示重要说明,格式为//NOTE:说明内容(如//NOTE:此方法仅用于内部调用,禁止外部调用)。3.各语言特定编写规范3.1前端代码规范(HTML/CSS/JavaScript/Vue)3.1.1HTML规范标签名统一使用小写,如<div>、<span>,禁止使用大写(如<DIV>)。标签属性统一使用双引号(""),禁止使用单引号(''),属性名小写,如<inputtype="text"name="userName">。语义化标签优先使用,如<header>、<nav>、<main>、<footer>,避免过度使用<div>。避免冗余标签,如<div><span>内容</span></div>,无必要时可简化。HTML文件头部需添加DOCTYPE声明和meta标签(编码、视口等),如:<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>页面标题</title></head>3.1.2CSS规范选择器命名:采用BEM命名规范(块-元素-修饰符),如.header__logo--active,或小驼峰、连字符分隔,避免使用无意义命名(如.box1、.style2)。样式声明顺序:按“布局属性→盒模型属性→视觉属性→其他属性”排序,如:width、height→margin、padding→background、color→font-size、line-height。样式简写:在不影响可读性的前提下,合理使用简写,如margin:10px20px;(替代margin-top:10px;margin-right:20px;等),避免过度简写导致难以维护。避免内联样式(style属性),样式统一写在CSS文件或style标签中,便于统一管理和修改。注释:对样式模块进行注释,说明其用途,如/*头部导航样式*/.header{...}3.1.3JavaScript规范变量声明:优先使用let、const,禁止使用var(避免变量提升导致的问题);const用于声明常量(不可修改的值),let用于声明变量(可修改的值)。数据类型:避免使用any类型(TypeScript),明确变量、函数的类型,提升代码安全性和可读性。函数:优先使用箭头函数(适合简单逻辑),复杂函数可使用函数声明;避免嵌套过深(建议不超过3层),可拆分函数。对象/数组:对象字面量简洁写法,如constuser={name,age}(替代constuser={name:name,age:age});数组使用字面量,避免使用newArray()。异常处理:对可能出现异常的代码(如接口请求、DOM操作),使用try-catch捕获异常,避免程序崩溃,并给出合理的错误提示。3.1.4Vue规范组件命名:单文件组件(SFC)采用大驼峰或连字符分隔,如UserInfo.vue、user-list.vue,组件名需体现组件功能。模板:模板结构清晰,缩进对齐;避免模板中写复杂逻辑,复杂逻辑可放在computed、methods中。生命周期:合理使用生命周期钩子,避免在created中做过多DOM操作(建议在mounted中进行)。Props:明确Props的类型、默认值、必填项,如props:{userId:{type:Number,required:true,default:0}}。注释:组件头部添加注释,说明组件用途、Props、Events、Slots等;模板和脚本中的复杂逻辑添加对应注释。3.2后端代码规范(Java/Python/Go)3.2.1Java规范包命名:采用全小写,以公司/组织域名倒置开头,按功能模块划分,如ject.user、ject.order。类/接口:遵循2.1.4节命名规范,抽象类、工具类命名符合约定;类的访问修饰符合理使用(public、private、protected),避免滥用public。方法/变量:遵循2.1.2、2.1.3节命名规范;成员变量私有化(private),通过getter/setter方法访问,避免直接访问。异常处理:避免捕获异常后不处理(如try{...}catch(Exceptione){}),需打印异常信息或进行对应处理;自定义异常需继承Exception或RuntimeException,命名以Exception结尾。代码结构:每个类单独一个文件,文件名与类名一致;类中方法按“构造方法→静态方法→成员方法”排序,逻辑相关的方法放在一起。3.2.2Python规范缩进:严格使用4个空格缩进(Python语法要求),避免Tab缩进,否则会导致语法错误。命名:遵循PEP8规范,变量、函数、模块采用小驼峰或下划线分隔(snake_case),如user_name、get_user_info;类采用大驼峰,如User、OrderService。导入:导入模块按“标准库→第三方库→自定义库”排序,每个导入单独一行;避免导入无用模块,避免循环导入。函数/类:函数、类之间空两行,方法之间空一行;函数参数尽量简洁,避免过多参数(建议不超过5个),可使用字典传递多个参数。注释:使用三引号('''...''')作为多行注释,单行注释使用#;函数、类的注释需说明功能、参数、返回值等,符合docstring规范。3.2.3Go规范命名:变量、函数、包采用小驼峰(camelCase),常量采用全大写+下划线分隔;包名简洁,与文件夹名一致,避免使用复数。缩进:使用4个空格缩进,左大括号{紧跟语句后,右大括号}单独占一行,与逻辑块开头对齐(Go语法要求)。导入:导入包按“标准库→第三方库→自定义库”排序,分组之间空一行;导入路径使用相对路径或绝对路径,避免冗余。函数:函数参数和返回值类型放在变量名之后,如funcgetUserById(userIdint)(User,error);避免函数过长,拆分复杂函数。错误处理:优先返回error类型,避免使用panic(仅在严重错误时使用);错误信息需清晰,说明错误原因,便于排查。4.代码提交规范4.1提交信息格式提交信息需简洁、准确,体现提交的内容和目的,格式统一为:【类型】提交描述(可选:详细说明),其中类型包括:feat:新增功能(如:【feat】新增用户登录功能)。fix:修复bug(如:【fix】修复用户登录密码加密异常问题)。docs:修改文档(如:【docs】更新代码注释和规范文档)。style:修改代码格式(不影响代码逻辑,如缩进、空格、命名)(如:【style】规范用户模块代码格式)。refactor:重构代码(不新增功能、不修复bug,仅优化代码结构)(如:【refactor】重构订单查询逻辑,提升效率)。test:新增/修改测试用例(如:【test】新增用户登录测试用例)。chore:构建、依赖、脚本等辅助操作(如:【chore】更新依赖包版本)。4.2提交注意事项每次提交仅包含一个功能或一个bug的修改,避免一次提交多个不相关的修改,便于后续回滚和排查问题。提交前需自检代码,确
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省曲靖市陆良县达标名校2026届初三第一次诊断性测试英语试题理试题含解析
- 生态文明建设的制度创新路径
- 少儿汉字活动策划方案(3篇)
- 哈尔滨滑梯施工方案(3篇)
- 应急预案评审发布(3篇)
- 应急预案疏散指示(3篇)
- 大众产品-营销方案(3篇)
- 应急预案夜班值守(3篇)
- 弱电防盗施工方案(3篇)
- 抽血错误应急预案(3篇)
- 2026年安徽城市管理职业学院单招职业适应性测试题库完整答案详解
- 2026青岛城投充电网科技发展有限公司招聘笔试备考试题及答案解析
- 腾讯数据分析师面试宝典
- 2026年江苏护理职业学院单招职业适应性测试题库有答案详解
- 增值税内部发票管理制度
- 财政系统内部考核制度
- 2026年高中语文教师资格证综合素质考试真题
- 2026年湖南邮电单招试题及答案
- GB/Z 136-2026医学实验室生物标本染色用试剂用户指南
- 2026春教科版一年级科学下册(全册)教学设计(附教材目录)
- 2026年陕西工商职业学院单招职业技能测试题库必考题
评论
0/150
提交评论