关于oop的一点回忆

昨天在一个程序员行业群里看到别人发了一条消息,

大意是:要做好封装啦,不要随便用public啦,不要随便改别人代码啦。

说的好像就是我,因为,我这辈子最后悔的一件事情之一就是手贱改动别人代码。

那大概是2015年左右的事情了,事情大概是这样的。

前前公司是一家页游公司,我所在的项目组是一个已经上线运营稳定了约1年的项目,

基本上也就是开发小模块和优化的工作。

彼时公司KPI导入,

大家每个星期都要写工作总结,

所以组长为了照顾我们,

一旦有了新任务,

就分摊给大家好几个人去挂名。

然后,我就这样和另外一个人分到一个模块开发了。

双方使用git合作,在使用对方的代码的时候,

我发现对方有个奇怪的getter/setter基本上就相当于Eclipse或者Flash Builder右键生成出来的。

setter里面除了给对应的私有变量设值,完全没有别的逻辑;

getter里面除了取得这个私有值,也是没有其他操作。

这跟public功能上有什么区别呢?完全没有

另一个地方是一个从服务端获取的静态数据,

在从服务端获取之后就不会变动了的数据,

被对方封装成了好几个对象,

导致命名可以全部A.attr来访问的属性,

要用到A.B.attr甚至是A.B.C.attr来访问。

并且,这个对象的重用次数和后续重用次数可以肯定是0。

我在沟通无果,然后不小心瞥到几次之后,终于做了我这辈子最后悔的事情之一。

当然,这是肯定是闹起来了的。

对方对于getter/setter的回答是flex框架都是这样写的啊?

我100%肯定他是没看过flex代码里面的setter和getter。

因为,as里面脏数据用得很广,

在fl组件框架里,setter里面都会伴有一个脏数据flag;

在flex组件框架里,setter不仅会有脏数据flag,还会有对应的Event触发。

从过度的封装这个看来,此人多半是从java转过来的,因为java面试基本都是问oop三原则,原子性的啥的;

从getter/setter写法看来,此人多半只是个半吊子java,因为这个还是比较基本的一个东西,我现在看来好多js框架里面其实也是有getter/setter的。

从那以后,我对那些满口oop,动则封装继承多态,私有,但是基本功却不扎实的人,都没有什么好感。

当然,我认错了,使用git将版本返回;

然后在做了某次优化有些小bug的情况下被喷,

说这优化有什么用的情况下,

果断离职了。

原文地址:https://www.cnblogs.com/adoontheway/p/6376710.html