我的代码习惯---高封装性
Posted fabao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的代码习惯---高封装性相关的知识,希望对你有一定的参考价值。
之前维护公司ERP的时候,感觉有很多代码,感觉很多的地方写的很乱.
当时只是觉得很乱,现在想来,它很多的乱都可以归结为代码封装性太低.
封装性的本质
封装性的本质是,一个类自己管理自己的【数据】,和与之相关的【方法】.
其他类和对象,不能随意修改我的数据和数据结构,不能随意修改我的方法.
你想要我的数据我给你,你想要我的方法,我来执行.
下面是一些会破坏封装性的做法.
什么是不好程序
跳来跳去的程序是不好的程序.
编程的历史告诉我们了.
1.滥用继承
继承破坏封装性的论述网上有很多.
实际编码过程中,如果父类是别人写的,我去写子类的时候,就不那么自由了.
很有可能我写了一个方法,但是运行结果不是我想要的,那我就要去父类里面找了,哪个方法修改了我子类中的变量?
这就好像是不成器的儿子,这个事情我管不了,你去问我爸吧.
对于这种问题,网上给出的解决方案都是用接口代替继承.
但是当我面对一个已经存在的管的太多的基类的时候,我有一个折中方案------写一个接口,也保留原来的基类.
继承用到最核心的思想就是分类,滥用继承就像是化学一样,化学总是很多奇怪的有个性的分类,几乎所有的金属都会XXX,但是有一种金属Z就不会这样.
我不想准确的想明白,A/B到底哪里相同,哪里不同.....这很难......
但是想明白A/B相同的一两个点,提取出接口来......却很简单明了.......
-------------------------------------------------------------------------------------------
要牢记的是,面向对象的继承,并没有解决编程的核心问题.
他关心的是怎样的语法符合人的思维,怎样能简化思考,提高编码效率.
所以说,当理解类和类之间的继承关系,会耗费我们太多脑力的时候,就该放弃这种方法了.
-------------------------------------------------------------------------------------------
当学习面向对象的时候,继承和多态是最精彩的地方.
似乎有了他,我们就可以既少写代码,又有高度的灵活性.
但是坏的设计比好的多,一旦设计坏了,后面还要花更多时间修改.
那我为什么不用个简单粗暴易上手的方法呢?
------------------------------------------------------------------------------------------------------------------------
2.把自己当变量传递
我不知道这是一种什么神奇的手法.
当我A类想要该我的成员变量V1的值,所以我调用了B类的某个方法.
B类可不是一个静态类,他的那个方法可不是给变量加个负号那么简单,它还要针对A中其他变量的状态做出不同的行为.
也是就是说有些业务逻辑又写到B里去了.
-----------------------------------------------------------------------------------------------------------------------
这不就是干涉别国内政吗????
我要改我自己V1,那我应该光传参数V1啊,我自己整个还要过去????
--------------------------------------------------------------------------------------------------------------
这样不好,正确的做法是我自己的业务我自己处理.
和其他类有数据交互,专门写方法.
单纯的算法让静态帮助类完成
以上是关于我的代码习惯---高封装性的主要内容,如果未能解决你的问题,请参考以下文章