引言
我们每天都要工作,每天工作的内容,都是坐在电脑面前敲代码。 在敲代码这件事情上面,我们很多人就做了很多年。但是,最近这几个月,我越来越发现我根本不会敲代码。我不知道什么是好的代码。我只是会敲一些代码而已。
什么才叫做好的代码?
其实在脑海中,这个问题是慢慢才出现的。我也回顾过去那些敲代码和改bug的日子。发现,我还是总结不出来什么是一段好的代码。
也许我们脑海中还是有一些所谓的原则。高内聚,低耦合,函数的责任要单一,注释得有,异常得捕获,命名要清晰。
但是,光光是函数责任单一这一点,我还是不得其门而入。怎么才算是单一的责任?怎么才算是一件事情?
举一个最简单的例子。
一般我们业务系统中都是分为多个层次。其中有controller层,service层,dao层等等。有些公司还把service层分为多个service层。
可能我们会这么去规定这些层次所拥有的责任。
controller层一般是做一些简单的入参的校验。service层是做一些真正业务上面的逻辑。dao层尽可能只是简单调用一下数据库,获取最原始的值,做一些ORM的映射。
那么service层中如果会有查询数据,要不要对这些数据的合法性进行校验呢?
好像是必须校验。不然就会抛出空指针之类的错误。
那么如果service层中使用到一些util的函数?那么这个基本的参数校验是谁来做?
是这个util函数来做吗?如果是这个util函数来做,那么controller层和service层上面不是已经做过了吗?如果util函数不做校验这个事情,万一这个函数被其他函数使用,很容易抛出空指针的异常?这个时候,不会有日志打印,也是一件非常苦恼的事情?这个时候又该怎么办呢?那么是做两边,各层之间是不透明的假装?
结合下之前看Spring源码的经历,Spring源码到底是怎么处理参数的合法性的这个问题的呢?日志又是怎么去抛出的呢?
还有是否Effective Java或者Clean Code之类的书籍中是否有这方面的讲解呢?值得一看。
这就是书籍带给我们的作用吧,前人栽树后人乘凉,站在巨人的肩膀上面,我们才能够看到更远一些。
关于写作
以后这里每天都会写一篇文章,题材不限,内容不限,字数不限。尽量把自己每天的思考都放入其中。
如果这篇文章给你带来了一些帮助,可以动动手指点个赞,顺便关注一波就更好了。
如果上面都没有,那么写下读完之后最想说的话?有效的反馈和你的鼓励是对我最大的帮助。
另外打算把博客给重新捡起来了。欢迎大家来访问吃西瓜。
我是shane。今天是2019年8月27日。百天写作计划的第三十四天,34/100。