一.重构

1.1.什么是重构

重构,是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,使其更易理解,修改成本更低。也可以理解为在保证功能不变的前提下,利用设计思想、原则、模式、编码规范等理论来优化代码,修改设计上的不足,提高代码质量。

1.2.为什么重构

保持代码质量处于一个可控状态,不至于腐化到无可救药的地步。也可以锻炼一个人的代码能力,并且是一件非常有成就感的事情。

1.3.到底重构什么

重构大致可以分为大规模高层次的重构和小规模低层次的重构。大规模高层次的重构包括对代码分层、模块化、解耦、梳理类之间的交互关系、抽象复用组件等。小规模低层次的重构包括规范命名、注释、修正函数参数过多、消除超大类、提取重复代码等等编程细节问题。

1.4.什么时候重构

重构,是一个持续的过程,是开发必不可少的部分,应该融入到日常开发中。

1.5.如何重构

大规模高层次的重构难度比较大,需要组织、有计划地进行,分阶段小步快跑,时刻让代码处于一个可运行状态。小规模低层次重构,应该随时随地的去做。

二、单元测试

2.1.什么是单元测试

单元测试是由开发者编写的一个类或者函数,用于测试自己编写的代码逻辑是否正确。

2.2.为什么要写单元测试

单元测试能够有效的发现代码中的bug和代码设计上的问题。是测试驱动开发可落地执行的改进方案。

2.3.如何编写单元测试

单元测试应该覆盖各种输入、异常、边界情况,并将其翻译成代码。

2.4.单元测试为何难落地执行

单元测试本身就比较繁琐,技术挑战不大,且很多代码是和业务代码重叠,所以导致很多开发人员不愿意去写。另一方面是项目任务紧、导致单元测试半途而废。

三、重构解耦代码

3.1.解耦为何如此重要

解耦能够保证代码松耦合、高内聚,是控制代码质量的有效手段。使复杂的代码具有较好的可读性、可维护性。

3.2.代码是否需要解耦

将模块与模块、类与类之间的依赖关系画出来,根据依赖关系图的复杂性来判断是否需要解耦重构。

3.3.如何给代码解耦

给代码解耦的方法有:封装与抽象、中间层、模块化、以及一些其他的设计思想与原则。

四、改善代码的20调编程规范

4.1.命名长度问题

命名的关键是能准确达意。可以适当的选择短一些的命名方式。命名中也可以使用一些耳熟能详的缩写。

4.2.利用上下文简化命名

可以借助类的信息来简化属性、函数的命名。

4.3.命名要可读、可搜索

不要使用生僻的、不好读的英文单词来命名,明敏概要符合项目的统一规范,不要用写反直觉的命名。

4.4.如何命名接口和抽象类

接口:前缀带“I”或者后面代“Impl”;抽象类:前缀带“Abstract”或不带前缀。

4.5.注释应该怎么写

注释的目的就是让代码更容易看懂。注释要包含以下三个方面:做什么、为什么、做么做。或者包含“如何用”等信息。

4.6.注释是不是越多越好

注释并非越多越好,注释些的尽可能全面、详细即可。函数内部可以相对减少一些注释,来提高代码的整洁性。

4.7.类和函数多大才合适

函数的代码行数不要超过一屏幕。类的话,根据业务需求划分即可。

4.8.一行代码多长才合适

尽量不要超过IDE显示的宽度。但要保证代码的整洁。

4.9.善于用空行分隔符

对于比较长的函数,为了让逻辑更加清晰,可以在两个业务模块之间增加空行来进行分割。比如变量的定义和变量的赋值之间可以用空行进行分割。

4.10.缩进是两格还是四格

缩进是为了保证代码的整洁,两格缩进可以节省空间。

4.11.大括号是否需要另起一行

大括号放在定义的后面,这种方式可以节省代码行数,使代码看起来更整洁。大括号另起一行的话,前后括号可以垂直对齐,代码块分割一目了然。

4.12.类中成员的排列顺序

保证代码在团队、项目中的统一。

4.13.代码应该分割成更小的单元块

更小的单元块,是为了在代码阅读过程中,能够从整体往细节一步一步查看。让阅读代码的人能够屏蔽掉细节,从整体了解业务,

4.14.函数参数不要过多

如果参数数量过多,可以将参数封装成对象。

4.15.不要用函数参数来控制逻辑

尽量避免使用boolean来作为参数进行逻辑判断,尽量避免根据参数是否为null来控制逻辑。这种情况下建议拆成两个函数分别进行处理。

4.16.函数设计要职责单一

函数也要满足单一职责原则。

4.17.移除过深的嵌套

减少if-else、switch-case嵌套。可以通过去掉多余的if-else、使用continue、break、return等关键字、调整执行顺序、将嵌套逻辑封装成函数调用等。

4.18.学会使用解释性变量

减少魔法数字的使用,尽量使用常量定义。

4.19.使用常量来解释复杂的表达式

增加代码可读性。

4.20.统一编码规范

遵循统一的编码规范,通过Code Review来督促执行,提高代码质量。

重构的含义、方法及规范相关推荐

  1. 数据库设计方法、规范与技巧(推荐)

    数据库设计方法.规范与技巧(推荐) 一.数据库设计过程 数据库技术是信息资源管理最有效的手段.数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户 ...

  2. 【Android NDK 开发】Visual Studio 2019 使用 CMake 开发 JNI 动态库 ( 动态库编译配置 | JNI 头文件导入 | JNI 方法命名规范 )

    文章目录 I . JNI 与 NDK 区别 II . Visual Studio 编译动态库 III. 配置 导入 jni.h 头文件 IV . IntelliJ IDEA Community Edi ...

  3. 实战小课 | 深入剖析 「事件设计方法与规范」,夯实数据分析基础!

    神策数据立足于"重构中国互联网数据根基",凭借已有的 1000 + 家付费企业的服务和成功实践经验,开辟线下活动"神策数据实战学堂",以数据驱动为主题聚焦不同热 ...

  4. 嵌入式程序编写方法与规范

    嵌入式程序编写方法与规范 前言 本文主要讲解嵌入式单片机程序的编写方法以及编写规范,以MSP430单片机作为例子,无论是51,AVR还是STM32单片机都同样适用,本文对C语言各种语法各种关键字进行详 ...

  5. 小酌重构系列[3]——方法、字段的提升和降低

    本文要介绍的是4种重构策略,它们分别是提升方法.降低方法.提升字段和降低字段. 由于这4种重构策略具有一定的相通性,所以我将它们放到一篇来讲解. 定义 以下是这4种策略的定义 提升方法:当子类的方法描 ...

  6. Spring Data JPA 4.方法定义规范

    方法定义规范 简单条件查询 简单条件查询: 查询某一个实体类或者集合 按照 Spring Data 的规范,查询方法以 find | read | get 开头, 涉及条件查询时,条件的属性用条件关键 ...

  7. 数据库设计方法、规范与技巧

    本文链接: http://www.openphp.cn/index.php/art.../100/index.html 一.数据库设计过程 数据库技术是信息资源管理最有效的手段.数据库设计是指对于一个 ...

  8. 重构手册阅读笔记:重构的含义

    重构是安全地改善既有代码设计的一门艺术.有以下几种含义: 重构并不包括对系统的所有修改.如果修改是对设计的改善, 或是增加新的功能, 则均不能被认为是重构. 例如, 极限编程(XP)使用了测试驱动开发 ...

  9. 数据库设计方法与规范 数据库设计过程

    数据库技术是信息资源管理最有效的手段.数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求. 数据库设计中需求分析阶段综合各个用 ...

最新文章

  1. 10大类、142条数据源,中文NLP数据集线上搜索开放
  2. 2005年2月9日(星期三) 晚上,熱 - 大年初一,首次創作。
  3. 动态绘制圆环和扇形的源代码
  4. 非归档模式下重做日志覆盖后的rman恢复
  5. Boost:双图bimap与Boost类型的测试程序
  6. 【solr基础教程之二】索引
  7. linux退出编辑器命令,LINUX中,Vi编辑器的几种模式及保存、退出等命令
  8. 【渝粤题库】国家开放大学2021春2302供应链管理题目
  9. python 中的 del 使用方法
  10. Docker(一):基础入门篇
  11. html中加粗的字体如何改细,css怎么把字体变细?
  12. 【U-net】【粗读】Retinal blood vessel segmentation using fully convolutional network with transfer...
  13. Asp.net Mvc+MongoDB+Autofac等打造轻量级blog系统(二)
  14. sql和mysql 语法区别吗_sql和mysql语法有什么不同
  15. 人工势场法--路径规划--原理--matlab代码
  16. 这12款idea插件,能让你代码飞起来!
  17. 黑桃怎么用html代码,index.html
  18. 袁永福软件行业从业经历
  19. Genymotion目前速度最快的Android模拟器+ova包
  20. css设置背景半透明,文字不透明效果

热门文章

  1. GIS添加XY坐标操作
  2. echarts中饼图的异步数据加载绘制
  3. easyui datagrid数据加载缓慢问题,优化方法
  4. Chrome 十周年亮出大招:彻底干掉URL!
  5. 手机SD卡损坏的修复方法
  6. 第二章 进程管理-操作系统原理和实践
  7. 什么是CHINANET
  8. 这是Bilibili排名第一的R语言教程
  9. QQ已经被恶意外挂破坏
  10. 如何离开/退出/停用 Python virtualenv