代码评审CheckList
代码评审CheckList
Author: histonevon@zohomail.com
Date: 2023/10/24
- 此博客为笔者在工作中总结的经验,适用于笔者所在的工作,具体情况还需各位自己分析
- 以下的分类并不规范,有好的建议可以给我Email
- 值此1024祝全世界的开发者:天天无Bug,年年有加薪
- 原文地址:https://histonevon.top/archives/code-review-checklist
代码风格
- 大量使用另一开发者读的懂的注释
- 名字要望文生义
- 名字不要太长,使用公司或项目组规定或普遍认同的缩写
- 拒绝魔法数,擅用枚举
- 枚举的使用是为了便于代码阅读,绝不是简化处理可能出现的问题(比如使用枚举的错误类型,要在日志中写入可识别可定位的具体问题,例如流水号、时间、错误描述等)
- 拒绝未使用警告
- 减少代码层级
- 慎用循环
- 在无漏洞的情况下使用封装的轮子,包括可以减少机械化代码的工具(如:Lombok)
- 使用CheckStyle、SonarLint、ESLint等规范待提交的代码
业务处理
- 一个方法仅实现一个功能,且此功能可以从函数名中迅速理解
- 业务处理与非业务处理逻辑要分开,以便复用
- 时刻思考我能为别人实现哪些原子功能,如何拆分这些功能
- 时刻思考如果别人要使用此功能我需要怎么让别人无痛使用
- 时刻考虑在生产环境中如果出错要在日志中写什么才能快速定位问题
- 注意非空判断、超时处理、降级处理
- 注意处理多次操作下的情况(多次重复点击、网络问题、幂等处理)
架构守护
- 架构依赖及命名规范要在项目初期做到人尽皆知
- 使用架构设计最佳实践:如DDD、MVC、MTV、MVVM等
- 使用ArchUnit监控不规范的架构使用
数据处理
- 数据库用什么查什么
- 注意不同DBMS的操作特性
- 能用SQL就用SQL
To be continued
相关文章:
代码评审CheckList
代码评审CheckList Author: histonevonzohomail.com Date: 2023/10/24 此博客为笔者在工作中总结的经验,适用于笔者所在的工作,具体情况还需各位自己分析以下的分类并不规范,有好的建议可以给我Email值此1024祝全世界的开发者:天天…...
[尚硅谷React笔记]——第5章 React 路由
目录: 对SPA应用的理解对路由的理解前端路由原理路由的基本使用路由组件与一般组件NavLink的使用封装NavLink组件Switch的使用解决样式丢失问题路由的模糊匹配与严格匹配Redirect的使用嵌套路由向路由组件传递params参数向路由组件传递search参数.向路由组件传递st…...
如何去掉不够优雅的IF-ELSE
不够优雅的IF-ELSE: 在一个方法中根据两个参数的不同值组合来返回四种可能的类型,你可以使用条件语句,例如 if-else 语句或 switch 语句,来实现这个逻辑。以下是一个示例,假设你有两个参数 param1 和 param2ÿ…...
Python中defaultdict的使用
文章目录 Python 中的 defaultdict 与 dictPython 中的 defaultdict Python 中 defaultdict 的有用函数Python 中的 defaultdict.clear()Python 中的 defaultdict.copy()Python 中的 defaultdict.default_factory()Python 中的 defaultdict.get(key, default value) 今天的文章…...
【ccc3.8】虚拟列表
一个简单的虚拟列表,没有任何其他东西。 原理就是向上滚动时,将下面离开屏幕的那一个item塞到上侧来: 主代码仅有两个:ScrollList对应的滚动容器,ScrollListItem对应单项的预制体 当前支持两种:竖向滚动、…...
【23种设计模式】单一职责原则
个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...
DNS入门学习:什么是TTL值?如何设置合适的TTL值?
TTL值是域名解析中的一个重要参数,TTL值设置的合理与否对于域名解析的效率和准确性有着非常重要的影响,因此对于网站管理者而言,了解什么是TTL值以及如何设置合理的TTL值对于做好域名解析管理,确保网站的安全稳定运行至关重要。 …...
ilr normalize isometric log-ratio transformation
visium_heart/st_snRNAseq/05_colocalization/create_niches_ct.R at 5b30c7e497e06688a8448afd8d069d2fa70ebcd2 saezlab/visium_heart (github.com) 更多内容,关注微信:生信小博士 The ILR (Isometric Log-Ratio) transformation is used in the anal…...
el表单的简单查询方法
预期效果 实现表单页面根据groupid 、type 、errortype进行数据过滤 实现 第一步,在页面中添加输入或者是下拉框,并且用相应的v-model进行绑定 <div style"display: flex;flex-direction: row;"><el-input style"width: auto…...
【USRP】通信总的分支有哪些
概述 通信是一个广泛的领域,涵盖了许多不同的技术、应用和专业分支。以下是通信领域的一些主要分支: 有线通信:这涉及到利用物理媒介(如电缆、光纤)进行通信。 电信:包括电话、电报和传真服务。宽带&#…...
关于服务器网络代理解决方案(1024)
方法一、nginx代理 配置代理服务器 在能够访问外网的服务器上,安装和配置 Nginx。你可以使用包管理器来安装 Nginx,例如: csharpCopy codesudo apt-get install nginx # 对于基于 Debian/Ubuntu 的系统 sudo yum install nginx # 对于基于 C…...
Linux下 /etc/shadow内容详解
/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息,又称为“影子文件”。 前面介绍了 /etc/passwd 文件,由于该文件允许所有用户读取,易导致用户密码泄露,因此 Linux 系统将用户的密码信息从 /etc/passwd 文件中…...
Go学习第二章——变量与数据类型
Go变量与数据类型 1 变量1.1 变量概念1.2 变量的使用步骤1.3 变量的注意事项1.4 ""的使用 2 数据类型介绍3 整数类型3.1 有符号整数类型3.2 无符号整数类型3.3 其他整数类型3.4 整型的使用细节 4 小数类型/浮点型4.1 浮点型的分类4.2 简单使用 5 字符类型5.1 字符类型…...
【剑指Offer】:循环有序列表的插入(涉及链表的知识)
给定循环单调非递减列表中的一个点,写一个函数向这个列表中插入一个新元素 insertVal ,使这个列表仍然是循环升序的 给定的可以是这个列表中任意一个顶点的指针,并不一定是这个列表中最小元素的指针 如果有多个满足条件的插入位置,…...
【Django 04】Django-DRF(ModelViewSet)
DRF是什么? ModelViewSet 是 Django REST framework 提供的一个视图集类,它封装了常见的模型操作方法。 模型类提供了默认的增删改查功能。 它继承自 GenericViewSet、ListModelMixin、RetrieveModelMixin、CreateModelMixin、UpdateModelMixin、Dest…...
ubuntu命令
一、 防火墙命令 1、安装防火墙 sudo sudo apt-get install ufw2、查看防火墙状态 sudo ufw status# 返回结果 # Status: inactive # 表示没有开启防火墙3、开启防火墙 sudo ufw enable# 返回结果 # Command may disrupt existing ssh connections. Proceed with operation…...
C++学习之强制类型转换
强制类型转换运算符 带着三个疑问阅读: 出现的背景是什么?何时使用?如何使用? MSDN . 强制转换运算符 C中的四种强制类型转换符详解 static_cast (1) 使用场景 在基本数据类型之间转换,如把 int 转换为 char&#…...
在Linux中,可以使用以下命令来查看进程
在Linux中,可以使用以下命令来查看进程: ps 命令:显示当前用户的进程状态。 ps:显示当前终端会话中正在运行的进程。ps aux:显示系统中所有正在运行的进程,包括其他用户的进程。ps -ef:显示系统…...
【算法训练-动态规划 一】【应用DP问题】零钱兑换、爬楼梯、买卖股票的最佳时机I、打家劫舍
废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【动态规划】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…...
2023年中职组“网络安全”赛项云南省竞赛任务书
2023年中职组“网络安全”赛项 云南省竞赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服务加固…...
基于改进快速粒子群算法的IEEE33节点有源配电网动态无功优化软件介绍
基于改进的快速粒子群有源配电网动态无功优化 软件:Matlab 介绍:在含分布式电源的IEEE33进行无功优化,以无功最优和运行费用最优为目标函数进行优化,采用改进的快速粒子群算法进行计算概述 本系统面向含分布式电源(DG&…...
MarkDown语法学习总结
MarkDown语法学习 一级标题:#空格标题名 二级标题 二级标题:##空格标题名 几级标题就写几个# 字体 粗体:** 文本 ** 你好 斜体:* 文本 * 你好 斜体加粗:* * * 文本 * * * 你好 删除线:~~ 文本~…...
塞尔达传说存档定制指南:打造个性化游戏体验
塞尔达传说存档定制指南:打造个性化游戏体验 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 在海拉鲁大陆的冒险中,你是否曾因资源匮乏而错…...
杰理之变声接口异常死机问题【篇】
void audio_voice_changer_mode_switch(u16 uuid, char *name, VOICE_CHANGER_MODE mode)...
基于 IWR6843毫米波雷达 的多人跟踪与跌倒检测系统
这是一个面向室内人体感知场景的毫米波雷达项目,核心功能是:多人目标实时跟踪 跌倒检测可视化。项目基于 IWR6843 DCA1000 实现,页面可以直接完成雷达配置、实时目标显示、轨迹跟踪和跌倒告警展示,适合做演示、方案展示和二次开…...
用MATLAB FFT手把手教你分析NRZ、2ASK、2FSK、2PSK信号的频谱(附完整代码)
MATLAB FFT实战:从零解析NRZ/2ASK/2FSK/2PSK信号频谱特性 通信仿真中频谱分析就像医生的听诊器,能让我们"听见"信号最本质的特征。但很多初学者面对FFT频谱图时,常陷入三个典型困惑:为什么我的频谱图与教材理论对不上&a…...
3大维度解锁BG3 Mod Manager潜能:构建高效博德之门3模组管理体系
3大维度解锁BG3 Mod Manager潜能:构建高效博德之门3模组管理体系 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager 价值定位:重…...
避坑指南:树莓派读取NTC热敏电阻温度不准?可能是你的Steinhart-Hart公式用错了
树莓派温度监测精度提升实战:从Steinhart-Hart公式到系统级校准 当你在树莓派上搭建的温度监测系统显示当前室温为32C,而实际温度计读数却是28C时,这种偏差可能让人抓狂。这不是简单的测量误差,而是整个信号链中多个环节共同作用的…...
使用 Dify 快速搭建 Ostrakon-VL 智能应用:无需编码的视觉工作流
使用 Dify 快速搭建 Ostrakon-VL 智能应用:无需编码的视觉工作流 1. 引言:当视觉理解遇上无代码开发 想象一下,你是一家电商公司的运营人员,每天需要处理上千张商品图片——识别商品类别、提取关键属性、整理成表格。传统方式要…...
避开这3个坑,你的LVGL界面动画才能流畅不卡顿:定时器使用避坑指南
避开这3个坑,你的LVGL界面动画才能流畅不卡顿:定时器使用避坑指南 在嵌入式GUI开发中,流畅的动画效果往往能大幅提升用户体验。但很多开发者在使用LVGL定时器实现动画时,常会遇到界面卡顿、响应迟缓的问题。这通常不是LVGL本身的问…...
