理解面向对象

  • 作者:KK

  • 发表日期:2016.9.21


在进阶级别的工程师中理解面向对象的理念很重要,所谓面向对象并不是说把一些代码封装成class,把重复使用的代码封装成方法提供快速传参调用,互相继承扩展就叫面向对象了,普通程序员经常犯这种错误:其实他们一直在用面向对象的特性去写面向过程的代码都可能不知道

这里不扯什么为了对象而对象这些话题?

看国外开源项目的代码是我学习面向对象的重要途径,多琢磨一下人家为什么这样做:

  • 为什么没有被重复调用的代码人家都封装起来了(快速回答:面向对象的核心是隐藏细节,所以不是重复调用时才要封装)

  • 为什么人家的代码,不像你以前见过的“糟糕项目”里的“垃圾代码”那么冗长,人家的代码整洁而且思路又清晰,你能写出来吗

  • 一个你看似要private设计的方法人家为什么要public?

  • 为什么你觉得要private的方法他却用了protected?

  • 为什么你觉得要设计成动态的方法人家却用static修饰成静态方法了,而你觉得要static的他又偏偏不用static?

  • 为什么你平时写type == 1的地方人家却在写type == SomeClass::TYPE_XXX

  • 为什么人家要设计一个叫$context的参数并读取$context->id而不是直接取$_POST['id']这些全局可访问的数据?

  • 为什么这个事情不写在A类的代码里执行,而是非要让B类去给A类加个Listener然后让B类做?

  • 为什么你觉得要放在lib目录里的东西有家却放在Models目录

好了更多不说了,关键要在“隐藏细节”和“抽象化”的角度去思考这些问题,慢慢学习面向对象的程序设计

然后个人设计出来的代码就会更加优秀清晰不容易乱,以及看开源项目代码学习的时候会更加快速上手这个开源项目,能更加快速地学习到里面的东西,更清楚该如何运用