Clean Code
书名《代码整洁之道》
命名
有意义的命名,使人能读懂
类名和对象名应该是名称或名称短语
方法名应该是动词或动词短语
函数
短小,函数块不要超过一个屏幕
类尽量不要超过1000行
if语句、else语句、while语句等,其中的代码块应该只有一行。该行应该是一个函数调用语句。
函数的缩进层级不该多于一层或二层
函数参数
最理想的函数参数是零,尽量避免三参数函数
尽量避免使用输出参数,使用返回值或者把方法写到对象内部。
标识参数丑陋不堪。向函数传入布尔值简直就是骇人听闻的做法。应该吧函数一分为二。
函数要么做什么事,要么回答什么事,但二者不可兼得。函数应该修改某对象的状态,或是返回该对象的有关信息。两者都干常会导致混乱。
使用异常替代返回错误码。
抽离 Try/Catch 代码块
Try/Catch 代码块丑陋不堪。它们搞乱了代码结构,把错误处理与正常流程混为一谈。最好把 Try 和 Catch 代码块的主体部分抽离出来,另外形成函数。
避免重复
结构化编程
每个函数、函数中的每个代码块都应该有一个入口、一个出口。遵循这些规则,意味着在每个函数中只应该有一个 return 语句,循环中不能有 break 或 continue语句。
格式
代码格式很重要,应该保持良好的代码格式。
变量声明
本地变量应该在函数的顶部声明。实体变量应该在类的顶部声明。
相关函数
若某个函数调用了另外一个,就应该吧他们放到一起,而且调用者应该在被调用者上面。
代码宽度
代码宽度保持在100-120个字符
错误处理
使用异常而非返回码
依调用者需要定义异常类
别返回 null 值
类
单一权责原则
Clean Code的更多相关文章
- Writing Clean Code 读后感
最近花了一些时间看了这本书,书名是 <Writing Clean Code ── Microsoft Techniques for Developing Bug-free C Programs& ...
- 说说怎么写clean code
前两天参加了公司组织的一个培训,主题是“如何写出好的代码” ,刚看到这个主题,第一反应是又不知道是哪个培训机构来忽悠钱的!老大安排了,就去听听呗. 说实在的,课程内容没有什么新鲜的东西,就是讲讲如何发 ...
- 小课堂week13 Clean Code Part2
Clean Code Part2 对象与数据结构 首先让我们进行一个严肃的思考,对象与数据结构的区别在哪里? 如下两段代码分别用数据结构和对象的方法来描述了一个Point. public class ...
- 小课堂Week12 Clean Code Part1
小课堂Week12 Clean Code Part1 今天的主题是函数,让我们看一个函数,找一找其中的"不整洁". 我们也根据这段代码,讨论下对于整洁代码的两个重要原则. publ ...
- “Clean Code” 读书笔记序
最近开始研读 Robert C.Martin 的 “Clean Code”,为了巩固学习,会把每一章的笔记整理到博客中.而这篇博文作为一个索引和总结,会陆续加入各章的笔记链接,以及全部读完后的心得体会 ...
- Clean Code–Chapter 7 Error Handling
Error handling is important, but if it obscures logic, it's wrong. Use Exceptions Rather Than Return ...
- Clean Code – Chapter 4: Comments
“Don’t comment bad code—rewrite it.”——Brian W.Kernighan and P.J.Plaugher The proper use of comments ...
- Clean Code – Chapter 3: Functions
Small Blocks and Indenting The blocks within if statements, else statements, while statements, and s ...
- Writing clean code is what you must do in order to call yourself a professional.
Clean Code A Handbook of Agile Software Craftsmanship
- 《Clean Code》 代码简洁之道
作者介绍 原文作者: Robert C. Martin, Object Mentor公司总裁,面向对象设计.模式.UML.敏捷方法学和极限编程领域的资深顾问,是<敏捷软件开发:原则.模式.与实践 ...
随机推荐
- Oracle - SPM固定执行计划(二)
一.前言 前面文章(https://www.cnblogs.com/ddzj01/p/11365541.html)给大家介绍了当一条sql有多个执行计划时,如何通过spm去绑定其中一条执行计划.本文将 ...
- 项目部署到Linux上遇到的坑
作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1.本地Navicat for MySQL无法连接至服务器(Centos 7 x86_64 bbr) 1045错误: 解决步骤: 1.查看用户名密 ...
- 关于scrapy中scrapy.Request中的属性
一.源码 def __init__(self, url, callback=None, method='GET', headers=None, body=None, cookies=None, met ...
- java版本的Kafka消息写入与读取
安装zookeeper: https://www.cnblogs.com/guoyansi19900907/p/9954864.html 并启动zookeeper 安装kafka https://w ...
- Android 多选列表对话框 setMultiChoiceItems
private Button button; private final CharSequence items[] = { "北京", "上海", " ...
- ABP入门教程15 - 小结
点这里进入ABP入门教程目录 效果预览 至此,ABP入门教程的CURD(增删改查)示例已完成,效果如下 登录 首页 查询课程 新增课程 修改课程 删除课程 阶段总结 关键步骤: 领域层创建实体基础设施 ...
- 1. Linux-3.14.12内存管理笔记【系统启动阶段的memblock算法(1)】
memblock算法是linux内核初始化阶段的一个内存分配器(它取代了原来的bootmem算法),实现较为简单.负责page allocator初始化之前的内存管理和分配请求. 分析memblock ...
- Octave计算数据
设A=[1 2;3 4;5 6] B=[11 12;13 14;15 16] A.*B = :对A以及B中的对应的元素进行相乘 11 24 39 56 75 96 A.^2 :对A中的每一个元 ...
- 2015 经典的ImageCaptioning论文
1.Show and Tell: A Neural Image Caption Generator Google团队的成果 整体处理流程: 1)通过CNN提取到图片的特征,简称feature. 2)而 ...
- MYSQL高可用集群架构-MHA架构
1 MHA简介:MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司 ...