关于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的情况下被喷,
说这优化有什么用的情况下,
果断离职了。