Java学习--提高代码水平与设计

提高代码质量

1一些经验

1.1单词

  1. 有含义的名字:少用temp it do 等
  2. 组件:匈牙利命名,btnCheck btnSayHello
  3. 多次使用某个值就应该使用变量
  4. 不要使用天上掉下来的常量:用final enum来定义常量

1.2语句

  1. 赋值语句:括号
  2. 分支语句:括号
  3. 循环语句:变量局部化
  4. 保卫语句:写成独立的if return,不要与逻辑的if else交织

1.3函数:写简单函数

  1. 降低大括号层次:try-catch,lambda等
  2. 语句不要太多
  3. 层次不要太多
  4. 无法简单化:改变算法

1.4对象

  1. 功能独立:高内聚、低耦合;不要有太多成员
  2. 处理好对象之间关系:继承与实现;成员;设计模式

1.5定律

  1. 简单程序
  2. 代码不要写两遍:

1.6重构:调整使更合理更具可读性

  1. 一本好书:重构改变既有代码的设计
  2. JUnit:重构后立即测试

2设计模式:一套可以反复使用的代码设计经验的总结,具备适应性

2.1分类

创建
  1. 单例:构造使private的
  2. 工场模式:
  3. 抽象工厂:
结构型
  1. 适配器模式:
  2. 组合型:
  3. 装饰器模式:
行为型
  1. 观察者:

2.2设计模式原则

  1. 单一职责:仅有一个引起它变化的原因
  2. 开放封闭:不要修改原有的,尽量扩充现有的功能
  3. 替换原则:子类必须能够替换基类
  4. 依赖倒置:依赖抽象,面向接口编程
  5. 接口隔离:类之间的依赖建立在最小接口上
设计原则
1 消除代码复制

提取相似的代码成函数的能力

2 封装

耦合越低越好,类最好能够独立使用而不依赖其他具体类的成员
成员变量private,自己的事情自己做,对外只提供public函数

3 可扩展性

可以扩展的成员==>使用容器

4 框架加数据

函数的扩展性,handler类及其子类,控制器控制进入不同的逻辑
map记录<指令string,handler实例>

抽象与接口
1 抽象

abstract的父类,定义提供的功能public abstract函数
子类实现(覆盖)父类函数

2 数据与表现分离

MVC模型:便于扩展和维护,类的定义:功能单一职责
M:存储数据
V:显示界面
C:控制逻辑

3 面向接口

逻辑上的关系:继承,是的关系
功能上的关系:接口,有这种功能的关系
先设计接口,在实现不同的类:便于分工合作,代码臃肿

控制反转
1 意义:依赖自定义的监听器来控制原有的组件
2 按钮例子
MVC模式
1 课表例子
M与V独立维护,V依赖M的接口来访问M
C与M交互,控制M变化
C与V间不直接联系

3反射:对象能够知道自己是什么类

3.1Class对象:保存具体类的信息

1. 类名.class
2. 对象.getClass
3. Class.forName("quanming")

3.2使用信息

1. .getName():
2. .getPackage():
3. .getDeclaredFields():
4. .getDeclaredMethods():
5. ....

3.3动态创建对象:框架类程序,servlet的基本原理

1. a=(myClass)Class.forName("").newInstance();

3.4Annotation:注解,供编译器使用

自定义注解:
//注解名字
@interface DebugTime{
    //属性名字,带括号的形式
    boolean value() default true;
    long timeout() default 100;
}
使用注解
@注解名(属性=值,属性={值,值})
函数
//使用反射创建注解实例来操作类实例
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值