文档章节

java特训第一课

旺仔没馒头
 旺仔没馒头
发布于 2017/09/03 16:37
字数 910
阅读 2
收藏 0
点赞 0
评论 0

软件健身操——九步迈向优秀软件设计

  1. 方法只使用一次缩进

    使得代码逻辑更加清晰,代码的可读性增强。越大的方法越缺少内聚性,通过编译器的抽取功能,可以对方法进行提炼,直到方法中只有一次缩进。

  2. 不使用else关键字##

    else语句会使得程序逻辑看起来更加复杂,形成更深层的逻辑关系,通常对于简单的else语句使用卫语句或提前返回来去掉else语句。

  3. 封装所有的原生类型和字符串

    整数,只代表一个数量,并没有实际的意义,我们需要对整数进行封装,使它变得更有意义,让代码通俗易懂。

  4. 一行代码只有一个“.”运算符

    如果一行代码中有多个“.”运算符,那就说明很多类的职责就搞混了,假设我们去电影院付钱,我们自己掏钱包给收银员钱即可,如果抽象成多个“.”的情况,就是收银员拿着我们的钱包去付钱,这明显不符合常理。封装的含义就是不要让当前类跨入它不知道的类型中。而像java中字符串处理的一些类,他们通常使用的是bulider模式,即每一次“.”运算都会返回自身,因此不存在其他类的参与,所以并不会违反此条规定。

  5. 不要使用缩写

    起名字时尽量使用全拼,提高代码的可读性,方便阅读

  6. 保持实体对象简单清晰

    超过50 行的类所做的事情通常都不止一个。这会导致他们难以理解和重用。这意味着每个类的长度不能超过 50 行。每个包所包含的文件不超过 10 个。

  7. 任何类中的实例变量都不要超过两个##

    将一个对象从拥有大量属性的状态,解构成分层次的,相互关联的多个对象,会直接产生一个更实用的对象模型。将一个复杂的大的对象,分解成多个简单的对象。可以将实例变量按照相关性分离在两个部分中;可以创建一个新的对象来封装两个已有的实例变量。

  8. 使用一流的集合

    集合的概念应该是一类实例的集合。比如,定时器对象的集合——包括所有的定时器。我一般是放在定时器类中,然后使用static 来表示集合。看了这个方法要改一下了。任何包含集合的类都不能再包含其他的成员变量。每个集合都被封装在自己的类中。集合其实是一种应用广泛的原生类型。

  9. 不要使用任何Setter、Getter、Property

    要从询问,改变成命令。Geter/Setter/Proerty会对对象的封装性找出破坏。在严格封装的边界背后,真正的动机是迫使程序员在完成编码后,一定要为这段代码的行为找到一个合适的位置,确保它在对象模型中的唯一性。这样可以减少重复性的差错,以及在添加新特性的时候,可以在一个更合适的位置引入变化。

© 著作权归作者所有

共有 人打赏支持
旺仔没馒头
粉丝 2
博文 15
码字总数 10924
作品 0
潍坊
程序员
Java研发大学毕业后为何找不到理想的工作

现在大学生在大学学习Java技术,毕业后直接工作,我想在大家心里这只是再平常不过的事情了,可是为啥刚一毕业的Java应聘工程师会遭到各个研发企业的拒绝,这是刚毕业的每个大学生心中的疑虑,...

我爱编程学习
06/07
0
0
理解ThreadLocal 2

摘自《Spring 揭密》 王福强著 人民邮电出版社 1 ThreadLocal的背景 单单从程序层面来看,我们编写的代码实际上是在管理系统中各个对象的相关状态,如果不能对各个对象的状态的访问进行合理的...

i33
2012/03/22
0
0
ubuntu如何完全卸载和安装 Java及android环境?

最近,迷上了java,一时间什么环境变量/虚拟机都猛然袭来,有点不适。环境配置在前,这所自然。平时搞PHP都喜欢自己倒腾环境,自然时因为系统默认版本并不如意罢。java而言,也有类似情节。不...

NILYANG
2013/02/27
0
1
C++之父评论C++与Java

如 果人们非要拿C++和Java来作比较,我建议他们去阅读The Design and Evolution of C++,看看C++为什么是今天这个样子,用我在设计C++时遵从的原则来检验这两种语言。这些原则与SUN的Java开发...

zplswf
2012/04/09
0
0
Ubuntu14.04麒麟版安装:Netbeans,Java运行环境以及netbeans字体模糊问题

一.配置java运行环境: netbeans 是基于java开发的,要安装运行neabeans必需要先配置java运行环境。java又分为以下两种(任选其一即可): JRE,它是你运行一个基于Java语言应用程序的所正常需...

鬼哥哥
2014/10/30
0
1
Java程序员必读书单,家族又添新成员

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 有些革命出其不意地吸引了全世界的眼球。Twitter、Linux操作系统和...

异步社区
05/09
0
0
java类ThreadLocal的理解

ThreadLocal是什么 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。也许把它命名为ThreadLocalVar更...

保罗的寓言
2011/05/21
0
1
深入理解JVM内幕:从基本结构到Java 7新特

摘要:许多没有深入理解JVM的开发者也开发出了很多非常好的应用和类库。不过,如果你更加理解JVM的话,你就会更加理解Java,这样你会有助于你处理类似于我们前面的案例中的问题。 每个Java开...

开源中国驻成都办事处
2012/12/06
0
1
三大java技术牛人齐聚广州传智播客——超强师资,超低价格,超深课程,超真项目

三大java技术牛人齐聚广州传智播客——超强师资,超低价格,超深课程,超真项目 中国的软件教育已经坑害了不少软件工程师苗子,传智播客自成立之日起就立志于改变中国的软件教育。随着传智播...

传智播客java.net培训
2010/03/02
0
0
Hadoop项目实战-用户行为分析之应用概述(三)

1.概述   本课程的视频教程地址:《项目工程准备》   本节给大家分享的主题如下图所示:   下面我开始为大家分享今天的第三节的内容——《项目工程准备》,接下来开始分享今天的内容。...

smartloli
2015/06/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
18分钟前
5
3
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
11
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部