关于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的情况下被喷,
说这优化有什么用的情况下,
果断离职了。
关于oop的一点回忆的更多相关文章
- C#面试题记录
最怕的就是面试,每每到找工作的时候感觉压力山大,每次都要提前刷点题目去面对.所以这里自己对以后需要了解的知识做一个记录,方便自己随时的补充和深入了解,也给现在的自己留下一点点的印记,给未来留下一点回忆 ...
- 你好,OI
高二了才开通真正意义上的博客...以前一直比较懒没写过什么,现在为了给自己留下一点回忆还是过来了. 上半年的那次失败还是历历在目啊...几个月来一直在我心中挥之不去.虽说也是自己的能力不足造成的,但是 ...
- Delphi研究,对全局变量函数与OOP编程关系的一点体会 good
感叹:设计VCL的人真是神人啊,感觉比Pascal编译器的设计人还要牛很多,把整个Windows架构理了一遍,封装的如此之好,复用的如此之好(以至于Delphi的控件满天飞,使用还特别容易),简直惊为 ...
- Python2.6-原理之类和oop(下)
来自<python学习手册第四版>第六部分 五.运算符重载(29章) 这部分深入介绍更多的细节并看一些常用的重载方法,虽然不会展示每种可用的运算符重载方法,但是这里给出的代码也足够覆盖py ...
- 面向对象的OOA、OOD、OOP
OOA Object-Oriented Analysis:面向对象分析方法 是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题.OOA与结构化分析有较大的区别.OOA所强调的 ...
- javaSE ---OOP总结
面向对象编程(Object Oriented Programming,OOP)是当前最主流的编程范式之一,Java是一门纯面向对象的编程语言.我们常说C++是一门面向对象的编程语言,C++是C语言的一 ...
- scala 学习笔记(06) OOP(下)多重继承 及 AOP
一.多继承 上篇trait中,已经看到了其用法十分灵活,可以借此实现类似"多重继承"的效果,语法格式为: class/trait A extends B with C with D ...
- scala 学习笔记(04) OOP(上)主从构造器/私有属性/伴生对象(单例静态类)/apply方法/嵌套类
一.主从构造器 java中构造函数没有主.从之分,只有构造器重载,但在scala中,每个类都有一个主构造器,在定义class时,如果啥也没写,默认有一个xxx()的主构造器 class Person ...
- Python2.6-原理之类和oop(上)
来自<python学习手册第四版>第六部分 一.oop:宏伟蓝图(26章) 在这之前的部分中,经常会使用"对象"这个词,其实,到目前为止都是以对象为基础的,在脚本中传递 ...
- 【PHP面向对象(OOP)编程入门教程】13.访问类型(public,protected,private)
类型的访问修饰符允许开发人员对类成员的访问进行限制,这是PHP5的新特性,但却是OOP语言的一个好的特性.而且大多数OOP语言都已支持此特性.PHP5支持如下3种访问修饰符: public (公有的. ...
随机推荐
- Go语言中的init函数: 特点、用途和注意事项
1. 引言 在Go语言中,init()函数是一种特殊的函数,用于在程序启动时自动执行一次.它的存在为我们提供了一种机制,可以在程序启动时进行一些必要的初始化操作,为程序的正常运行做好准备. 在这篇文章 ...
- 如何取消Blazor Server烦人的重新连接?
如何取消Blazor Server烦人的重新连接? 相信很多Blazor的用户在开发内部系统上基本上都选择速度更快,加载更快的Blazor Server模式. 但是Blazor Server由于是Si ...
- Reactor 模式与Tomcat中的Reactor
系列文章目录和关于我 参考:[nio.pdf (oswego.edu)](https://gee.cs.oswego.edu/dl/cpjslides/nio.pdf) 一丶什么是Reactor Th ...
- uniapp-chatgpt跨端仿ChatGPT实例|uniapp+vue3+pinia多端聊天模板
基于uniapp+vite4+pinia跨多端实现chatgpt会话模板Uniapp-ChatGPT. uni-chatgpt 使用uni-app+vite4+vue3+pinia+uview-plu ...
- 细节决定成败,聊聊JS的类型(上)
今天我们来讲讲 JavaScript 的内容,在这个部分,我首先想跟你聊一聊类型. JavaScript 类型对每个前端程序员来说,几乎都是最为熟悉的概念了.但是你真的很了解它们吗?我们不妨来看看下面 ...
- Linux中常用数据库管理系统之MariaDB
Linux中常用数据库管理系统之MariaDB 我们生活在信息化时代,经常要跟数据打交道,它在我们的日常生活中无处不在,比如手机支付,微信聊天,淘宝购物,使用的这些在后台都会对应一个叫数据库的存在.数 ...
- Pychrm自定义代码块
Pycharm -> Perferences (command + ,)
- 360OS张焰:AI视觉在教育中的应用
11月24日,由即构科技主办的2020GET大会教育科技分论坛在北京成功召开,来自叮咚课堂.小冰.360OS.蕃茄田艺术.即构科技的6位资深教育/科技大咖,在论坛上进行深度分享. 以下为360OSAI ...
- Windows 交叉编译之 make
以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/w8YV_TUb4QwsgChu3AspHg Make 是什么 Mak ...
- 一文搞懂TCP的三次握手和四次挥手
目录 1.三次握手 2.四次挥手 3.11种状态名词解析 TCP的三次握手和四次挥手实质就是TCP通信的连接和断开. 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所 ...