JAVA学习
文章平均质量分 53
姬世霆
初入博客,希望可以坚持下去,结交更多的朋友,学到更多东西。
展开
-
Apache POI (JAVA处理Office文档的类库)
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。结构:HSSF - 提供读写Microsoft Excel格式档案的功能。XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。HWPF - 提供读写Microsoft Word格式档案的功能。HSLF转载 2015-04-09 23:20:57 · 587 阅读 · 0 评论 -
3、重新组织代码
积极发现并抽取出与主目的不相关的子逻辑: 1、如果足够的行数在解决与主目的不相关的问题,则抽取相应的方法 2、每行代码都询问是否是直接为了目标而工作 将一般代码和函数主要目的代码分开, 步骤: 1、列出所有要做的功能 2、将任务拆分到不同函数 橡皮鸭技术: 1、像对着同事一样描述代码要做什么 2、注意描述中所用的关键字和短语 3、写出描述所匹配的代码 保持小的代码库: 1、创建越原创 2016-04-06 12:21:49 · 523 阅读 · 0 评论 -
1、重新组织数据
1、Self Encapsulate Field(自封装字段) 在子类中需要修改父类的字段变化后的值时,考虑使用自封装,然后给get/set方法,其他情况可以直接使用访问值的形式。 2、Replace Data Value With Object(以对象取代数据值) 当原来的简单数据项不再表示简单的情况,比如要对他进行格式化输出等,则考虑将数据项变原创 2016-04-06 12:42:54 · 1489 阅读 · 0 评论 -
2、重新组织函数
1、Extract Method(提炼函数) 1、无局部变量 2、有局部变量 1、被提炼代码段只是读取变量的值,并不修改他们。 简单传给目标函数 2、被提炼代码段对局部变量再赋值 1、如果发现源函数的参数被赋值,使用Remove Assignments to Para原创 2016-04-06 12:44:14 · 919 阅读 · 0 评论 -
3、在对象之间搬移特性
1、Move Method(搬移函数) 如果一个类有太多行为,或如果一个类与另一个类有太多合作而形成高度耦合,则考虑搬移函数。 这类函数有这种特点:使用另一个对象的次数比使用自己所驻对象的次数还多。 2、Move Field(搬移字段) 和搬移函数类似,某个字段被其所驻之外的另一个类类更多的用到,则考虑将该字段移到那个类中。 3、Ex原创 2016-04-06 12:45:41 · 957 阅读 · 0 评论 -
4、简化条件表达式
1、Decompose Conditional(分解条件表达式) 将if表达式抽离成函数,然后将if、else中的代码段提炼为各自独立的函数。 2、Consolidate Conditional Expression(合并条件表达式) 如果一系列条件测试都得到相同结果,那么将这些测试合并为一个条件表达式,并将这个条件表达式提炼为一个独立函数。原创 2016-04-06 12:46:34 · 1812 阅读 · 0 评论 -
5、简化函数调用
1、Rename Method(函数改名) 2、Add Parameter (添加参数) 3、Remove Parameter(移除参数) 4、Separate Query from Modifier(将查询函数和修改函数分离) 某个函数即返回对象状态值,又修改对象状态,这样子的话,建议建立两个不同的函数,其中一个负责查询,另一个负责修改原创 2016-04-06 12:47:39 · 1094 阅读 · 0 评论 -
6、处理概括关系
1、Pull Up Field(字段上移) 两个子类拥有相同的字段,则该字段移至超类。 2、Pull Up Method(函数上移) 有些函数,在各个子类中产生完全相同的结果,则将函数移至超类。 3、Pull Up Constructor Body(构造函数本体上移) 你在各个子类中拥有一些构造函数,但他们的本体几乎原创 2016-04-06 12:48:23 · 1075 阅读 · 0 评论 -
7、大型重构
1、Tease Apart Inheritance(梳理并分解继承体系) 如果某个继承体系同时承担两项责任,则建立两个继承体系,并通过委托关系,让其中一个可以调用另一个。 2、Convert Procedural Design To Objects(将过程化设计转化为对象设计) 如果你手上有一些传统过程化风格的代码,则将数据记录变成对象,将大块的行原创 2016-04-06 12:49:18 · 1127 阅读 · 0 评论 -
如何组织代码
1、重新组织数据 1、Self Encapsulate Field(自封装字段) 在子类中需要修改父类的字段变化后的值时,考虑使用自封装,然后给get/set方法,其他情况可以直接使用访问值的形式。 2、Replace Data Value With Object(以对象取代数据值) 当原来的简单数据项不再表示简单的情况,比如要对他进行格式化输出等,原创 2016-04-06 12:29:45 · 1458 阅读 · 0 评论 -
代码的坏味道
下面分类是我自己归纳的,如有不足之处,可以发评论,如果的确这样,我会尽快更新内容。 变量的坏现象 Data Clumps(数据泥团) Primitive Obsession(基本类型偏执) Speculative Generality (夸夸其谈未来性) Temporary Field (令人迷惑的临时变量) 函数的坏味道 Long M原创 2016-04-06 12:24:07 · 1723 阅读 · 0 评论 -
2、简化逻辑和循环
1、简化逻辑 在if条件句中,将被询问的表达式放在左侧,右侧用来放置常量,比如 if(heigh > 10 ) 在if中,一般以这种信息安排顺序: 1、可以快速判断需要退出控制流的 2、处理正确逻辑 3、处理简单情况 4、处理有趣的或者可疑的 5、采用设计模式 2、简化循环 建议使用while循环或者for, 尽可能的减少循环嵌套( 1、提早返回 2、抽取循环内原创 2016-04-06 12:20:24 · 842 阅读 · 0 评论 -
1、简明、清晰的展示
1、关于命名 总纲: 选择专业的词、避免泛泛而谈的词、用具体的名次来代替抽象的名词、 使用前缀或者后缀来附带信息(比如heght_m,高度以米来度量)、决定名字长度、 利用名字格式来表达含义 选择专业的词:比如常用的getPages()就不如用FetchPages()或者DownLoadPages()好,int size 就没有int heght好。 在循环迭代中,可以使用默认原创 2016-04-06 12:19:22 · 691 阅读 · 0 评论 -
策略模式总结
策略模式的定义:定义了算法族,分别封装起来,让他们直接可以相互替换,此模式让算法的变化独立于使用算法的客户。自己的定义:策略模式使实体类和其应有的行为进行分离,使行为独立,达到多态的目的。 伪类图:与状态模式的区原创 2016-01-08 10:25:25 · 621 阅读 · 0 评论 -
java如何读取property文件
最近在学习设计模式的时候,在练习动态配置的时候联想到如果将所有的类型放在配置文件中那么程序的灵活性和可扩展性会不会更好?于是学习了如何读取property文件的方法,并记录下来方便自己和朋友。下面是例子:1、在同一个包下新建PropertiesTest 和fruit.properties文件2、在fruit.properties中添加内容:apple=com原创 2016-01-08 14:02:38 · 6463 阅读 · 0 评论 -
简单工厂模式
俗话说得好:贪多嚼不烂,前些天就是一下子把几个工厂模式都看完,结果导致理解跟不上,没有及时写下总结。现在吸取教训,先将简单工厂模式总结一下,然后再继续说工厂模式、抽象工厂模式以及单例模式(之前半天将这些模式看完,自以为理解了,结果眼睛一闭一睁,都忘了)=========贪多嚼不烂========贪多嚼不烂========贪多嚼不烂============下面我们来看一下简单的思路:原创 2016-01-26 18:33:11 · 469 阅读 · 0 评论 -
观察者模式
观察者模式:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。自己的理解:观察者模式相当于书刊==》订阅者这种类型,比如说:我订阅了一本《读者》,然后读者每发行一版就会给我发送一次新的周刊。类图:(上一个策略模式的类图是自己随意画的,很不好,还是找的一个,看来以后的将UML也学习一原创 2016-01-09 23:49:35 · 412 阅读 · 0 评论 -
装饰模式
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:(图片来自网络)下面我们来看源码:共同的接口:public interface ModelMethodInterface { void doMethod();}被装饰者实现接口:public c原创 2016-01-12 21:53:47 · 449 阅读 · 0 评论 -
单元测试主要的测试功能点
作为单元测试,其重要程度不言而喻:它保证了我们在做代码重构以后的正确性,能让我们肆无忌惮的去修改我们的半成品。但是作为开发新人或者刚接触单元测试的开发人员来讲,怎么去测试,去测哪些方面应该是比较迷惑的。一下几点是平时工作中经常需要用到单元测试来验证的功能点,作为记录,方便自己以后写单元测试的时候可以回顾:模块接口测试 通过所测模块的数据流进行测试。调用所测模块时的原创 2016-03-15 22:09:56 · 8802 阅读 · 0 评论 -
自己常用的Eclipse快捷键汇总
1. 【ALT+/】 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT+/】快捷键带来的好处吧。 2. 【Ctrl+O】 显示类中方法和属性的大纲,能快速定位类的方法和属性,在查找Bug时非常有用。 3. 【Ctrl+/】 快速添加注释,能为光标所在行或所选定行快速添加注原创 2016-02-28 14:01:41 · 436 阅读 · 0 评论 -
清晰代码和代码重构大纲
最近学习Clean Code 和重构,做了笔记,打算做一个专栏。这个是第一章,算是大纲吧,后续有还有更新。清晰代码和代码重构 1、简明、清晰的展示 2、简化逻辑和循环 3、重新组织代码 4、可读性测试 使测试易于维护和阅读 让测试的错误信息更可读 选择好的测试输入:选择一组能完整的、简单的被测数据进行测试 当一个功能需要进行多项测原创 2016-04-06 12:18:03 · 830 阅读 · 0 评论 -
软件开发Java之奇数最后一个字符输出乱码问题
首先引入网络上的一段文字:BufferedReader reader = newBufferedReader(new InputStreamReader(System.in));String message;while((message= reader.readLine()) != null){System.out.println(message);}转载 2016-02-27 21:10:48 · 1287 阅读 · 0 评论