有关异常和类属性暴露管理的杂谈

1、异常

之前在读《clean code》的时候,读到其中的一章,讲什么异常的作用,说了什么垂直啊,不是报错而是设计啊啥的,也没看懂,不过最近好像忽然对此有了感受。
之前不懂是因为写的项目不够大,代码不够复杂,所以根本用不到异常,最近写的这个项目也不是很大,其实也不复杂,但是因为我水平不够,设计能力更是不行,还在练气期七八层徘徊(凡人修仙传的级别),所以造成代码稍微复杂,其实也不是很复杂了,此时我顿悟到异常的作用,看来有望突破修炼瓶颈。
那就是项目一旦复杂起来,再想让顶层的代码去对底层的逻辑代码造成影响就会很麻烦,因为逻辑代码量很大了,没法修改了。就好像原本公司不大,你有好的想法,可以直接跟董事长说,但是公司大了起来,有了数千甚至数万人的规模,那你再有一个想法,先跟你的组长说(当然了,你最开始的时候就跟着老大,这个时候当然不会是这个级别了,这里就打个比方),然后组长在跟主管说,主管在跟更高的主管说,一层一层上去,不仅效率不高,而且麻烦。
这个时候,ceo认识到了这个问题,感觉到员工的好的想法,一定要知道,以为这对公司来讲是巨大的财富,所以ceo把cto叫来,问道“老哥,有没有可能从技术层面上解决这个问题?”。CTO抽了根华子,思索良久,突然,紧皱的眉头慢慢消解,露出了胸有成竹的笑容,缓缓说道:“当然可以,我们给每个员工的工位上都安装上一个电话,这个电话会按层次网上打,如果上级没有回应,就会一级一级的自动往上打,一直打到老兄你的电话为止,当然,你一个人可能处理不了这么多的问题,至于怎么处理,那想比老兄自有办法”。
现在,大部分语言都有这个“电话”,会一层一层的网上打,上级不处理就继续往更高层的地方打,直到打到CEO的电话为止,这个神奇的电话可以在任何地方打,他的名字就叫“异常”。
按照clean code中的说法,异常不应该是程序中的错误处理,反之,他应该是程序设计本身的工具,用来以最简单的办法让底层代码能够联系上高层代码。
现在想一想,确实如此。

2、类的属性(暴露)管理

这个问题也是最近搬砖的时候遇到的一个问题,主要的点在于不断变化的项目中,类属性的访问方法,类方法天然不会有这个问题,因为无论在何处使用了类的方法,无论有多少引用,只需要在这个方法里面修改,其他所有使用该方法的地方都会随之改变,但是属性就不行了,特别是public的属性,或者是python这种语言,想直接使用属性谁也拦不住,这样项目中一旦有了数不清的引用,你想改一下属性的get返回的值,怎么该?人家直接使用的属性,你还去一个一个找,一个一个修改?

就像是你是CEO,为了交到更多的朋友,你制作了一个你的名片,由于你比较喜欢面对面交流,这个名片上除了一些基本信息外,就只有一个你的家庭住址,好让想交朋友或者做生意的人来家交流。但是有一天,一个叫“策划”,或者说是“需求”的地产开发商来你家敲门,说:“你必须搬走,我要在这里改一个摩天大楼,目前预期1w米高,甚至修到大气层外面去”。你反驳说:“就我家这么大的地方,没有可能盖这么高的楼的,更不用说到大气层外了“。那人不服气,拿着枪顶着你的脑袋:“搬或不搬,这是你的问题,其他的你别管“。没办法你气冲冲的搬家走了,这个时候才想起来坏事了。
因为两年内,你发出去了上万张名片,没几天都会有生意人到家来谈生意,甚至你的整个公司目前都是依靠这个方式来获取生意,生存下来的,一搬家就全完了,这个时候你懊恼不已。
站在楼顶阳台上,你想起来了,虽然自己喜欢面谈,其实也是可以在名片上不写家庭住址,而是写一个电话,等别人给自己打电话(to call the getHomeAddressFunction()),告诉对方自己的家庭住址不就行了(别说换手机号,这里不用换,也不会有任何情况会换手机号,手机号就是稳定的),甚至可以约在咖啡店也不是不行啊。

这就是属性的暴露,但是给所有的属性都写上get和set也不合适,java还好,python怎么办?特别是python2的,麻烦急了。
在下给诸位道友说一个比较简单的想法,就是flag类型的属性和内容性的属性,flag类型的属性,作为标志类型的,一般后期修改的可能性不大,而内容行的属性,get和set尤其是get方法,要写一个单独的方法来获取,这样到后来引用一多,需求一变,修改起来比较方便。
但是如果为所有类的属性都写上get和set方法的话

猜你喜欢

转载自blog.csdn.net/qq_40666620/article/details/108183141