※ 引述《Eleganse (王建民)》之铭言:
: 补充一下
: 程序导向的程式,会用到许多的"函式",
: 函式这种东西,乍看之下可以达成在OO导向中"类别"或是说"类别中的方法"相同的效果,
: 但是一个很主要的不同,是函式的撰写多半是属于call by value的概念,
pass-by-value 与 pass-by-ref, 跟 OOP 没有关系
: 也就是一大堆数据或文字资料,经由一个函式的服务,
: 而输出另外一大堆的数据或文字资料。
: 当系统的功能慢慢扩增,我们的函式也越来越多,
: 整个系统在执行时有那种"资料副本满天飞"的感觉,
就算写 C, 很多情况都会传入指标而不是 copy of data
: 就我个人的主观概念,如果程序导向的程式撰写时能够都使用call by referance,
: 也就是"指标"的广用,一部份的程度上,是能够达成OO导向的好处的。
OOP 的好处根本就不是这...
: 但是指标这种东西,在C语言的最新一代C#中,已有遭到弃用的现象,
: 指标的使用被当成了unsafe的写法,
: 毕竟直接存取内存,对许多程式撰写师而言,
: 实在是没有必要承受的原罪与风险。
指标不等如直接存取内存. 绝绝大部份的指标的应用, 都只是
作为 指往某东西的指标, 这种应用, 与 java/C# 的 reference
概念上无异.
: 我猜测一个很大的因素,
: 是因为"类别"、"物件"的使用,一部份替代了指标的作用,
类别/物件 与 指标 的使用一点关系都没有. 也不会因为你
用了物件就替代了指标的使用
: 我们再也不用关心数值资料在函数中来来去去的变化了,
: 因为物件的使用,直接达成了"牵一发而动全身"的效果,
函式稍为写得好, 你也不会关心数值资料的来去变化.
试问写 C 的时候, 你在用 time_t mktime(struct tm*)
的时候, 有需要关心传进的那个 tm struct 的资料来去变化吗?
我觉得, 你整篇都把某 OOPL (C#/Java?) 的 language feature,
错误理解为 OOP 的特性. 所以整篇说的东西都是错的