关于面向对象的一些思考:
刚接触c++和Python的时候我会疑惑为什么在这两个语言中提供的函数非常盛行缩写,因为这在c#中是没有这个问题的。今晚突然悟了。
个人现阶段的看法:
c++是一个典型的非纯面向对象语言,因为它允许脱于类的全局变量,全局函数之类的"全局存在"。所以它提供的基本函数(api)只能基于函数名进行识别,而如果名字太长了就容易造成代码冗长。比如常用的strcmp,strcpy。于是设计者基于此就喜欢用缩写风吧。
而纯面向对象的c#中所有方法(函数)都必须基于类,而每个类的类名就已经有解释功能了,因此方法名就没必要用太多的单词组成,基本都是1个单词。所以自然没有简写的必要。
但是这么有个问题:类名+方法名岂不是比缩写风的函数名更长?缩写风的函数名由于不隶属任何类,因此它往往需要填写更多的参数。举个例子,函数名(参数1,参数2)。而c#中如果某个类的实例需要做某事,它只需要变量名.方法名(参数2)就行了。调用方法的变量(实例)本身就代替了参数1的作用。而不隶属任何类的全局函数是做不到这样的。
而Python也不是一个纯面向对象的语言。
但是为什么设计者不把基本函数(api)放到基本类中,这就不得而知了。对二者还没有深入学习。
网友评论