我的代码习惯---高封装性

Posted fabao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的代码习惯---高封装性相关的知识,希望对你有一定的参考价值。

之前维护公司ERP的时候,感觉有很多代码,感觉很多的地方写的很乱.

当时只是觉得很乱,现在想来,它很多的乱都可以归结为代码封装性太低.

 

封装性的本质

封装性的本质是,一个类自己管理自己的【数据】,和与之相关的【方法】.

其他类和对象,不能随意修改我的数据和数据结构,不能随意修改我的方法.

你想要我的数据我给你,你想要我的方法,我来执行.

 下面是一些会破坏封装性的做法.

 

什么是不好程序

跳来跳去的程序是不好的程序.

编程的历史告诉我们了.

 

1.滥用继承

继承破坏封装性的论述网上有很多.

实际编码过程中,如果父类是别人写的,我去写子类的时候,就不那么自由了.

很有可能我写了一个方法,但是运行结果不是我想要的,那我就要去父类里面找了,哪个方法修改了我子类中的变量?

这就好像是不成器的儿子,这个事情我管不了,你去问我爸吧.

对于这种问题,网上给出的解决方案都是用接口代替继承.

但是当我面对一个已经存在的管的太多的基类的时候,我有一个折中方案------写一个接口,也保留原来的基类.

继承用到最核心的思想就是分类,滥用继承就像是化学一样,化学总是很多奇怪的有个性的分类,几乎所有的金属都会XXX,但是有一种金属Z就不会这样.

我不想准确的想明白,A/B到底哪里相同,哪里不同.....这很难......

但是想明白A/B相同的一两个点,提取出接口来......却很简单明了.......

-------------------------------------------------------------------------------------------

要牢记的是,面向对象的继承,并没有解决编程的核心问题.

他关心的是怎样的语法符合人的思维,怎样能简化思考,提高编码效率.

所以说,当理解类和类之间的继承关系,会耗费我们太多脑力的时候,就该放弃这种方法了.

-------------------------------------------------------------------------------------------

当学习面向对象的时候,继承和多态是最精彩的地方.

似乎有了他,我们就可以既少写代码,又有高度的灵活性.

但是坏的设计比好的多,一旦设计坏了,后面还要花更多时间修改.

那我为什么不用个简单粗暴易上手的方法呢?

------------------------------------------------------------------------------------------------------------------------

2.把自己当变量传递

我不知道这是一种什么神奇的手法.

当我A类想要该我的成员变量V1的值,所以我调用了B类的某个方法.

B类可不是一个静态类,他的那个方法可不是给变量加个负号那么简单,它还要针对A中其他变量的状态做出不同的行为.

也是就是说有些业务逻辑又写到B里去了.

-----------------------------------------------------------------------------------------------------------------------

这不就是干涉别国内政吗????

我要改我自己V1,那我应该光传参数V1啊,我自己整个还要过去????

--------------------------------------------------------------------------------------------------------------

这样不好,正确的做法是我自己的业务我自己处理.

和其他类有数据交互,专门写方法.

单纯的算法让静态帮助类完成

 

以上是关于我的代码习惯---高封装性的主要内容,如果未能解决你的问题,请参考以下文章

高内聚低耦合

高维护性的javascript

selenium 封装

OOP三大特性之封装:写出高内聚的clean code

应用程序崩溃isHidden属性

我的团队开发活动