当前位置: 首页 > news >正文

关于面向对象中的代码审查(Code Review)

在进行面向对象编程语言的代码审查的工作中,对于一般项目而言,通常考虑以下几点是否满足:


能否快速被理解(可读性)
最重要的一点,主要考虑以下几个部分。
命名以及代码格式是否整洁
逻辑是否清晰
注释:(仅当代码动机(why,NOT what ,NOT how)不确定的话需要写)




单一职责

代码职责是否清晰并单一
类或方法是否太大需要拆分

代码重复
重复代码需要被提出来


可测试性
代码依赖是否可注入,每个功能是否容易做单元测试
所有实现是否都是可替换

异常处理
异常有没有被handle并log


性能
代码会不会有性能问题(多线程环境或高并发情况)


安全
是否存在安全漏洞(网络,数据库)






对代码质量要求更高的项目,可能还需考虑以下几点


SOLID

单一职责(Single Responsibility)

开闭原则(Open close)


里氏代换(Liskov substitution)
对象的可替代性

接口分离(Interface Segregation)
对抽象进行细分。大接口拆分成多个功能更小的接口。

依赖反转(Dependency Inverion)
依赖抽象而非实现。


GRASP原则


Creator(对象的创建)
对象统一创建(工厂)

高内聚(高扇入)
提高类(库)的被使用次数。

低耦合(低扇出)
对外部依赖较少(少于3个接口)

Information Expert (信息专家)
单一信息来源。每种信息的来源是一致的
是否把相关的信息都放在了一个位置


可扩展性
系统的每层是否有足够的抽象来支持横向扩展
抽象的层次是否足够来满足纵向扩展


可配置性
哪些项是希望放入配置的
是否已经有方案来管理这些配置

相关文章:

  • 数据挖掘常用的心脏病数据(From UCI)
  • LeetCode -- Count of Smaller Numbers After Self
  • LeetCode -- Valid Perfect Square
  • LeetCode -- Russian Doll Envelopes
  • 查看sql server数据库的空间大小...
  • LeetCode -- Longest Palindrome
  • 有朋远方来-致力于java培训的张孝祥
  • LeetCode -- Range Sum Query 2D - Immutable
  • 从Oracle到DB2,问题集(一)
  • LeetCode -- Dungeon Game
  • 从Oracle到DB2,问题集(二)
  • LeetCode -- Contains Duplicate II
  • Sql union的反义词Minus
  • LeetCode -- Path Sum III
  • LeetCode -- Minimum Number of Arrows to Burst Balloons
  • 【Leetcode】101. 对称二叉树
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [deviceone开发]-do_Webview的基本示例
  • [译] 怎样写一个基础的编译器
  • Druid 在有赞的实践
  • flask接收请求并推入栈
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • NSTimer学习笔记
  • Python socket服务器端、客户端传送信息
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 程序员最讨厌的9句话,你可有补充?
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 构建二叉树进行数值数组的去重及优化
  • 机器学习中为什么要做归一化normalization
  • 普通函数和构造函数的区别
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 整理一些计算机基础知识!
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #include
  • #宝哥教你#查看jquery绑定的事件函数
  • (¥1011)-(一千零一拾一元整)输出
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (JS基础)String 类型
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)UDP基本编程步骤
  • (状压dp)uva 10817 Headmaster's Headache
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .bat文件调用java类的main方法
  • .gitignore文件---让git自动忽略指定文件
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .net开发时的诡异问题,button的onclick事件无效
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [20170713] 无法访问SQL Server