API給參數(shù)的方式

問題導(dǎo)向,用更少做更多。

給API傳參數(shù),和回調(diào)處理,是每個(gè)業(yè)務(wù)工程師在網(wǎng)絡(luò)模塊封裝好的前提下,依然必須要做的事情。

傳參,有幾種方式,其中一種是這樣的:

[[RegisterApi alloc] initWithUsername:@"username" password:@"password"]

這種方式的好處是,通過方法名給參數(shù),可以做最簡單的類型檢查。

另一種是這樣的:

- (NSDictionary *)paramsForApi:(APIBaseManager *)manager
{
    if ([manager isKindOfClass:[XXX class]])
    {
        return @{
            @"username":@"ABC"
            @"password":@"123"
        };
    }
    return nil;
}

這種方式的好處是,可以在一個(gè)方法里給不同的API傳參數(shù)。

最近項(xiàng)目中就有這樣的需求,同一個(gè)API,通過不同的參數(shù)獲取結(jié)構(gòu)相同的不同數(shù)據(jù)。
如果是共用一個(gè)ViewController類,第二種方式就有明顯優(yōu)勢。

當(dāng)然,第一種方式,也可以通過包一層,模仿第二種方式。

[[RegisterApi alloc] initWithUsername:params[@"username"] password:params[@"password"]];

后記(下面以聊家常為主,沒時(shí)間沒興趣的朋友請直接忽略):

今天我在思考客戶專家、技術(shù)專家、問題專家的路徑選擇。
1?研究一個(gè)客戶的所有問題
2?研究一個(gè)技術(shù)的所有問題
3?研究一個(gè)問題的所有技術(shù)

我很確定,自己對客戶專家沒興趣。
選擇的問題在于,是往技術(shù)專家的方向走,還是往問題專家的方向走。
我本能更傾向于技術(shù)專家方向,在一個(gè)技術(shù)方向不斷地積累知識(shí)、技能、經(jīng)驗(yàn)。

然后,粉絲群里的一位朋友問了我一個(gè)問題:你怎么看待搞iOS XXX的人?
這個(gè)問題問得特別好。
我可以非常確定自己對 XXX不感興趣。
那么問題來了,如果我對iOS的XXX或YYY不感興趣,我怎么成為iOS技術(shù)專家呢?
于是,我很確定,我當(dāng)不了技術(shù)專家。

我終于發(fā)現(xiàn),自己只對有限的一些問題感興趣。
所以,唯一的希望是努力成為問題專家。

@xiaotie 兄是問題專家。于是,我又再倒回去,看了他的幾篇文章:

只學(xué)一點(diǎn)點(diǎn):我的技術(shù)學(xué)習(xí)策略
http://www.cnblogs.com/xiaotie/archive/2011/12/10/2283384.html

裘千丈還是裘三尺——用挖礦的比喻說平臺(tái)與門檻
http://www.cnblogs.com/xiaotie/archive/2012/11/28/2792665.html

一個(gè)回復(fù)
http://ourcoders.com/thread/show/6615/

@xiaotie 兄除了專注于一類問題以外,還有一個(gè)突色,就是在解決問題的時(shí)候盡量用最少的技術(shù)去實(shí)現(xiàn)。

比如:
假設(shè)一個(gè)問題,可分為3部分。
1 2 3

一般,我們會(huì)被建議,不同的部分用最適合的技術(shù)去實(shí)現(xiàn):
A B C
這種做法,看起來非常合理,缺點(diǎn)是你得學(xué)不少的不同的技術(shù)。

@xiaotie 兄的做法是:
A A+ A++
好處是只需要專注于一個(gè)技術(shù),問題自然是可能A+的不如B做得好,A++的不如C做得好。

而目前業(yè)界的常見做法是這樣:
D(A) E(B) F(C)
這種把現(xiàn)有技術(shù)再包一層的做法,將會(huì)非常累人,因?yàn)橐獙W(xué)的技術(shù)層出不窮,越來越多。

@xiaotie 兄還計(jì)劃進(jìn)一步做成這樣子:
a+ a++ a+++
這樣可以進(jìn)一步縮減更多的技術(shù)范圍。挑戰(zhàn)自然是,如果要從頭去實(shí)現(xiàn),需要對實(shí)現(xiàn)原理有足夠的研究。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容