关闭

第3,6,7,10章读书笔记

123人阅读 评论(0) 收藏 举报
分类:

第三章函数

3.1 短小

函数的最重要的原则说三遍:短小、短小、短小。

if,else,while等语句,代码块应该尽量只有一行,且此行是一个函数调用语句。函数名应该具有说明性,增加文档的价值。

例:JDK源码:

private static inthugeCapacity(int minCapacity) {
        if (minCapacity < 0) //overflow
            throw newOutOfMemoryError();//此处可以猜测是抛出内存益出相关错误。
        return (minCapacity > MAX_ARRAY_SIZE)? Integer.MAX_VALUE :MAX_ARRAY_SIZE;
}


3.2 只做一件事

函数应该只做一件事。判别方法:是否可以再拆分出一个函数。

3.3 每个函数一个抽象级别。

函数的语句都要在同一抽象层次级别上。例如经典的MVC模型,就是一种抽象级别分离的方法。

自定乡下读代码:向下规则

读程序方法:程序就像一系列TO起头的段落,每一段都描述当前的抽象级别,并引用下一层的抽象级别的段落。

3.4switch语句

抽象工厂设计模式。

3.5 使用描述性的名称

别害怕长名称。具有描述性的名称比段而小令人费解的名称好。

例 c = a*b 应改为result = multiplicand *multiplier,增加可读性。

命名方式要保持一致。

3.6 函数参数

函数参数越少越好,最理想是没有参数,尽量避免三个参数。参数少有利于测试。

ArrayList源码中的方法基本都是不多于一个参数


   如果参数需要二个或者三个以上,可以将其中一些参数封装成类。

比较:

Circle  make Circle(double x,double y, doubleradius);
Circle  makeCircle(Point center, double radius);


3.8分隔指令与询问

函数要么做什么事,要么回答什么事。

3.9.1 抽离try /catch代码块

将try/catch代码块的主体部分抽离出来,另外形成函数。


3.10 别重复自己

3.11结构化编程

Dijkstra规则:每个函数,函数中的代码块应有一个入口,一个出口。且只有一个return语句,循环中不能有break,continue语句,永远不用goto语句。

小结

函数是语言的动词,类是名词。

第六章函数

6.2数据对象的反对称性

过程式代码便于在不改动既有数据结构的前提下添加新函数。

面向对象代码便于在不改动既有函数的前提下添加新类。

6.3得濹忒耳律

模块不应了解他所操作对象的内部情形。

第七章错误处理

错误处理不应搞乱代码逻辑。

7.1使用异常而非返回码

预见异常时,不应出现 print(“xxy异常”)活者return null这种形式

应采用抛出异常的方式

Ex:

private void rangeCheck(int index) {
       if (index >= size)
           throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}

7.7 别返回null值

7.8 别传递null值

 

第十章 类

10.1 类的组织

Java约定,类应从一组变量列表开始。如果有公共静态常量,应该先出现。然后是静态私有变量,以及私有实体变量.很少会有公共变量。

10,2 类应该短小

类的名称应当描述其权责。

单一权责原则:类或者模块应有且只有一条加以修改的理由。

类应该只有少量实体变量。

每个变量被每个方法所使用,称该类具有最大的内聚性。

10.3 为了修改而组织

对于多数系统,修改一直持续。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

阿朴橡皮章教程——进阶版[套色]【转侵删】

个人比较喜欢做手工类的东西  所以转两篇橡皮章教程上来  原作者阿朴  用手机在《约绘》上扫描下来的 并非用作商业用途  如有侵权请告知  会马上删掉
  • goblinlq
  • goblinlq
  • 2015-03-23 23:54
  • 982

章文嵩:怎样做开源才有意义?

大家好,我是InfoQ的主持人,现在在架构师峰会现场。今天我们很高兴邀请到阿里云的技术负责人章文嵩博士来接受我们的采访。第一个问题是有关淘宝-阿里系的开源进程,我们从外面看起来似乎是有三个比较明显的阶段:第一个是说我引入开源的方案来替换掉商业的方案;第二个是我们把开源的方案改进,然后形成一些淘宝自己...
  • robertsong2004
  • robertsong2004
  • 2014-08-20 14:47
  • 1211

《统计学》读书笔记,第11-14章

第11章 时间序列预测 11.1 时间序列的成分和预测方法        一个时间序列由四种要素组成:        趋势(T):时间序列在一段较长时期内呈现出来的持续向上或...
  • dy01dy
  • dy01dy
  • 2014-04-03 14:05
  • 896

《统计学》读书笔记第8-10章

第8章 方差分析与实验设计 8.1 方差分析的基本原理        方差分析(ANOVA):通过对数据误差的分析来判断各分类自变量对数值因变量影响的一种统计方法。自变量对因变量的影响也称为自变量效应,而影响效应的大小则体现为因变量的误...
  • dy01dy
  • dy01dy
  • 2014-04-02 18:09
  • 968

nginx变量学习初步-读章亦春的博客做个笔记

nginx学习笔记以下学习参考agentzh(章亦春)的nginx教程以及google老师set–location /hi{ set $a "hi"; return 200 "hello"; } 这里的set $a会创建一个变量,并赋值为hi...
  • wbuhuibiandaima
  • wbuhuibiandaima
  • 2017-04-27 20:37
  • 491

火焰之纹章的各种计算

1.属性:   HP:影响人物生存能力   力(魔力):影响物理,魔法攻击力,杖的恢复效果和杖的命中率。   技:影响命中率,必杀率。   速:影响回避率,攻速。   幸:影响命中率,回避率,必杀回避率和沙漠的探宝率,恶魔之斧的反噬率等。   物防:影响物理防御力。   魔防:影响魔法防御力,杖的命...
  • wolf96
  • wolf96
  • 2014-08-28 19:53
  • 1243

android小说阅读器智能断章功能的实现(续)

前言之前写过一篇关于智能断章的博客,那里的断章方式是得到其中的章节名并且把章节内容保存到数据库。现在看来这种方式确实有点低了,不能获取个目录就存几M或者十几M的内容到数据库吧,所以也有博友询问能不能得到章节名所在的位置然后直接从那里开始访问,一开始我是拒绝的,因为实现不了,后来发现还是可以做到的,只...
  • ProgramChangesWorld
  • ProgramChangesWorld
  • 2016-08-20 23:38
  • 2175

华为章宇:如何学习开源项目及Ceph的浅析

http://www.csdn.net/article/2014-04-10/2819247-how-to-learn-opensouce-project-&-ceph/1 摘要:开源技术的学习和采用确实存在着一定门槛,然而学习各种开源项目已经成为许多开发者不可回避的工作内容。那么,对于类...
  • gong0791
  • gong0791
  • 2014-12-09 23:21
  • 677

《黑客与画家》读书笔记(10-15章)

10 编程语言解析 2017-02-22 Fortran、Lisp、Cobol、Basic、C、Pascal、Smalltalk、C++、Java、Perl和Python,全都是高级语言。 11 一百年后的编程语言 2017-02-22 任何一种编程语言都可以分成两大组成部分:基本运算...
  • Cytosine
  • Cytosine
  • 2017-02-23 20:44
  • 236

读书笔记 — 《高性能JavaScript》4-8章

第4章 算法和流程控制 内容: 程序算法和流程优化,包括优化循环、递归等等 知识点: js有四种循环类型: for(var i=0; i10; i++) {}; //初始化、前测条件、后执行体、循环体 while() {} //前侧条件、循环体 do{} while(); ...
  • sxqlmc000
  • sxqlmc000
  • 2017-05-04 18:05
  • 128
    个人资料
    • 访问:6303次
    • 积分:393
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:10篇
    • 译文:10篇
    • 评论:4条