一個(gè)小例子介紹Obj-C的函數(shù)命名方式
對(duì)于以前做C#或者JAVA開(kāi)發(fā)的朋友而言,初次接觸iOS開(kāi)發(fā),Obj-C的函數(shù)命名方式可能會(huì)感覺(jué)非常不習(xí)慣。
尤其是打開(kāi)AppDelegate.m,映入眼簾的代碼竟然是:
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- // Override point for customization after application launch.
- return YES;
- }
不知道會(huì)不會(huì)有朋友和我當(dāng)初同樣的感覺(jué)——天啊,這也太長(zhǎng)了?。?!
其實(shí),在Obj-C中,上面這個(gè)函數(shù)的函數(shù)名應(yīng)該是:
- - (BOOL)application:didFinishLaunchingWithOptions:
括號(hào)后面跟隨的application和launchOptions是在函數(shù)內(nèi)使用的參數(shù)。
我們可以將這個(gè)函數(shù)解讀為“應(yīng)用程序:完成啟動(dòng)使用選項(xiàng):”。
其中“應(yīng)用程序”冒號(hào)后面的參數(shù)顧名思義就是應(yīng)用程序自身。
而“完成啟動(dòng)使用選項(xiàng)”冒號(hào)后面的參數(shù)顧名思義就是啟動(dòng)的選項(xiàng)。
這里我用了兩個(gè)“顧名思義”,對(duì)就是顧名思義!在Obj-C的函數(shù)命名的方式有點(diǎn)類(lèi)似于自然語(yǔ)言,相信大家會(huì)像我一樣,隨著對(duì)iOS開(kāi)發(fā)的逐漸深入,會(huì)越來(lái)越適應(yīng)甚至喜歡這種命名方式的。
下面再舉一個(gè)例子,如果我們?cè)趈ava中定義一個(gè)加法的函數(shù),大概會(huì)用如下方式:
- /**
- * 計(jì)算a+b的結(jié)果
- * @param a
- * @param b
- * @return 返回a+b的和
- */
- public int add(int a, int b) {
- return a + b;
- }
在java中定義函數(shù)時(shí),通常我們會(huì)習(xí)慣編寫(xiě)一個(gè)簡(jiǎn)單的注釋?zhuān)绱艘粊?lái)我們可以在程序的其他位置,利用eclipse的智能提示看到這些參數(shù)分別代表什么意思,還可以使用Javadoc工具生成程序文檔。這是非常方便而且有意義的!
而在Obj-C中我們會(huì)如何做呢?首先定義一個(gè)函數(shù),代碼如下:
- - (NSInteger)addA:(NSInteger)a withB:(NSInteger)b {
- return a + b;
- }
而在調(diào)用該函數(shù)時(shí),Xcode的提示會(huì)大概如下所示:
- [self addA:(NSInteger) withB:(NSInteger)];
此時(shí),我們可以把這句話解讀成“加A和B”,有沒(méi)有覺(jué)得更容易理解一些啊?應(yīng)該會(huì)的,呵呵。
在Obj-C中,如果養(yǎng)成良好的函數(shù)命名習(xí)慣。相信隨著時(shí)間的推移,你會(huì)發(fā)現(xiàn),需要寫(xiě)的注釋會(huì)越來(lái)越少。盡管在Xcode中沒(méi)有類(lèi)似于 eclipse的智能提示,但是這并不會(huì)妨礙我們一目了然地看明白每個(gè)函數(shù)都是做什么的,以及它們都需要什么參數(shù),乃至各個(gè)參數(shù)都分別應(yīng)該是什么類(lèi)型的。
一起來(lái)享受快樂(lè)的iOS開(kāi)發(fā)之旅吧~~~