前端代码规范(别再乱写代码了!一份实用规范)

前端代码规范(别再乱写代码了!一份实用规范)
别再乱写代码了!一份实用规范

前言

开发的时候,还是要遵守一些规范的,不然代码看起来杂乱无章,毫无美感,一个有规范的代码,看起来就不像屎山,成为大佬的第一步,你的代码得有规范,下面我们一起来看看代码规范的那些事。

命名规范

命名规范是最最最常见的规范,好的命名是代码的第一步,应做到“见名知意”。

1、类名与接口名: 使用大驼峰式,比如UserService, OrderInfo, UserInfoDTO

2、方法名与变量名: 使用小驼峰式,比如calculateTotalPrice(), userName, getStudentName()

3、常量名: 全部大写,单词间用下划线分隔,比如MAX_RETRY_COUNT, DEFAULT_TIMEOUT_MS

4、包名: 全部小写,避免使用下划线,比如com.example.myproject


注意:

  • 对于布尔类型,为避免部分序列化框架解析异常,建议不要以 is 开头,可以使用 deleted, hasPermission, canEdit 等形式。
  • 避免无意义命名: 严禁使用拼音、拼音首字母或 a, b, tmp 等无意义字符命名。

格式规范

现在基本都用编程工具idea啥的开发,格式都大差不差,这里不做详细讲解,适当换行,保持代码整洁就行。

注释规范

说明其功能、参数、返回值和可能抛出的异常

简单例子

/** * 计算两个数的和。 * @param a 第一个加数 * @param b 第二个加数 * @return 两数之和 */public int add(int a, int b) {    return a + b;}

代码结构

  • 单一职责原则: 一个类或方法只负责一项功能
  • 方法长度: 单个方法的行数建议不超过 80
  • 一些能提取出来公用方法,就提取出来,避免过多冗余代码

springboot开发规范

上一篇已经讲过结构规范,这里不再重复说明。

类型

命名规则

示例

Controller 类

名词 + Controller

UserController

Service 接口

名词 + Service

OrderService

Service 实现

名词 + ServiceImpl

OrderServiceImpl

前端代码规范(别再乱写代码了!一份实用规范)

实体类

名词(单数)

User, Product

Repository/DAO

名词 + Repository 或 Mapper

UserRepository

配置类

名词 + Config 或 Configuration

WebConfig

工具类

名词 + Util 或 Utils

DateUtil, StringUtils

异常类

名词 + Exception

CustomException

  1. Controller层规范
  • 职责单一:Controller 不应包含复杂的业务逻辑、数据校验(除了简单的参数校验)或数据库操作。所有业务都应委派给 Service 层。
  • 建议遵循 RESTful 设计:使用 GET(查询)、POST(创建)、PUT(更新)、DELETE(删除)等标准方法来定义操作
  • 统一响应格式:所有接口应返回统一格式的响应体,通常包含 code(状态码)、message(消息)和 data(数据)字段。
  • 统一异常处理:使用 @ControllerAdvice 和 @ExceptionHandler 进行全局异常捕获和处理,避免在 Controller 中编写大量的 try-catch 代码,并确保返回统一的错误格式。

2.Service层规范

  • 事务边界:@Transactional 注解应加在 Service 层的方法上,而不是 Controller 或 Repository 层。对于查询操作,可以设置 @Transactional(readOnly = true) 以优化性能。
  • 依赖注入:强制使用构造函数注入,而不是 @Autowired 字段注入。这能确保依赖的不可变性和便于单元测试。
  • 避免臃肿:当一个 Service 类变得过于臃肿时,应根据业务流程或业务领域进行合理拆分。例如,将 OrderService 拆分为 OrderCreateService、OrderCancelService 等,使职责更清晰。
  • 方法命名:方法名应体现“业务含义”而非“技术动作”。比如createOrder(), calculatePrice(),不要用类似这种handler(), save()命名。
  • 业务复用:将复杂流程中的一些步骤抽出来为独立的私有方法,提高代码的可读性和复用性。
  • 外部调用:尽量避免在 @Transactional 事务内进行 Redis 写入、MQ 消息发送、HTTP 调用等外部操作,因为这些操作无法随数据库事务回滚,可能导致数据不一致。

Repository/DAO层规范

  • 命名规范:接口名通常为 名词 + Repository 或 名词 + Mapper,建议直接用名词 + Mapper看上去简单点。
  • 明确查询字段:在编写 SQL 时,避免使用 SELECT *,应明确指定需要查询的字段,以提高查询效率和安全性。(这部分以后会重新开一篇着重讲解查询优化)
  • 方法命名:遵循统一的命名前缀,如 get(获取单个)、list(获取多个)、count(统计)、delete(删除)。

疑问:Controller里面接口,某一个接口校验多了,导致代码长了怎么办?

1、使用声明式参数校验,在 DTO 类上使用 @NotNull, @Size, @Pattern 等注解,在 Controller 中使用 @Valid 或 @Validated 注解触发校验。

2、或者直接将校验放到service层,可以参考这样:实现Service 层抛出异常 -> 定义全局异常处理器 -> 返回统一格式给前端

记忆点

代码规范

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

相关阅读