猜您喜欢::美国大学留学研究生(美国留学研究生) 国富论读后感怎么写(读后感写法) 星座运势2019年11月-2019年 11 月星座运势 安徽肥东中考成绩查询-肥东中考查询结果 梦见被电击身亡-梦见被电击身亡 女孩起名开心快乐-女孩起名取悦开心快乐 黑果焖鸡用英语怎么说-Black fruit stir-fried chicken 玉环市属于浙江哪个市-玉环市属浙江省玉环县
在写代码之前,我常跟学生嘀咕一句:“先别急着按菜谱做菜,得先看看这顿饭到底是你想吃啥。”这话听起来确实绕口,但本质道理是一样。 面向对象就像你平时做饭,它讲究的是“按人设做菜”。你想做红烧肉,就得有厨师长(类),得按红烧肉的口味标准(接口)来,还要有切肉刀、锅铲这些工具(对象)。
关键是,每个人设都有自己的一套规矩,比如红烧肉不能随意加水,切肉刀也不得乱砍。你从头到尾,印象最深的就是那个穿着红背心、提着铁锤的厨师长,他主导了整个流程。 可是,面向过程呢?那就像是个狂热的厨师,手里拿着无数把不同型号的刀和锅,你只管去切、去炒、去炸,彻底不管这些工具是不是都符合某种统一标准。你只管动手,不管结局会不会烂。 这俩技术到底有啥区别?我想用两个小例子来说说。 比如一个游戏开发者,要是用面向对象,他就得先画出“玩家”这个角色,定义它的属性(名字、血条、装备),再画“魔法”这个技能,定义它的效果(伤害、冷却工夫、范围),最终画“怪物”,定义它的弱点。你要写代码的时候,直接操作这些角色实例。
这时候,要是你想增添一个“隐身”功能,你得先找到“玩家”类,在它的属性里塞个“隐身”字段,硬生生往角色身上贴标签。 而要是用面向过程,你就得换个思路。你不用管角色如何定义,你只需求写一堆判断逻辑。
每当玩家血量低于 50%,你就把“玩家”对象的血条减一。
要是血量低于 30%,你就触发一个“逃跑”动作。
要是到了 10% 的血量,你就务必强制把角色对象给销毁,要么资源回收。你实际上是在不断地修改对象的状态,而不是在管理对象本身。 再举个数据处理的例子。假设你要处理一批订单数据。 要是用面向对象,你得先定义一个“订单”类,里面要有“订单号”、“金额”、“状态”这些属性。
然后定义一个“订单处理器”类,专门负责接收数据。你写代码的时候,先把数据读进来,塞进“订单”类的变量里,然后交给“订单处理器”去判断状态。状态变了,你再去转变“订单”类的变量。
这就像你在给一个杯子贴标签,你再往杯子里倒水。 要是用面向过程,你就得自己写个“判断函数”。你有一个数组存所有订单号,你想查个 1001 的订单,你就在数组里一个个找,要么写个循环把数字过滤出来。一旦找到,你就立马执行操作。你不需求关心“订单”这个类,你只管拿到数据,处理完数据,把结局扔回去。 实际上啊,这两种方式归根结底都是处理数据。只是你给数据加了不同层的面具。面向对象是给数据加了个外壳,面向过程是给数据加了个壳子。 有时候,向对象学习的人会认定这种外壳忒累赘。在现实开发中,大量公司为了快速上线,会把面向对象的东西全砍掉,直接写面向过程。但这就像你学开车,先学会了开手动挡车,再慢慢过渡到自动挡。别看一启动好办晕车,但一旦习惯了,赶明儿在复杂的路况下,你反而能开得更稳。 反过来,用面向过程写代码,有时候确实能写出挺骚的代码。
比如一个特别复杂的后台管理系统,要是强行切成一个个小对象,可能会让代码结构变得像凌乱无章的积木塔,既难维护,又难扩展。
这时候,用面向过程那种“不管对象如何定义,只管如何处理”的思路,往往能写出一套逻辑清楚、运行流畅的系统。 不过话说回来,这两种方式并不是非黑即白的。在大量场景下,你彻底能够随心所欲地切换。
比如画一张图时,用面向对象,你就得按格子来画;用面向过程,你就得按像素点来描。 在写代码这事儿上,我个人的建议就是别死板地贴标签。写一个函数的时候,要是它只做了一件事,那就别搞“类”和“继承”的狗血剧情,直接写成面向过程最省事。
要是它需求处理一堆关系复杂的参数,搞个对象也不吃亏。 总而言之,别总想着用一种方式写好代码,要么强迫自己只用一种方式。
只要你脑子里有数据,代码就会自动帮你安排如何张罗。至于用啥张罗方式,那是你带着数据去干活的,别把数据当成是给方式服务的。
文章版权声明:除非注明,否则均为
静秋号介绍 原创文章,转载或复制请以超链接形式并注明出处。
相关标签: