代码整洁之道读书笔记----第五章---格式--如何让代码整体布局更清晰
为什么需要让代码整体布局更清晰
其一就是为了让你自己读起来更舒服。
其二就是为了让别人读取来更舒服。
布局分为两种:横向布局和纵向布局
说起布局,在我们的代码中最重要的布局工具就是两个
其一:空格
其二:回车
空格用于梳理代码横向布局
主要体现分离与聚焦以及分层
我们用空格字符将彼此紧密关联的事物连接在一起,也用空格字符把相关性较弱的事物分割开来。
对比如下两段代码
int lineSize=line.length();
int lineSize = line.length();
很显然第二种书写,赋值号一下子就凸显了出来,让人瞬间就看明白了。
再看如下两段代码
return b * b - 4 * a * c
return b*b - 4*a*c
这个时候就是某些时候不需要强行加空格分离的时候,第二种显然看起来更舒服。
分层是如何体现的就是通过缩进
当然缩进也是借助空格的。
想想看如果代码没有缩进简直就不能看
不缩进当{}多的时候就会发生范围层级坍塌。
这篇文章就是没缩进的文章,看起来舒服吗?
得亏是有强调,不然更没得看。233333
回车用于梳理代码的纵向布局
往下读代码的时候,你的目光总会停留于空白行之后那一行
对比如下两段代码
public String allInfoSingleService(String serviceName) {ServiceConfigBean serviceConfigBean = this.analyzeServiceYml(this.pullGitServiceYml(serviceName));Map<String,String> maps = Maps.newHashMap();maps.put(Const.FirstFloor.SERVICE_NAME,serviceName);ArrayList<PropertySources> propertySourcesArrayList = serviceConfigBean.getPropertySourcesArrayList();for(PropertySources propertySources : propertySourcesArrayList){Source source = propertySources.getSource();Map<String,String> subMaps = source.getOtherMaps();Set<String> sets = subMaps.keySet();for(String key : sets){maps.put(key,subMaps.get(key));}}return JSON.toJSONString(maps);}
public String allInfoSingleService(String serviceName) {Map<String,String> maps = Maps.newHashMap();maps.put(Const.FirstFloor.SERVICE_NAME,serviceName);ServiceConfigBean serviceConfigBean = this.analyzeServiceYml(this.pullGitServiceYml(serviceName));ArrayList<PropertySources> propertySourcesArrayList = serviceConfigBean.getPropertySourcesArrayList();for(PropertySources propertySources : propertySourcesArrayList){Source source = propertySources.getSource();Map<String,String> subMaps = source.getOtherMaps();Set<String> sets = subMaps.keySet();for(String key : sets){maps.put(key,subMaps.get(key));}}return JSON.toJSONString(maps);}
在第二种的代码中,很明显的分为了4大块
第一块:就是
Map<String,String> maps = Maps.newHashMap();
maps.put(Const.FirstFloor.SERVICE_NAME,serviceName);
第二块
ServiceConfigBean serviceConfigBean = this.analyzeServiceYml(this.pullGitServiceYml(serviceName));
ArrayList<PropertySources> propertySourcesArrayList = serviceConfigBean.getPropertySourcesArrayList();
第三块
for(PropertySources propertySources : propertySourcesArrayList){Source source = propertySources.getSource();Map<String,String> subMaps = source.getOtherMaps();Set<String> sets = subMaps.keySet();for(String key : sets){maps.put(key,subMaps.get(key));}}
第三块中又分了两块就不细说了
第四块
return JSON.toJSONString(maps);
这种用回车将一块糅杂在一块的代码就行了分类,让人看起来很舒服,也能很快理解,更易于阅读。
纵向布局并不止于此,还有就是
将整个项目的所有代码作为宏观上的纵向。
这个布局就主要涉及到了,方法间的纵向距离等并不局限与一行一行的距离
举个栗子:
方法间要是调用的话要尽可能的互相靠近。
实现类也是,不然的话看一个方法的实现,要在代码中蹦来蹦去,让人烦不胜烦。
尽可能调用者要在被调用者上面,且距离靠的近。
代码整洁之道读书笔记----第五章---格式--如何让代码整体布局更清晰相关推荐
- 代码整洁之道-读书笔记1
第一章 整洁代码 1.2糟糕的代码 糟糕的代码会毁掉一个公司,但是为什么会出现糟糕的代码? 可能是因为赶时间,如果花时间重构或者清理以前的代码,老板就会大发雷霆. 勒布朗法则:稍后等于用不. 1.3混 ...
- 代码整洁之道读书笔记(Ch4-Ch7)
这几章从注释.程序格式.对象与数据结构的规范以及错误处理四个方面介绍了如何使代码变得简洁易懂.不同于上次摘抄的方法,这一次我会结合第一次个人作业的代码进行分析. 第四章 注释 这一章告诉我们,好的注 ...
- 代码整洁之道读书笔记——第一章:整洁代码
软件质量,不仅仅依赖于项目架构和项目管理,同样重要的是代码质量!!! 序 神在细节之中,其实干什么事都一样,从小到大,一直明白一个道理:细节决定成败! 软件架构在开发中占据重要地位.其次,宏达建筑的最 ...
- 代码整洁之道-读书笔记之整洁的代码
1.整洁代码 阅读本书有两个原因,第一,你是个程序员,第二,你想成为更好的程序员 1.1 要有代码 有人认为随着时代的发展,写代码不再是问题,我们更应该关注建模和需求 这句话后半句没有问题,因为语言在 ...
- 代码整洁之道 读书笔记
第1章 整洁代码 1.1 要有代码 1.2 糟糕的代码 稍后等于永不 1.3 混乱的代价 假设前期不注意.后期的加入代码.改动效率都很低 1.3.1 华丽新设计 1.3.2 态度 1.3.3 ...
- 代码整洁之道----读书笔记
一.有意义的命名规则 二.优雅的函数 三.良好的注释 四.整齐的格式 转载于:https://www.cnblogs.com/k5bg/p/11063235.html
- 《Python从入门到实践》读书笔记——第五章 if语句
<Python从入门到实践>读书笔记--第五章 if语句 1. 一个简单示例 cars = ['audi', 'bwm', 'subaru', 'toyota']for car in ca ...
- 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学
<深度探索C++对象模型>读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constr ...
- 【苦练基本功】代码整洁之道 pt1(第1章-第3章)
代码整洁之道 pt1(第1章-第3章) 1 整洁代码 1.1 要有代码 1.2 糟糕的代码 1.3 混乱的代价 1.3.1 什么是整洁代码? 2 有意义的命名 2.1 名副其实 2.2 避免误导 2. ...
- 【苦练基本功】代码整洁之道 pt4(第10章-第12章)
代码整洁之道 pt4(第10章-第12章) 10 类 10.1 类的组织 10.2 类应该短小 10.2.1 单一权责原则 10.2.2 内聚 10.2.3 保持内聚性就会得到许多短小的类 10.3 ...
最新文章
- vuex刷新页面数据丢失怎么解决_你是否真正了解Vuex
- 4修改初始值_Java基础语法 --4(连载)
- 【NOIP】提高组2013 积木大赛
- 47 FI配置-财务会计-固定资产-一般评估-定义资产分类中的折旧范围
- 第二阶段冲刺—第一天
- Struts2学习(二):第一个Action
- Java中的字符串串联
- tp3.2 find带参数查询及getField(两个参数)
- webgl天空盒边界缝隙_WebGL three.js进修笔记 法向量网格材质MeshNormalMaterial的引见和建立360度全景天空盒的要领...
- DataGrip 格式化SQL 自定义SQL格式化
- 学生管理系统(软件工程)
- 数据中心行业深度报告:从财务分析看IDC行业的投资价值
- puppet一键部署lnmt
- JavaScript 英文根据规则转成相对应的中文
- asp.net MVC使用treegrid——jqwidgets插件
- docker MySQL8
- 电脑上打印准考证照片不清楚咋办
- JetBrains全家桶安装、学生认证以及IDE中文设置
- Python FAQ from newsmth.net
- java中MVC原理详解,Spring MVC 原理总结