V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
cralison
V2EX  ›  iDev

类功能单一化,代理,代理的代理

  •  
  •   cralison · 2015-08-28 07:57:30 +08:00 · 1432 次点击
    这是一个创建于 3395 天前的主题,其中的信息可能已经有所发展或是发生改变。

    时间有限,选择深入,放弃广博。

    我把 1000 行的 ViewController ,修改成只有 300 行。也把原来需要 15 个 ViewController ,修改成只用 1 个 ViewController 。

    这样写代码,看起来慢,实则比什么都快。因为下一个 ViewController ,我可以写得同样小、同样漂亮,后面的维护修改将更加一目了然、路径分明。

    怎么做到的呢?
    很简单:建一个对象,把本需要在原地处理扔到这个对象里面去做。

    那么,我的 ViewController 建了什么对象呢?
    4 个。
    1 、 ViewModel
    2 、 APIHandle
    3 、 StoreHandle
    4 、 RouteHandle

    把 ViewController 里做的事情分类,同一类的事情交给同一个对象处理。
    这样可以剥离依赖,使类功能更专一,更利于复用,更容易测试维护,自然,程序就会写得更快更好。

    对象之间互相注册代理,通过协议消息传递行为和数据。
    更利于以后需求迭代、性能优化。

    一块代码,是扔给代理,还是本地处理,主要看代码是否涉及本类实例变量。所有涉及本类实例变量的代码,都应该通过“代理的代理”的形式,返回本地操作。

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

    长久以来,人们通过更广博来增加安全感。
    多一个技能,多一份工作,多一位朋友,多一本书,多一个孩子,多一笔存款。
    但是,竞争无处不在,不深刻就不会有优势。输家再多,还是输家。弱项再多,还是弱项。肤浅再多,还是肤浅。
    人们最终都会发现,把全世界犁一遍,除了天怒人怨、破坏生态、累死自己以外,别无用处。而定点深挖,即使收获不到金子,也至少可以得到一口活命的井水。
    深入,最大的误解风险,是怕没有市场。辛辛苦苦深入半生,结果出来的东西没人要,使得自己一生潦倒。
    要知道,深入,是过程,不是结果;是技能,不是印章。
    一个能深入一点的人,只要愿意,就能深入一切。
    所以,只需深入,无需惶恐。
    做深是合作,做广是竞争。

    上午,我说服了老婆要深入。晚上,我说服了老婆要广博。总算把深入的好处和风险都过了一遍。
    通过这样的遍历,对深入的好坏,有了更全面的认知。
    用户需要新功能,没错。但是,用你的新功能,还是用别人的新功能,就没那么简单。况且,有些新功能,只有足够深入才可能做出。
    在这方面,苹果是最好的代表之一。苹果的软硬生态工艺,已经深入到让对手无从复制。当然,你可以做出同样的装饰骗消费者下单,却永远无法给出同样深度的体验。
    近一点,老罗靠着局部深入优化,硬生生地打开了一片市场。“虽然不是特别起眼、重大,但只要用过了,就回不去了。”
    这种小小的“回不去”,积累多了,产品在消费者的心里就树立不可动摇地位置。竞争对手将会越来越崩溃。因为复制成本越来越高,模仿又只等于帮你做宣传。

    深入是积累优势,广博是浪费青春。

    回到现实,不要嫌公司、项目太 Low ,好好去深入去优化。
    记住,深入是过程,是技能。是内在,是上身的东西,永远不要去担心外放不足,或优势消失。

    Vernsu
        1
    Vernsu  
       2015-08-28 09:19:38 +08:00
    Show We Code ?
    iyangyuan
        2
    iyangyuan  
       2015-08-28 11:12:05 +08:00
    no code say jb?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2524 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 147ms · UTC 11:40 · PVG 19:40 · LAX 03:40 · JFK 06:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.