API给参数的方式

清醒疯子 发布于 2015年08月26日 | 更新于 2015年08月27日
无人欣赏。
问题导向,用更少做更多。

给API传参数,和回调处理,是每个业务工程师在网络模块封装好的前提下,依然必须要做的事情。

传参,有几种方式,其中一种是这样的:

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

这种方式的好处是,通过方法名给参数,可以做最简单的类型检查。

另一种是这样的:

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

这种方式的好处是,可以在一个方法里给不同的API传参数。

最近项目中就有这样的需求,同一个API,通过不同的参数获取结构相同的不同数据。 如果是共用一个ViewController类,第二种方式就有明显优势。

当然,第一种方式,也可以通过包一层,模仿第二种方式。

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

后记(下面以聊家常为主,没时间没兴趣的朋友请直接忽略):

今天我在思考客户专家、技术专家、问题专家的路径选择。 1、研究一个客户的所有问题 2、研究一个技术的所有问题 3、研究一个问题的所有技术

我很确定,自己对客户专家没兴趣。 选择的问题在于,是往技术专家的方向走,还是往问题专家的方向走。 我本能更倾向于技术专家方向,在一个技术方向不断地积累知识、技能、经验。

然后,粉丝群里的一位朋友问了我一个问题:你怎么看待搞iOS XXX的人? 这个问题问得特别好。 我可以非常确定自己对 XXX不感兴趣。 那么问题来了,如果我对iOS的XXX或YYY不感兴趣,我怎么成为iOS技术专家呢? 于是,我很确定,我当不了技术专家。

我终于发现,自己只对有限的一些问题感兴趣。 所以,唯一的希望是努力成为问题专家。

@xiaotie 兄是问题专家。于是,我又再倒回去,看了他的几篇文章:

只学一点点:我的技术学习策略 http://www.cnblogs.com/xiaotie/archive/2011/12/10/2283384.html

裘千丈还是裘三尺——用挖矿的比喻说平台与门槛 http://www.cnblogs.com/xiaotie/archive/2012/11/28/2792665.html

ourcoders回复 http://ourcoders.com/thread/show/6615/

@xiaotie 兄除了专注于一类问题以外,还有一个突色,就是在解决问题的时候尽量用最少的技术去实现。

比如: 假设一个问题,可分为3部分。

1 2 3

一般,我们会被建议,不同的部分用最适合的技术去实现:

A B C

这种做法,看起来非常合理,缺点是你得学不少的不同的技术。

@xiaotie 兄的做法是:

A A+ A++

好处是只需要专注于一个技术,问题自然是可能A+的不如B做得好,A++的不如C做得好。

而目前业界的常见做法是这样:

D(A) E(B) F(C)

这种把现有技术再包一层的做法,将会非常累人,因为要学的技术层出不穷,越来越多。

@xiaotie 兄还计划进一步做成这样子:

a+ a++ a+++

这样可以进一步缩减更多的技术范围。挑战自然是,如果要从头去实现,需要对实现原理有足够的研究。

共4条回复
xiaotie 回复于 2015年08月26日

想事情我觉得可以分为这三个要素:目标、限制条件和手段(方法),目标和限制条件决定了方法。因此,阅读一篇写关于方法的文章,评判方法时,需要去揣摩对方没写出来的内容:他那样做的目的是什么,他当时那样做的限制条件是什么?

当只关注方法,而对目标和限制条件不清晰时,会感到迷茫和焦灼。你这几篇文章我都看了几遍,我感觉你看我的文章后,进入了误区。

目标就是目的,以游戏做比喻,这一阶段是刷经验,还是刷声望还是刷金币,还是存粹为了兴趣的休闲玩家?我揣摩你现在的核心目的应该是刷金币以在上海安家。而刷经验和刷声望是为刷金币辅助。经验(等级)不够,会影响刷金币,声望不够,也会影响刷金币。一家人至少得刷到一个月5万才能在上海过的比较安定。想尽快的达到这个目标,所以会焦虑,所以会在我说算法赚钱很轻松后,会迫切的去了解这方面的内容。所以也才会关注期货。

这个有点舍本逐末了。刷金币最核心的一点就是要有利用价值,没有利用价值时要创造利用价值。就技术人来说,别人能做的,我也能做,这是第一阶段目标。别人能做的,我也能做,并且能做的很好,这是第二阶段目标。即使达到这两个阶段了,你仍然没定价权,你的价格是由市场决定的。别人不能做好的我也能做好,这个时候你就拥有一定的定价权了。能否带一个团队,这也是一个技能。能否开创一个领域。这些都是有不菲的金币回报的。其实,你看我的文章,有个共同的特征,我一直以来都在搞一类事情,就是把别人搞不好的事情给搞好,围绕这些在做功夫。首先,我没有你那么大的生存压力,可以计划比较长久的去做一件事情,其次,我是自己干,可以控制做的事情是围着目标在做,我做不好的事情,通常客户那边有团队在做。这是我俩限制条件的不同。

所谓限制条件,就是两点,第一是你有多少筹码,第二是你有哪些缺点。筹码会带来机会,缺点会带来风险,没有筹码时怎么创造筹码,怎么克服致命的缺点,都是很重要的事情。你现在的筹码应该是家庭支持,及个人非常强悍的动力,以及目前iOS这个机会窗口。缺点是经济条件。这些筹码是会过期的,如果经济条件得不到改善,家庭支持、个人动力大约会在3-5年后消失,iOS这个机会窗口也大概还有3-5年的期间。在这个期间内如何让自己达到在城市立足和在行业立足这两个目标呢?其实达到这两个目标很简单,只要保持这个努力去弄三五年,只要做到能够带好一支5-10人的团队,或者拥有一两个别人无法替代的技能就够了。不用想太多,一想太多的话,三五年时间很容易蹉跎过去。每天起早摸黑在自己业务领域内刷经验刷声望刷金币再刷个两三年,就能刷够金币。

方法,就是怎么做事情。你现在应该是刷金币为主了,以前可能是刷经验和刷声望刷的比较多。月薪到了2W,刷经验(就是学习)的性价比其实并不高了,刷声望需要大量的精力和经验,对你这个阶段也没多大的性价比。但你现在还是在刷经验和声望,这会延迟达到目标的时间。如果你想尽快的达到你的目标,那么应该把方向转到刷金币上来。有一个事情,在你刷经验和刷声望阶段不是问题,而在刷金币阶段是个很大的问题:就是有很多先入为主的观念,以及容易下结论。我适合。。。,我不适合。。。,我认为。。。。,这样的。刷金币阶段需要思维方式有非常大的转变,就是换位思考。他适合。。。,他不适合。。。,他认为。。。。,要这样想。我适合,他不适合,觉得他很傻逼,这种观点很傻逼。我适合,他不适合,那么这就是一个合作/交易机会,要去想怎么去促进这个合作/交易。自己拥有的时间和劳力都是有上限的,靠自己给自己挣金币是挣不了多少的。所以要从别人那里挣金币,这就要满足对方的需求。什么是需求呢?他有你没有,这不叫需求(为啥学习对刷金币阶段意义不大呢?他有的,你再去有,他也不会买你的有),他没有又需要而你有的,这才是需求。有需求还不行,还要能买得起。有个例子我以前只对身边的人说,这里公开说一下,比如我卖算法,卖500一份,来的全是技术学习者和做毕业设计的,他们基础差,也没多少钱,需要大量的技术支持,一份500的算法,可能要做1-2天的技术支持,而如果我卖5000一份,那么这些人一个都不会来买,来的就是真正有需求的,迫切需要马上产品上线的,他们往往有比较成熟的技术团队,技术能力也强,经济能力也强,交易非常快,技术支持1小时搞定。想清楚这个例子对刷金币很有帮助。

我觉得我那几篇文章应该这样来解读:

求千丈和求三尺:这个说了价值创造的核心问题 —— 怎样将蛋糕做大。做深入,以互补的方式做事情,可以将蛋糕做大,大家是合作的关系,活的也都很好。而做广,不深入,大家就是竞争的关系了,蛋糕不大,每个人活的都不舒服。做深其实挺容易的,但是选择在哪个领域做深,不会和人竞争而会和人有最大的合作机会,是非常有挑战性的问题。

支点问题:你可以将它理解为筹码。要过一个河,没有桥又不会游泳,需要在河上布石墩,如何造石墩,将它一个个布下去,怎么个布法?有的人不布点,直接跳,死了。有的人最后将河上布满了石头,才开始走路,废了。你只需要布很少的石头就可以走过去。但那篇文章没说的是(大家在评论中说了这个问题),需要极大的技巧才能只借助很少的石头过河。如果技巧不够,可以多布几个石头。

以积极的心态做事情,以互补的心态做事情,以合作互利的方式做事情,去发现、去促成、去建立良性的正反馈,去推进、去建立良好健康的行业生态,把握好安全边际。得道者多助,失道者寡助,琢磨好这个道字。

xiaotie 回复于 2015年08月26日

不是说不要学习了,而要有目的的学习,不能撒网一样的全搞,也不能模仿式的乱搞。学习的目的是解决问题,以及让自己和其他人形成互补关系,和同事之间互补,和其他部门互补,和老板互补,和其他公司互补。团队离不开你,你就是团队骨干。公司离不开你,你就是公司骨干。行业离不开你,你就是行业大佬。不能用来解决当前面临问题的,不能用来和工作环境下其他人互补的,都不用学。为了兴趣而学,是另外一码事。

清醒疯子 回复于 2015年08月26日

1楼 @xiaotie

非常感谢小铁兄的耐心回复。回复里有好几个点都触动了我。我再好好想想。谢谢:)

清醒疯子 回复于 2015年08月27日

想事情要从目标、限制条件、手段三方面入手。

我现在的核心目标,确实是希望以在上海呆得下去。5万这个数超出我之前预料,我原以为25K到30K就差不多了。以5万为目标的话,我现在的努力方式确实是错的。

把着眼点放到自己对别人的利用价值上,要乐于为人所用。

能做,做好,补缺,这是非常好的技术阶段划分。我目前大概只处于能做阶段,正在努力向做好阶段进阶。等达到了做好阶段,进入补缺阶段,才有定价权。

限制条件是筹码与缺点。我的筹码只有很短的期间价值。要继续努力,去带队或培养独门技能。每天保持长时间的努力。

我应该把主要精力转向刷金币。通过换位思考,找到付得起钱的人的需求,深入研究,积极合作。做贵不做贱,量越大,维护成本越大。

做深是合作,做广是竞争。选择做深领域,关注合作能力。

要为将来做适当的布局。

得道者多助,失道者寡助。道,我认为是建立行业生态,做深合作。

互补式地学习。

我决定把精力放在解决问题与互补合作上。从同事、公司、行业三个由低到高顺序努力把事情做深提高自己的利用价值。谢谢@xiaotie 兄:)

登录 或者 注册
相关帖子