类、方法及变量的命名是Objective-C编程的重要环节。通常会觉得OC的语言很繁琐,因为其语法结构使代码读起来和句子一样。
NSString *text = @"The quick brown fox jumped over the lazy dog.";
NSString *newText = [text stringByReplacingOccurrencesOfString:@"cat" withString:@"fox"];
此段代码看起来比较繁琐,但是准确的表达了开发者想做的事。在命名不像OC这般复杂的语言中,类似的程序可能会这样写
string text = @"The quick brown fox jumped over the lazy dog.";
string newText = text.replace("cat", @"fox");
这样写虽然简单,但是可能会疑惑:这两个参数是如何解读呢?是fox替换cat,还是cat替换fox;还有一个疑问:replace这个函数是把text里出现的所有fox都替换,还是只替换出现的第一个?其名称没有清楚地表达出这些意思。而OC的命名方式虽然长了一点,但是却非常清晰。
方法与变量名使用了“驼峰命名”,以小写字母开头,其后每个单词首字母大写。类名也用驼峰命名发,不过其首字母需要大些。
关于驼峰命名法,我推荐《禅与 Objective-C 编程艺术》
随说使用长名字可以使代码更易读,也应该尽量言简意赅。
NSString类展示了一套良好的命名习惯。
+string
工厂方法,用于创建新的空字符串
+stringWithString
工厂方法,根据某字符串创建出与之内容相同的新字符串。
+localizedStringWithFormat
工厂方法,根据特定格式创建出新的“本地化字符串”。
等等。。。
使用方法命名时,注意几条规则:
1.如果方法的返回值是新创建的,那么方法名的首个词应是返回值类型,除非前面还有修饰语,例如localizedString。属性的存取方法不遵循这种命名方式,因为一般认为这些方法不会创建新的对象,即便有时返回内部对象的一份拷贝,我们也认为那相当于原有的对象。
2.应该把表示参数类型的名词放在参数前面。
3.如果方法要在当前对象上执行操作,那么就应该包含动词;若执行操作时还需要参数,就在动词后面加上一个或多个名词。
4.不要使用str这种简称
5.Boolean属性应该加is前缀。如果某方法返回非属性的Boolean值,那么应该根据其功能,选用has或is前缀。
6.由“输入输出”来保存返回值的方法用get前缀。
类与协议的命名
命名方式应该协调一致。如果从其他框架中继承子类,那么务必遵循其命名惯例,例如,继承自UIView的自定义子类,那么累名末尾的词必须是view
总结:
1.起名时应遵从标准的Objective-C命名规范,这样创建出来的接口更容易为开发者所理解。
2.方法名要言简意赅。
3.方法名里不要使用缩略后的类型名称。
读Effective Objective-C 2.0 有感