获得徽章 0
- 最近在梳理 Swift 4.2 以来的变动时,发现一个从 4.0 时代开始就被忽略的小细节,关于 Array。
为了完全与 Objective-C 划清界限,Swift 对 Array 进行彻彻底底的重构,进入 Swift 4.0以后,Swift 就将不少兼容 NSArray 的 API 移除了,这其中就包括一个使用频率非常高的 Array.index(of anObject: Any) -> Int
当你试图在敲代码时联想这个API,就会发现编译器没有任何提示,标准库里也找不到这个方法(此前一段时间里我一度认为这是编译器的 bug),但是3.0 时代遗留的代码却不会产生任何警告,甚至你还可以通过盲打来使用这个API,直到今天重新翻阅 Swift 文档才发现,这个 API 是确确实实被移除了,但为什么可以通过盲打来继续使用呢,这是因为 index(of anObject: Any) -> Int 已经「彻彻底底」变为 NSArray 专属了,当你以盲打的方式"强行"使用这个API时,编译器会自动为你的 Array 转换成 针对 NSArray 的兼容模式,实际上你调用的是 NSArray 的方法。
那 Array 难道没有提供相应的替代方法吗?当然有。在文档中我找到了这个方法: func firstIndex(of: Element) -> Int?
看着这个方法名已经很容易猜到它的作用,返回数组中最先匹配到该元素的索引值,NSArray 的内部对 index(of: ) 的实现出于性能的考虑也不外乎也是找到符合条件的第一个元素就停止寻找,直接返回索引值,所以这个方法应该就是替代方案,为了验证想法尝试了一下,果然如此
let array = ["1", "2", "3", "4", "5"]
let index = array.firstIndex(of: "3")
printLog("\(String(describing: index))")
/// print : 2展开评论10 - “其实,全部软件都有一个相同的目标:帮助其他人。
文字处理软件帮助大家编辑文档,浏览器帮助大家浏览网页。。。服务于动物或植物的软件,其目的还是帮助人类。。。即使你写的是程序库,它们也是为程序员服务的,程序员也是人。。。软件从来都不是用来帮助无生命事物的。软件要帮助的不是计算机,而是人。
软件的目标不是‘赚钱’或者‘炫耀智商’。。。即便赚钱和炫耀智商可以‘帮助’你,但这只是非常狭隘的帮助;相比为帮助别人而设计的,满足其他人需求的软件,仅仅考虑狭隘目标的设计,很可能收获糟糕的软件。
任何情况下,你所赚的钱都直接维系于你的软件能为他人提供多少帮助。。。。在做与软件有关的决策时,指导法则就是判断能提供什么样的帮助。各项需求也可以照这个标准排除先后顺序。哪项需求能为人们提供最大的帮助,就应当赋予最高的优先级。
所以,软件设计科学的目标应该是:
1. 确保软件能提供尽可能多的帮助
2. 确保软件能持续提供尽可能多的帮助
3. 设计出程序员能尽可能容易开发和维护软件系统,这样的系统才能为用户提供尽可能多的帮助,而且能持续提供尽可能多的帮助
-- 来自《简约之美:软件设计之道》”
作者认为软件的目的是服务他人,而且软件是否成功在很大程度上取决于软件本身对人的帮助有多大。
这一点很值得程序员,设计,产品经理思考:
现在这个需求或设计是否真的可以帮助我们的目标客户;如果有,帮助大还是小?如果帮助小,那如何改进可以更好地帮助他们?
现在这个代码库是否真的可以帮助我们的业务方?这些功能真的都是可以解决业务方的问题么?是否有些功能是可有可无的?业务方接过来用是否会觉得不方便?或者同事看了我的之后是否能马上理解我代码的意思,不需要花费太多的时间和精力去理解和修改它们?
另外,作者所说的需要可持续提供帮助这一点也非常好。
比如这个需求将来能否还有可以做得更好的可能?
这段代码或者模块扩展性是否很强?是否容易修改?出现问题的时候我们能否积极响应并修复?
说到底我认为这是一个格局的问题:
你是只为了挣钱,拿到钱就满足了,还是为了真心想帮助他人,解决他人的问题?
你是只为了KPI,完成某个特定任务而已,还是为了真心想帮助同事,帮助公司的客户,让公司越来越好?
格局决定高度,你想在哪个高度呢?展开315 - 118
- 趁着在地铁上把今年的年终总结写了,
小预告下,我司 Linmi 同学的年终总结正文正在上线 ing
2018 年的总结用 三、二、一 来概括吧
### 三
三月从 SF 离职了,很多人说你不是在 SF 吗?嗯,离职了,我觉得在朋友圈这地方和别人说,是的我离职了总有一种需要讲离职感谢的意味,谢谢我的领导们的教导巴拉拉,当然不落俗套的,我很感谢大管家和 70 的教导,的确学到了不少,以及 70 的求同存异思想一直被我记着。
六月去一家公司呆了三个月,怎么说呢?我一直秉持的原则是在其位谋其职,专业的事情交给专业的人,但是碰到产品不专业我只能动手了,不赘述了,我司的产品还是很优秀的。
三,也是我经历的公司数量,及在掘金大本营呆的月份数,也是和 SF 认识的人吃过的饭数。
### 二
两座城市,杭州和北京,作为一个远程工作者,我的领导韬韬和我说好去掘金磨合三个月,开个小玩笑,磨合完了他们也走了
二也是沸点经历过的两个大迭代,一是变动态,二是动态加推荐
二还有什么呢?守候大兄弟送的公仔数,和树神见面数-一次在 Service Mesh 的沙龙一次在海底捞吃火锅,也是沸点办的两场算大的活动数,代码写诗和中秋约码,还有超哥提供技术支持的掘金辩论赛,那应该是三了,还有我直属领导的数量,韬韬和张文,都很棒。
## #一
说实在这是为了凑三二一写得,真要说的话,一个中心?一心一意弄好小沸点?依旧单身?一次旅行,毕业六年了终于回了一趟成都。
最后我都写完年终总结了,你的呢?展开2113 - 微信这个浓眉大眼的,也超过150M了啊,下了飞机一开网络发现各种群都在聊微信大版本更新,结果不让下载...
我大钱包现在为了坚守移动网络下载底线,已经巨P们下死命令了,各业务线谁也不能申请包大小了... 想加功能就删老功能老代码去...12