我学过C/C++、Python、Matlab和其他许多语言,但Objective-C中的方法名让我感到非常惊讶。使用长名称有什么好处?为什么其他语言没有使用长名称呢?非常感谢。
这类似于代码规范。通常它非常有用。
但是你可以按照自己的想法命名方法。同时注意,不强制要求为所有参数命名。例如,你可以创建一个方法
- (void)makeDateFromDay:(int)day month:(int)month year:(int)year
[someObject makeDateFromDay:18 month:2 year:2014];
- (void)makeDateFrom:(int)day :(int)month :(int)year
[someObject makeDateFrom:18:2:2014];
MakeDateFromDayMonthYear()
吗?那不会更短。而且它是无用的,因为你必须计算参数并将其与名称相关联。 MakeDateFromMonthYearHourMinuteDoubleSecond()
有6或7个参数吗?因为前导参数名称接近于无用,所以一些编程语言根本不使用它,你必须记住它。相反,你可以使用重载,这是一种自描述、易于使用的技术,你不必记住任何东西。;-) 当你阅读具有描述性参数的Objective-C代码时,你几乎总是知道正在发生什么。 - Amin Negm-Awad简单的答案是,长方法名是自我描述的。(而且由于每个参数都通过另一个方法名部分引入,方法名会变得更长。)优点在于代码阅读非常容易,并且由于代码补全功能,手动输入整个名称并没有额外的惩罚。
Objective-C的方法名遵循比其他语言更多规则的约定。例如,方法名的最后一个单词是第一个参数的名称。
- (id)valueForRow:(int)row Column:(int)column
用C++来说,可能会是这样的:
void getValue(int row, int column)
- (id)valueForRow:(int)row column:(int)column
。返回值的方法应该以描述返回值的名词或名词短语开头,因此您不应该使用 get
等动词作为前缀。 - jlehr越多的方法,它们自己越长。
如果您考虑委托方法,在该方法中也有对从调用者继承的类的引用,因为这样可以对符合协议的类进行某种操作,这非常有用。
如果您假设有一个要执行大量计算的应用程序,例如商店应用程序,您不能使用相同名称(例如sum)声明所有方法,因为当您有多个具有相同名称的方法时,您开始失去对代码的控制。
许多程序员使用简短的语法来命名变量,例如:
a,b
但是当几个月后再次打开代码时,您必须重构程序逻辑以了解某个变量的作用。
给方法取一个长名称在团队合作中也很有用,以确保方法名称不被复制。