当您找不到充分的理由或动机时,使用面向对象编程有什么意义?
你必须受到将想法视为对象的需要的激励。有些人觉得需要感知概念,流程或功能而不是对象,然后他们被激励去面向概念,想法或功能流的编程。
大约13年前,我从c切换到c ++,仅仅是因为有我需要的想法,但c不容易执行。简而言之,我的需求激励了我面向对象的编程。
面向对象的思维方式
首先,你有字节,字符,整数和浮点数。
然后,您的程序开始被各种变量(局部变量和静态变量)弄得一团糟。然后你决定将它们分组到结构中,因为你认为所有通常传递的变量。
数据聚合
因此,就像打印机的信息应该将其所有变量都包含在打印机结构中一样:
{id, name, location,
impactType(laser|inkjet|ribbon),
manufacturer, networkAddr},
etc.
因此,现在,当您通过打印机信息调用一个又一个函数时,您没有具有长参数列表的函数或具有巨大串扰可能性的大量静态变量集合。
信息的纳入
但数据整合还不够好。我仍然需要依靠一堆函数来处理数据。因此,我有一个聪明的想法,或者将函数指针合并到打印机结构中。
{id, name, location,
impactType(laser|inkjet|ribbon),
manufacturer, networkAddr,
*print(struct printer),
*clean(struct printer)
}
当数据包含有关如何处理/感知数据的过程时,数据会逐渐变成信息。
信息量化
现在,激光,色带和喷墨打印机并不都具有相同的信息集,但它们在信息中都有一组最常见的分母(LCD):
任何打印机通用的信息:ID、名称、位置等
仅在色带打印机中找到的信息:二手自行车,色带(织物|玻璃纸),色带等
仅在喷墨中找到的信息:墨盒等
仅在激光器中发现的信息: ...
对于我和许多面向对象的队列来说,我们更喜欢将所有公共信息量化为一个公共信息封装,而不是为每种打印机类型定义单独的结构/封装。
然后,我们更喜欢使用一个框架来管理每种类型的打印机的所有函数引用,因为并非所有打印机都以相同的方式打印或清理。
所以你远离对象的偏好/动机告诉你,如果你不使用对象,你的编程生活会更容易吗?您更喜欢自己管理所有这些结构复杂性。你一定没有写足够的软件来感受这种感觉。
懒惰的必要性
有人说——必要性是创造力之母。(以及,对金钱的热爱是邪恶的根源)。
但对我和我的同龄人来说,面对必要性时的懒惰是创造力的父母。(以及缺钱是邪恶的另一个父母)。
因此,我敦促你对编程采取一种懒惰的态度,这样最短路径的原则就会进入你的生活,你会发现,但别无选择,只能让自己朝着用对象编程的方向发展。