如何让code变得更易读
从开始编码到现在,从没有意识去如何去写出更加规范,更加易读的代码,只是按照需求将某一功能进行实现。
下面是最近在网上搜索查看的一些通用的知识点,做一记录。
单一抽象层次
单一抽象层次是指一个函数或者方法中的所有操作处于相同层次。
其实说白了就是把复杂的东西,业务多的模块进行细小的在拆分。让其函数只做一件事。
下面这张图就可以说明这个单一层次。对复杂的模块再次进行拆分,整理。让思路更加清晰,不要把所有的业务逻辑写在堆积在一个方法中。

最小化缩进
其实这个是说在写业务逻辑代码中,在复杂的条件判断中,我们应该先对其进行否定判断,先排除其最有可能跳出的操作,接着在进行调用正常的功能模块。在if/else的判断中尤其重要,不要一味的把自己置身于复杂的功能模块中,这对于我们定位错误,解决bug有很大的帮助,这样我们就可以把焦点放在正确的代码上,不必要在一层一层的进行进行代码分析。

解释:
1、针对头重脚轻的if/else,尽量早使用return返回,减少语句的嵌套。
2、合并分支,有些分支执行的内容是相同的,可以合并为一个。
3、扁平化,让负责的功能模块变得简单,易懂。
清晰表达式
优秀的代码不是越少越好的,而是理解它花的时间越少越好。记住,你写的代码不只是只运行一次,不只是你一个人看的。要写出大家都能看的懂的代码。
可读性基本定理----代码应当使别人理解它所需的时间最小化

善用辅助类拆分
类的职责分配,对于类来说,它的作用毋庸置疑,它是一个抽象的具体存在,有时候它很简单,有时候又特别巨大,当它被你写的特别巨大的时候,你就要看看你自己那块是不是写的有问题。
这个时候就需要辅助类来帮助主类来分担一些细微,功能性不是很强的模块。
哪些模块应该交给辅助类来负责了?
1、不产生数据的函数;
2、不修改数据的函数;
3、有输入就有明确输出的函数;
4、不和外部对象交互的函数;
寄语:
- 写出来的函数是要给人看的;
- 理解函数所花的时间应该越短越好;
- 优秀的代码都是后期修改出来的。
如何让code变得更易读的更多相关文章
- Selenium 2自动化测试实战36(更易读的测试报告)
一.更易读的测试报告 1.知识点:python的注释. 1.一种叫comment,为普通的注释2.另一种叫doc string,用于函数,类和方法的描述.在类或方法的下方,通过三引号("&q ...
- 让Python更优雅更易读(第二集)
友情链接 让Python更优雅更易读(第一集) 1.装饰器 1.1装饰器特别适合用来实现以下功能 运行时校验:在执行阶段进行特定校验,当校验通不过时终止执行. 适合原因:装饰器可以方便地在函数执行前介 ...
- 让Python更优雅更易读(第一集)
变量和注释 1.变量 在编写变量尽量要让其清晰只给,让人清除搞清楚代码的意图 下方两段代码作用完全一样,但第二段代码是不是更容易让人理解 value = s.strip() username = in ...
- 让 Python 代码更易维护的七种武器——代码风格(pylint、Flake8、Isort、Autopep8、Yapf、Black)测试覆盖率(Coverage)CI(JK)
让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett 译文出处:linux中国-Hank Chow 检查你的代码的质 ...
- LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。
Basic Compaction 为了保持LSM的读操作相对较快,维护并减少sstable文件的个数是很重要的,所以让我们更深入的看一下合并操作.这个过程有一点儿像一般垃圾回收算法. 当一定数量的ss ...
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- 【转】Raft 为什么是更易理解的分布式一致性算法
编者按:这是看过的Raft算法博客中比较通俗的一篇了,讲解问题的角度比较新奇,图文并茂,值得一看.原文链接:Raft 为什么是更易理解的分布式一致性算法 一致性问题可以算是分布式领域的一个圣殿级问题了 ...
- C++ folly库解读(三)Synchronized —— 比std::lock_guard/std::unique_lock更易用、功能更强大的同步机制
目录 传统同步方案的缺点 folly/Synchronized.h 简单使用 Synchronized的模板参数 withLock()/withRLock()/withWLock() -- 更易用的加 ...
- 深入挖掘.NET序列化机制——实现更易用的序列化方案
.NET框架为程序员提供了“序列化和反序列化”这一有力的工具,使用它,我们能很容易的将内存中的对象图转化为字节流,并在需要的时候再将其恢复.这一技术的典型应用场景包括[1] : 应用程序运行状态的持久 ...
随机推荐
- mysql--对行(表中数据)的增删改查
一.插入数据(增加)insert 1.插入数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); #指定字段来插入数据,插 ...
- Android 的一些中文文档
https://blog.csdn.net/qq_36467463/article/details/77990089 //安卓mediaformat api详解 https://www.cnbl ...
- BZOJ4283: 魔法少女伊莉雅(最短路径图+最短路径树)
题面 传送门 题解 太长了不想写了→_→ 题解 //minamoto #include<bits/stdc++.h> #define R register #define inf 0x3f ...
- 自定义JSON返回字段
今天看到一篇文章,里面介绍了如何自定义返回json字段,感觉挺好用的,这里学习一下. 实现工具类: /** * @author fengzp * @date 17/2/20上午10:34 * @ema ...
- 用css做出来一个三角形
用css做出来一个三角形 <!--不设置宽高 转换行内块 边线设置成宽度--> <div class="triangle"> 三角 ...
- zookeeper 高可用集群搭建
前言 记录Zookeeper集群搭建的过程! 什么是 Zookeeper ? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hado ...
- Asp.net的生命周期应用之IHttpHandler
摘自:http://www.cnblogs.com/JimmyZhang/archive/2007/09/15/894124.html Framework提供了一系列的接口和类,允许你对于Http请求 ...
- 【JavaScript】动态原型模式创建对象 ||为何不能用字面量创建原型对象?
var proto = ""; function Person(name, age, job) { this.name = name; this.age = age; this.j ...
- Kotlin Eclipse 环境搭建
Kotlin是JetBrains开发的基于JVM的语言.JetBrains是一家捷克的软件开发公司,该公司位于捷克的布拉格,研发了IntelliJ IDEA这款相对于Eclipse有较大改善的大名鼎鼎 ...
- [原创]php任务调度器 hellogerard/jobby
目录 简介 安装 标准使用 选项 项目实践 简介 一个强大的php层面上的定时任务调度器, 无需修改系统层面的crontab 实际中, php 结合 crontab 来实现定时任务是一种经得住考验的实 ...