)
目录一、整体原则所有代码通用二、编程规约新手重灾区优先级最高1. 命名规范最基础面试 / CR 必查1各类标识符规则2特殊命名约定企业通用2. 格式规范3. 变量 常量4. 集合使用新手高频 Bug 点5. 控制语句if/for/switch6. 字符串三、异常处理新手最乱的模块四、MySQL 数据库规约后端核心面试 工作重点1. 建表规范2. 索引规范新手性能大坑3. SQL 编写规范4. ORM 层MyBatis/MyBatis-Plus五、工程结构 分层规范项目架构六、安全规约线上必守七、性能规约新手进阶二、新手程序员重点注意问题落地避坑清单1. 心态 编码习惯第一位2. 每天必检查的代码点CR 高频问题3. 绝对不能犯的低级错误4. 版本控制 Git 规范工作必备5. 学习建议新手成长路线总结极简背诵版手册分编程规约、异常日志、MySQL、工程结构、安全、性能、设计七大块下面只讲高频考点、工作必守、新手最容易踩的坑兼顾理论 实操。一、整体原则所有代码通用代码可读 炫技优先直白写法不要写 “一行神仙代码”新手切忌过度嵌套、简写、花式语法。统一规范 个人习惯命名、缩进、注释、格式全团队统一入职第一件事对齐编码规范。提前防错 事后排错空判断、参数校验、边界值、异常捕获写代码时就考虑健壮性。二、编程规约新手重灾区优先级最高1. 命名规范最基础面试 / CR 必查1各类标识符规则包名小写、连续单词不用下划线 / 大写 错误com.Study_Demo正确com.studydemo类名大驼峰UpperCamelCase名词 正确UserService、OrderMapper方法 / 变量小驼峰lowerCamelCase动宾结构 错误getuser()正确getUser()常量全大写 下划线分隔static final正确public static final int MAX_PAGE 10;枚举类名大驼峰枚举值全大写禁止拼音混合命名、单个字母无意义命名除临时循环变量i,j、中英文混搭。2特殊命名约定企业通用接口后缀Service / Mapper / Dao / Handler实现类接口名 Impl如UserServiceImpl数据实体Entity / DO / DTO / VO / BO严格区分新手必记DO数据库实体和表一一对应DTO接收前端参数 / 对外传输VO返回给前端展示数据 禁止一个实体到处用DO 直接返前端、VO 入库。2. 格式规范缩进统一4 个空格禁止用 Tab。左大括号紧跟代码行尾不单独另起一行。运算符左右加空格if/for/while后面必须加空格。单行字符不超过120 字符超长代码手动换行。3. 变量 常量成员变量、局部变量初始化避免默认值引发空指针。魔法值硬编码数字 / 字符串必须抽成常量。 反面if(status 1)正面if(status STATUS_NORMAL)禁止使用float/double做金额计算必须用BigDecimal。4. 集合使用新手高频 Bug 点初始化集合指定容量已知元素数量创建ArrayList时传入初始容量减少扩容开销。集合判空标准写法统一用工具类org.springframework.util.CollectionUtils// 正确 if (!CollectionUtils.isEmpty(list)) // 错误先判null再判size冗余且易错 if (list ! null list.size() 0)遍历禁忌不要在foreach循环里增删元素触发并发修改异常要用迭代器。禁止用fori遍历Set。Map 规范推荐HashMap线程安全用ConcurrentHashMap绝对不用 Hashtable。遍历 Map 优先entrySet不要多次get(key)。数组转集合陷阱Arrays.asList()返回的是固定长度集合不能 add/remove。5. 控制语句if/for/switchif 分支少用多层嵌套超过 3 层就要重构。优先正向判断、提前 return减少嵌套。// 推荐卫语句 if (user null) { return; } // 业务逻辑switch每个 case 必须写break避免穿透。必须加default分支。for 循环循环内不要频繁调用方法如list.size()提前提取。6. 字符串拼接字符串循环内用StringBuilder不要直接。字符串判空统一工具类StringUtils.isBlank()推荐/isEmpty()。isBlank判断 null、空串、全空格isEmpty只判断 null、空串禁止用比较字符串一律用equals()。 技巧常量放前面避免空指针success.equals(status)三、异常处理新手最乱的模块禁止使用异常做流程控制异常是用来处理意外错误不是替代 if 判断。try-catch 范围要小不要把一整段业务全包在一个大 try 里难以定位问题。禁止捕获最顶层 Exception 不处理// 反面吞掉异常线上问题完全无法排查 try { ... } catch (Exception e) {}必须打印日志 向上抛出 / 友好返回。自定义业务异常项目统一封装自定义异常不要到处抛原生RuntimeException。finally 块资源释放流、连接、Socket 等资源优先使用try-with-resources自动关闭JDK7不用手动 finally。日志打印生产环境禁止System.out.println / e.printStackTrace()全部用日志框架SLF4JLogback。日志级别区分error(错误)、warn(告警)、info(正常流程)、debug(调试)。日志要打印关键参数、请求 ID、用户 ID方便排查。四、MySQL 数据库规约后端核心面试 工作重点1. 建表规范必须字段每张表强制id(主键)、create_time、update_time、deleted(逻辑删除)用逻辑删除禁止物理删除数据。主键主键id用自增 bigint不用 uuid索引效率低。字段命名下划线命名和 Java 实体小驼峰映射禁止拼音。数据类型选择字符串优先varchar长度按需定义不滥用text。手机号、身份证等长文本用varchar不用数字类型。时间统一用datetime禁止用timestamp时区 / 范围坑多。禁止保留关键字做字段名order、user、status 等。2. 索引规范新手性能大坑主键必建索引频繁查询、条件筛选字段建索引。联合索引遵循最左匹配原则。禁止过度建索引索引提升查询、降低增删改速度。索引失效场景必记like %xxx左模糊字段隐式类型转换字符串和数字对比or连接无索引字段对索引列使用函数、运算3. SQL 编写规范** 禁止 select *** 只查需要的字段减少网络传输、避免字段变动出问题。分页必须加limit大数据量禁止全表查询。大事务拆分长事务锁表、引发死锁、主从延迟。in语句元素数量不要过多建议小于 500。分页深分页limit 100000,10优化用主键偏移方案。4. ORM 层MyBatis/MyBatis-PlusSQL 写在 XML / 注解中禁止硬拼 SQL防注入。参数使用#{}禁止${}SQL 注入风险。五、工程结构 分层规范项目架构标准分层新手必须遵守不乱分层Controller 层接收请求、参数校验、路由、返回结果不写业务逻辑不直接操作数据库Service 层核心业务逻辑、事务控制事务注解Transactional加在 Service 方法上Mapper/DAO 层仅做数据库 CRUD无业务逻辑Entity/DTO/VO数据载体分层隔离包结构统一按功能模块划分不要按技术类型划分。错误controller/ service/ mapper所有类堆一起正确user/ order/ goods每个模块下分 controller/service/mapper六、安全规约线上必守防 SQL 注入不用${}参数预编译。防 XSS 跨站脚本前端 后端统一转义特殊字符。接口参数校验所有入参非空、长度、格式校验用 Hibernate Validator。敏感数据手机号、身份证、密码脱敏后再返回前端。密码严禁明文存储必须加盐哈希加密BCrypt/SHA256。七、性能规约新手进阶循环里不要创建对象对象外提。避免频繁 IO、数据库查询、远程调用。热点数据用 Redis 缓存减少 DB 压力。异步处理非核心流程消息、通知、日志用异步 / 消息队列不阻塞主流程。线程禁止手动创建new Thread()统一使用线程池。二、新手程序员重点注意问题落地避坑清单1. 心态 编码习惯第一位先想再写不要边写边改简单功能也先梳理流程、入参、出参、异常场景。写完代码自测正常场景、空参数、极端边界值、异常场景都测一遍再提交。不要复制粘贴代码不检查复制后一定要改变量名、条件、注释这是 BUG 重灾区。勤写注释复杂逻辑、特殊业务、算法必须加注释注释说明 “为什么”不是 “做什么”。2. 每天必检查的代码点CR 高频问题所有入参是否做了非空 / 合法性校验集合、字符串有没有用正确工具类判空有没有魔法值、硬编码字符串拼接、循环有没有用对StringBuilder异常有没有捕获、打日志有没有吞异常SQL 是不是select *、有没有深分页、左模糊资源流、连接有没有正常关闭3. 绝对不能犯的低级错误空指针 NPE新手第一大 BUG对象使用前必判空。集合遍历时增删元素触发ConcurrentModificationException。用比较字符串、包装类。金额用double/float精度丢失。线上代码留System.out、e.printStackTrace()。大事务、长事务导致锁表。接口不做参数校验被非法参数攻击。4. 版本控制 Git 规范工作必备提交注释清晰[模块] 功能/修复xxx禁止直接往main/master分支提交代码走分支 合并。拉代码先pull再写代码避免大量冲突。5. 学习建议新手成长路线先吃透基础规约把格式、命名、判空、集合、异常练成本能。写代码分层思维分清 Controller/Service/Mapper 职责。遇到报错先看日志学会根据堆栈定位问题。不要一味堆新语法稳定、可读、可维护优先。每次改完代码复盘为什么出问题规范里哪条对应总结极简背诵版新手抓4 个核心就能避开 90% 问题命名格式统一拒绝拼音、魔法值、混搭风格。判空到位对象、字符串、集合全套工具类判空防 NPE。异常日志规范不吞异常、不用原生输出、分级打日志。SQL 保守写法不 select*、慎用模糊查询、合理建索引、逻辑删除。照着手册规范写代码不仅减少 BUG面试、代码评审也会非常加分。