从开始编码到现在,从没有意识去如何去写出更加规范,更加易读的代码,只是按照需求将某一功能进行实现。
下面是最近在网上搜索查看的一些通用的知识点,做一记录。

单一抽象层次

单一抽象层次是指一个函数或者方法中的所有操作处于相同层次。

其实说白了就是把复杂的东西,业务多的模块进行细小的在拆分。让其函数只做一件事。

下面这张图就可以说明这个单一层次。对复杂的模块再次进行拆分,整理。让思路更加清晰,不要把所有的业务逻辑写在堆积在一个方法中。

最小化缩进

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

解释:

1、针对头重脚轻的if/else,尽量早使用return返回,减少语句的嵌套。

2、合并分支,有些分支执行的内容是相同的,可以合并为一个。

3、扁平化,让负责的功能模块变得简单,易懂。

清晰表达式

优秀的代码不是越少越好的,而是理解它花的时间越少越好。记住,你写的代码不只是只运行一次,不只是你一个人看的。要写出大家都能看的懂的代码。

可读性基本定理----代码应当使别人理解它所需的时间最小化

善用辅助类拆分

类的职责分配,对于类来说,它的作用毋庸置疑,它是一个抽象的具体存在,有时候它很简单,有时候又特别巨大,当它被你写的特别巨大的时候,你就要看看你自己那块是不是写的有问题。

这个时候就需要辅助类来帮助主类来分担一些细微,功能性不是很强的模块。

哪些模块应该交给辅助类来负责了?

1、不产生数据的函数;

2、不修改数据的函数;

3、有输入就有明确输出的函数;

4、不和外部对象交互的函数;

寄语:

  • 写出来的函数是要给人看的;
  • 理解函数所花的时间应该越短越好;
  • 优秀的代码都是后期修改出来的。

如何让code变得更易读的更多相关文章

  1. Selenium 2自动化测试实战36(更易读的测试报告)

    一.更易读的测试报告 1.知识点:python的注释. 1.一种叫comment,为普通的注释2.另一种叫doc string,用于函数,类和方法的描述.在类或方法的下方,通过三引号("&q ...

  2. 让Python更优雅更易读(第二集)

    友情链接 让Python更优雅更易读(第一集) 1.装饰器 1.1装饰器特别适合用来实现以下功能 运行时校验:在执行阶段进行特定校验,当校验通不过时终止执行. 适合原因:装饰器可以方便地在函数执行前介 ...

  3. 让Python更优雅更易读(第一集)

    变量和注释 1.变量 在编写变量尽量要让其清晰只给,让人清除搞清楚代码的意图 下方两段代码作用完全一样,但第二段代码是不是更容易让人理解 value = s.strip() username = in ...

  4. 让 Python 代码更易维护的七种武器——代码风格(pylint、Flake8、Isort、Autopep8、Yapf、Black)测试覆盖率(Coverage)CI(JK)

    让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett   译文出处:linux中国-Hank Chow    检查你的代码的质 ...

  5. LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。

    Basic Compaction 为了保持LSM的读操作相对较快,维护并减少sstable文件的个数是很重要的,所以让我们更深入的看一下合并操作.这个过程有一点儿像一般垃圾回收算法. 当一定数量的ss ...

  6. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  7. 【转】Raft 为什么是更易理解的分布式一致性算法

    编者按:这是看过的Raft算法博客中比较通俗的一篇了,讲解问题的角度比较新奇,图文并茂,值得一看.原文链接:Raft 为什么是更易理解的分布式一致性算法 一致性问题可以算是分布式领域的一个圣殿级问题了 ...

  8. C++ folly库解读(三)Synchronized —— 比std::lock_guard/std::unique_lock更易用、功能更强大的同步机制

    目录 传统同步方案的缺点 folly/Synchronized.h 简单使用 Synchronized的模板参数 withLock()/withRLock()/withWLock() -- 更易用的加 ...

  9. 深入挖掘.NET序列化机制——实现更易用的序列化方案

    .NET框架为程序员提供了“序列化和反序列化”这一有力的工具,使用它,我们能很容易的将内存中的对象图转化为字节流,并在需要的时候再将其恢复.这一技术的典型应用场景包括[1] : 应用程序运行状态的持久 ...

随机推荐

  1. 30个你 “ 不可能全部会做 ” 的javascript题目-答案解释

    题目链接:http://www.cnblogs.com/0603ljx/p/4458127.html 1,D map对数组的每个元素调用定义的回调函数并返回包含结果的数组.["1" ...

  2. java 实验4 异常

    异常(实际使用直接try-catch) 1.常见系统异常 异常 异常的解释 ClassNotFoundException 未找到要装载的类 ArrayIndexOutOfBoundsException ...

  3. Python读取mdb文件以及shell检测

    最近写了两个python的脚本不过实际意义不是很大,就是想练练python写程序,一直研究web方面脚本写的少多了,还有C语言也用的少多了.现在有时间得多写写程序,别把以前学到的知识给忘了. 作者: ...

  4. 如何在CentOS 7安装Node.js

    最近,我一直对学习Node.js比较感兴趣.这是一个Java平台的服务器端编程 ,它允许开发人员在服务器编写Java代码,并且有许多CentOS的用户正努力学习这个语言的开发环境.这正是我想做这个教程 ...

  5. 使用deque模块固定队列长度,用headq模块来查找最大或最小的N个元素以及实现一个优先级排序的队列

    一. deque(双端队列) 1. 使用 deque(maxlen=N)会新建一个固定大小的队列.当新的元素加入并且这个队列已满的时候,最老的元素会自动被移除掉 >>> from c ...

  6. centos和ubuntu的网络属性配置

        一. centos的网络配置    1.  修改 /etc/sysconfig/network-scripts/ifcfg-IFACE:             DEVICE:此配置文件应用到 ...

  7. 移动端<meta>属性配置讲解(整理)

    meta标签,是head区的辅助标签 HTML代码如下: <meta charset="utf-8"><meta http-equiv="X-UA-Co ...

  8. P2046 [NOI2010]海拔

    题目链接 题意分析 首先一看就知道这是一道最小割 这里奉上最小割的代码 #include<iostream> #include<cstdio> #include<cstr ...

  9. 丢用lamp手动安装apache php mysql

    Centos7环境下. 使用lamp环境无法正常显示出thinkphp站点的内容,一气之下,选择手动安装 第一步: 安装apache  php 和php连接数据库的工具php-mysql [root@ ...

  10. PXE+Kickstart 批量安装CentOS 7

    安装之前 将需要安装 CentOS 的服务器与 PXE 服务器通过网络设备连接:PXE 服务器安装 CentOS,并且关闭firewalld.selinux,设置静态IP地址,本例设为10.0.0.1 ...