代码的简洁的方法

代码简洁之道

规范代码书写,提高代码可读性和便于维护修改,节约维护成本。
读了《代码简洁之道》一书总结笔记。

1.有意义的命名

在给文件或代码命名时做到名副其实,取一个不需要注释的名字。

java命名规则:项目名全部用英文小写。

​ 包名一般用域名反写表示。

​ 类名所以单词首字母大写表示,类名不应该是动词。

​ 变量名,方法名用驼峰命名法即第一个单词全小写,后面单词首字母大写。方法名应该是单词或者动词短语。

​ 常量用全大小字母和单词之间下划线隔开表示。

避免使用容易误导的词,以及几个高度相似的词。

使用可以读出来的名称。

使用便于搜索的名称。

2.函数

函数要求短小。

函数应该只做一件事。

每个函数一个抽象层级。

自顶向下读代码:向下规则。

switch语句如果只出现一次而且隐藏在某个继承关系中,系统其他部分看不见。

使用具有描述性的名称。

函数参数尽量做到最少。

无副作用。

分隔指令与询问。

使用异常替代返回错误码。

结构化编程。

3.注释

注释不能美化糟糕的代码。

好的注释:法律信息,提供信息的注释,对意图的解释,阐释,警告,TODO注释,放大一些看起来不合理之物的重要性,共用API中的Javadoc。

4.格式

垂直格式

团队规则

5.对象和数据结构

数据抽象。

数据,对象的反对称性。

得墨忒耳律:模块不应该了解它所操作对象的内部情形。

准确的说,类C的方法f只应该调用以下对象的方法:

  • C;
  • 由f创建的对象;
  • 作为参数传递给f的对象;
  • 由C的实体变量持有的对象;

数据传送对象(DTO):最为精炼的数据结构,是只有一个公共变量,没有函数的类。

6.错误处理

使用异常而非返回码。

先写try-catch-finally语句。

使用未检异常。

给出异常发生的环境说明。

依调用者需要定义异常类。

定义常规流程。

别返回和传递null值。

7.边界

当我们购买使用第三方程序包或使用开放源代码,或者其他团队打造的组件或子系统,将代码整合到自己代码中时需要保持软件边界整洁。

浏览和学习边界。

学习log4j。

学习性测试。

使用尚不存在的代码。

8.单元测试

TDD三定律

  • 第一定律:在编写不能通过单元测试前,不可编写生产代码。
  • 第二定律:只可编写刚好无法通过的单元测试,不能编译也算不通过。
  • 第三定律:只可编写刚好足以通过当前失败测试的生产代码。

每个测试一个断言。

5条规则:F(快速).I(独立).R(可重复).S(自足验证).T(及时)

9.类

类的组织:封装

类应该短小。

单一权责原则(SRP):认为类和模块应该有且只有一条加以修改的理由。

保持内聚性就会得到许多短小的类。

为了修改而组织。

10.系统

将系统的构造与使用分开。

分解main

工厂

依赖注入

扩容。

Java代理

纯Java AOP框架

AspectJ语言

测试驱动系统架构。

优化决策。

明智使用添加了可论证价值的标准。

系统需要领域特定语言。

11.迭进

简单设计:

  • 运行所有测试。
  • 不可重复,重构。
  • 表达程序员的意图。
  • 尽可能减少类和方法的数量。

12.并发编程

并发是一种解耦策略。

解耦目的与时机可以明显改进应用程序的吞吐量和结构。

并发防御原则:

  • 单一权责原则。
  • 推论:限制数据作用域。
  • 推论:使用数据副本
  • 推论:线程应该尽可能独立

了解Java库。

了解执行模型:生产者,读者,宴席哲学家。

警惕同步方法之间的依赖。

保持同步区域微小。

测试线程代码:将伪失败看作可能的线程问题,先使非线程可工作,编写可插拔的线程代码,编写可调整的线程代码,运行多于处理器数量的线程,在不同平台上运行,装置试错代码,硬编码,自动化。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值