Code Review防毒打指南

简介: Code Review防毒打指南

命名规范

取名过于简单,无法清晰表达含义。

可能在自己编写代码的时候可以理解,但是别人第一眼看到这样的命名时,是完全不知道它具体表达了什么含义的,很难阅读

// 单字符,剪短单词作为变量名
 let flag = false;
 for(f in markedFiles){
   //handler each marked file
 }

命名风格不一,影响代码阅读

他们都是判断性函数的命名,但是使用不同命名风格

我们应该尽量养成一个固定命名思路或者命名风格

//多种风格的方法名
 isProcessRunning()
 checkIfPageClosed()

建议

  1. 可以适当参照现有代码的命名风格。
  2. 命名要能够清晰展现有关的含义(好的命名的基本要求)
    -较长清晰的命名优于简短模糊的命名,不要过于追求简短
    -一个命名花费的思考是值得的。
  3. 命名技巧学习:
    -多阅读书籍、教程、知名源码等等,学习命名思路和技巧。

注释不合规

修改代码不更新注释,造成误导

//do something about A 
 Function()
 {
     // do some actions about B
 }

无意义的注释(如日志型注释,废弃的代码)

这类注释对于代码逻辑没有任何的理解上的帮助,相反还增加了篇幅,随着现代项目管理工具越来越强大已经不需要了。

/*
  * Date: 1 Jan
  * Author: Hy
  * Change: Update this function for fixing bug : ...
  * ........
 */
 Function(){
     /*
     OldFlow();
     */
     NewFlow();
 }

过多篇幅的注释

别人不一定有耐心去读我们的注释,如果代码不够清晰,注释再多,也不利于后期的修改和维护。

所以过多篇幅的注释出现在了我们代码中,我们要考虑是不是可以让代码更清晰

/*
     multi-lines
 */
 Function(){
     ......
 }

建议:

  1. 避免写出坏注释
    -不达意的注释
    -含有误导的注释
    -与逻辑无关的注释
  2. 及时更新注释
  3. 清晰代码不需要太多注释说明的

函数封装和复用

不使用团队封装的工具库,自己重新实现

公司封装这些工具库、组件的目的是让所有人使用或调用的时候可以在同一个规范上使用同样的代码,便于后续问题的排查,保证我们代码的质量。

自己重新实现容易带来一些阅读、后期维护等问题。

函数过长,缺乏提炼

Function()
 {
     // do A
     ...
     // do B
     ...
     // do C
     ...
     ...
 }

三次及以上重复代码不做复用

重复两次时可做可不做,一旦到达三次一定封装

修改公共库时只考虑到自身业务逻辑

只顾及自己的业务实现,不兼容他人使用场景

建议:

  1. 使用组件时,先看看是否团队进行过封装
  2. 按照职责设计和提炼函数,尽量做到函数单一职责
  3. 相同逻辑的代码积极复用

不合理的变量定义

变量定义不考虑解耦

例子中,此种域名如果我们定义多个,就没有做到解耦以及复用

//方法体中的整型/字符串定义
 let loginUrl = "www.xxx.com/login"
 let helpUrl = "www.xxx.com/help"

根据使用场景判断是否应该动态生成内容

const systemPath = "C:\";

例如Windows的操作系统一般是C盘,但这个可以手动更改

如果代码中我们设置为C盘,那后续如果用户本身系统盘并不是C盘,那就会出问题,应通过API或其他方式进行获取、



目录
相关文章
|
JavaScript 前端开发 安全
使用 Node.js 插件给指定目录下的所有图片添加上文字水印
使用 Node.js 插件给指定目录下的所有图片添加上文字水印
296 0
|
JavaScript API
JS如何模拟鼠标点击X,Y坐标
现在我有个窗口坐标X,Y. 如何利用JS点击该坐标? document.body.onclick = function(){ e = arguments[0]; var dt = e.
2723 0
|
存储 数据中心 云计算
逻辑存储和物理存储各代表什么?区别是什么?
逻辑存储和物理存储各代表什么?区别是什么?
|
Kubernetes 网络协议 容器
kubernates(K8s) 踩坑日记(一)init初始化报错 dial tcp [::1]:10248: connect: connection refused
kubernates(K8s) 踩坑日记(一)init初始化报错 dial tcp [::1]:10248: connect: connection refused
2890 0
kubernates(K8s) 踩坑日记(一)init初始化报错 dial tcp [::1]:10248: connect: connection refused
|
7月前
|
Ubuntu Linux 网络安全
Ubuntu Docker镜像:支持systemctl、SSH、VNC
总的来说,创建一个支持systemctl、SSH和VNC的Ubuntu Docker镜像需要一些技术知识,但是通过学习和实践,我们可以掌握这些技术。这将使我们能够更有效地使用Docker,更好地管理我们的应用程序和服务。CentOS系统中的日志文件位置和管理
242 17
|
安全 Java 数据库连接
Python多线程编程:竞争问题的解析与应对策略
Python多线程编程:竞争问题的解析与应对策略
267 0
|
Linux Docker 容器
docker安装和加速
docker安装和加速
651 0
|
算法 Java JavaScript
规则引擎
我是阿里巴巴做规则引擎相关工作多年的java工程师一枚,本职工作就是通过规则引擎、规则管理平台等技术输出,来应对阿里巴巴复杂多变的上层规则相关业务的支持。限于技术保密、安全等因素,本文只讲一些个人对“规则引擎”的看法,欢迎大家一起探讨。
26732 1
|
XML 关系型数据库 MySQL
Pandas 2.2 中文官方教程和指南(一)(1)
Pandas 2.2 中文官方教程和指南(一)
693 0
|
存储 缓存 Linux
内存学习(四):内存映射1
内存学习(四):内存映射1
464 0