Clean Code Study Notes 2

尽量少用 switch ,除非你觉得它是如此的恰如其分。


注释

用代码本身,而不是注释,去表达意图。

糟糕的代码不需要注释,要也没用。

别让读注释的时间比读代码还长。

每当你想在语句右侧加注释之前,先考虑下,是不是该减短这个函数了。


面向过程 还是 面向对象

public class Square {
	public Point topLeft;
	public double side;
}

public class Circle {
	public Point center;
	public double radius;
}

public class Shape {
	public final double PI = 3.14;
	public double area(Object shape) throws NosSuchShapeException {
		if (shape instanceof Square) {
			Square s = (Square)shape;
			return s.side * s.side;
		} else if (shape instanceof Circle) {
			Circle c = (Circle)shape;
			return PI * c.radius * c.radius;
		}
		throw new NosSuchShapeException;
	}
}


这里,类更应该被看作为结构体,一种数据结构。

并没有把相关的函数封装到类里去,而是统一交给 area 函数处理。

instanceof 就像是 switch 的升级版,同级分布处理各个数据结构。
在面向过程下,添加一个类是很麻烦的,必须去修改 area 函数。

但添加一个函数是很干净的,比如求周长的函数。


public class Square implements Shape {
	private Point topLeft;
	private double side;
	public double area() {
		return side*side;
	}
}
public class Circle implements Shape {
	private Point center;
	private double radius;
	public final double PI = 3.14;
	public double area() {
		return PI * radius * radius;
	}
}

相比之下,目前,我更偏爱面型对象的形式。

一,PI 的归属不会再尴尬,Circle 所有。

二,NoSuch 异常,可以不需要了。

这种形式下,添加一个类是很干净的。

但添加一个函数,却需要在修改所有的类。


如何选择,就看你需要哪种形式的解耦了。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值