ARTS 打卡 Week 04
每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章
Algorithm
LC 76: Word Search
实现注意点:
搜索问题的套路
进一步搜索前标记当前位置不可走,之后恢复。这是一个空间非常节省的技巧。
Review
How not to get desperate with MVVM implementation
Apple MVC它的问题是会导致controller太大;由于view状态难以mock,导致controller的tests很难写
iOS中view和view model的binding实现方式:
Use KVO (Key-Value Observing) pattern. -- 简单易用,但会导致delegate膨胀
Use 3rd party libraries for FRP (Functional Reactive Programming) such as RxSwift and ReactiveCocoa. -- 需要对函数式编程熟悉
Craft it yourself. -- 作者举例了一个closure实现
文章内容回顾:
Made a binding theme using the closure. --使用closure实现了一套binding
Removed all controller logic from the View. --从view剥离逻辑
Created a testable ViewModel. --实现可测的ViewModel
对于中等规模项目,MVVM算是个不错的选择。
最后作者比较担心view model干得事情太多。
ps:实际项目中我也在使用MVVM,但感觉不少地方有些蹩脚。在Android中,MVVM + LiveData + Coroutine的组合用起来还是很happy的。
Tips
如何阅读别人的代码?
个人笔记:
确定阅读代码的目标
我要评估是否引入某个第三方模块;
我要给某个模块局部修改一个 Bug(可能是因为使用的第三方模块遇到了一个问题,或者可能是你的上级临时指定了一个模块的 Bug 给你);
我要以某个开源模块为榜样去学习;
我要接手并长期维护某个模块。
阅读代码时,需要有产出 -- 程序的架构设计 (个人评:没文档产出,代码看得快,忘得也快)
理解架构核心脉络
首先,把公开的软件实体(模块、类、函数、常量、全局变量等)的规格整理出来
看 example、unit test 等。这些属于我们研究对象的客户,也就是使用方。它们能够辅助我们理解各个软件实体的语义
进一步证实或证伪我们的结论。通过重点函数或类理解业务流程,印证我们的猜测
确保我们正确理解了系统,就需要将结论写下来,形成文档
理解业务实现机制
在必要情况下,才研究实现机制(因为这很耗费精力)
确定目标 (明确知道自己要了解系统哪一块)
梳理关键业务流程 (程序 = 数据结构 + 算法),理解核心数据结构和算法
剩下来就是理各个 UserStory 的业务流程(与手头工作相关的)
Share
熟悉与效率
一个月前,我加入一个iOS开发项目。这一个月可以描述为“一周多速成iOS开发,写了两周多业务逻辑”。
同样的功能放在在Android项目中,我可能只需要三分之一的时间来完成。
以前我总认为自己学习能力还可以,可以很快适应新平台、新项目,杂七杂八学了不少,俗话说“技多不压身”嘛。但经过近两年频繁换项目之后,我认识到对一个平台、一个项目的“熟悉”度,是很重要的(对公司),也是很困难的(耗费个人大量精力)。做技术,终归要深入下去,对所从事领域足够熟悉(参考浩哥分享的google技能评级卡片),才能做到高效做事,突破天花板。
目标与结果
最近小孩小学入学择校,因为房本年限和工居年限不足,没有被家门口的一所名校分校择校录取到。小区预估择校录取了16个,除了京籍,房本、工居都在10年往上。为此,我和爱人还是不免有些失落;爱人去学校门口看完录取单,发微信告知于我时感慨:“有一种名落孙山的感觉”。
这个事情给我们的教训是,越是竞争激励的事情,越要尽早准备。
回想北漂这十年,可能从有了孩子开始,才考虑生活方面的规划和安排。生活方面的很多事情,常常处于被动、被迫,缺乏明确的家庭目标和计划。互联网人,还是要花一些心思来积极面对生活,花时间去理解社会行为背后的原理,制定明确的家庭目标,推进达到目标结果。
版权声明: 本文为 InfoQ 作者【teoking】的原创文章。
原文链接:【http://xie.infoq.cn/article/e5598da53314e3c48d8664434】。文章转载请联系作者。
评论