工作总结 七月 07, 2020

A song of TDD and BUG - 主歌

文章字数 45k 阅读约需 41 mins.

TDD 与 BUG 的爱恨情仇(卷二),本系列链表头部请戳 A song of TDD and BUG - 前奏曲 FBI Warning我知道你在想啥,但是你想多了,我只是想给你一个强烈但不失友善的警告(Friendly But Intense Warning)而已。在了解 TDD 之前你需要知道,TDD 只是一种开发模式,不是圣经也不是行为准则,我们需要辩证的去看待 TDD,可以参照... 查看全文

工作总结 七月 07, 2020

A song of TDD and BUG - 主歌

文章字数 45k 阅读约需 41 mins.

TDD 与 BUG 的爱恨情仇(卷二),本系列链表头部请戳 A song of TDD and BUG - 前奏曲 FBI Warning我知道你在想啥,但是你想多了,我只是想给你一个强烈但不失友善的警告(Friendly But Intense Warning)而已。在了解 TDD 之前你需要知道,TDD 只是一种开发模式,不是圣经也不是行为准则,我们需要辩证的去看待 TDD,可以参照 TDD 并且结合自己的实际情况选择最适合自己的开发模式,毕竟适合自己的才是最好的。这你可能会问了,刚你还说 TDD 又是最耀眼的新星,又是救世主的,现在咋又说人家坏话。我想说的是,你毕竟还是 Too Young,要我不进行一波商业吹嘘,你可能也不愿意往下看啊,流量称王的时代,我不得忽悠你多看几眼啊。 什么代码需要写单测并不是所有的代码都需要你写单测来保证的,总结起来就是“三个不一个要”: 不给自动生成的代码写 Unit Test(比如生成的 getter setter),我们要相信 Xcode(或者其他编辑器),出了问题是天灾,需要我们单独分情况处理,然后给我们自己处理的代码写单测。 不给... 查看全文

工作总结 六月 14, 2020

A song of TDD and BUG - 前奏曲

文章字数 4.6k 阅读约需 4 mins.

TDD 与 BUG 的爱恨情仇(卷一) 前言这是最好的时代,TDD 的出现终结了 BUG 横行的蛮荒,从此 Coding 世界进入了秩序与光明;这也是最坏的时代,历史的包袱,无尽的重构,博弈与妥协充斥在每个角落。从电脑和编程出现之初 Bug 就如影随形,那只飞到 Mark II 上的 Bug 穿越了大半个世纪,仍是程序员们在梦中惊醒,在镜前流泪的主要原因。那 Bug 为什么会出现?有没可能消除 Bug? 这是个哲学问题。 Bug的相对性原理有人说 Bug 是一个 Human Error,是可以通过一定的约定,准则和谨慎去避免的。的确, Bug 的多少很大程度上是程序员的谨慎程度来决定的。但是,我先把我的结论放在这, Bug 是无法避免的,也就是说他是一个在排除了人为错误之外的系统性的存在。 这听起来很像给自己开脱(其实就是给自己开脱),但是我是有理(狡)论(辨)支持的。比如之前有人提出来过抽象漏洞定律来解释这个问题,但是这个太笼统,听起来也太抽象,我想用自己的理解来解释一下。首先我们需要定义 Bug 是什么,维基百科中 Bug 的定义是程序错误。我们在这给它一个更明确,更有意... 查看全文

学习笔记 四月 26, 2020

都是 Apple 惹的祸 - Coordinator Pattern 的前世今生

文章字数 1.3k 阅读约需 1 mins.

本文主要记录在学习 Coordinator Pattern 是的心得。 前言最近工作中需要对一个升级 B 端的项目,本来只是更新 UI,对 H5 进行支持的简单工作,但是我灵机一动(用大脑一抽可能更好一点),决定对项目进行一次重构,目标 MVVM-C。对于 MVVM 可能大家了解的比较多,但是后边那个小 C 是什么可能有些小朋友并不是特别清楚。这种时候,从小就开始训练的阅读理解能力就派上用场了,看一眼文章题目你就知道这个 C 代表什么了。什么? CyberHex?虽然我很开心,但是我替你们的语文老师伤心三秒,1,2,3,好了。其他人应该都猜对了,对!就是 Coordinator。那到底什么 Coordinator 的设计模式?它是怎么产生的?它解决了什么痛点?接下来我就带大家走进 Coordinator 的内心,从而对它有一个更深的了解。 背景从文章题目“都是 Apple 惹的祸”你可能已经看到了一些问题的端倪,没错,Coordinator Pattern 的出现就是为了弥补苹果在设计 UIKit 的时候的一些疏忽(不知道是有意还是无意的)。多年前一个风雨交加,电闪雷鸣的夜晚,... 查看全文

学习笔记 十一月 27, 2018

iOS 中的并发性问题

文章字数 11k 阅读约需 10 mins.

本文主要记录在学习 iOS 的过程中关于并发性的问题。 前言之前在开发过程中曾经遇到过挺多次并发的问题,比如在自己写 networking 代码的时候会遇到一些(对!我是自己手写 networking code, 老板禁止使用 Alamofire, 所以我就自己写了一个很小的库,以后有机会跟大家分享),但都是比较皮毛的东西,感觉自己并没有深入理解并发行的问题,现在下定决心好好研究一下并发性,毕竟面试会考挺多而且以后也会碰到很多。 背景现在很多事情都是多线的,电脑是多核的,手机是双卡双待的,你看我,我可以一边写博客,一边玩LOL(呃,不知道为什么就抄袭了爱情公寓的台词,不过好像有点讽刺)。其实我是想说,由于现在手机是多核的,意味着同一时间手机可以同时处理多个问题,于是很多现代操作系统比如 iOS 和 OS10 就利用利用了这个特点而使用多线程。在这里我就想提出一个千古难题,进程和线程的区别是啥,说实话,到今天之前我对这两个概念还是比较模糊。进程的定义是正在执行程序的一个实体,线程定义是程序的执行路径。简而言之,在 iOS 系统中,进程可以理解为就是一个 App, 而线程是程序执... 查看全文

学习笔记 十一月 25, 2018

Objective-C 中 Nullability 的使用

文章字数 7.7k 阅读约需 7 mins.

本文主要记录在学习 Objective-C 的过程中关于 Nullability 的问题。 背景我们都知道 Swift 和 Objective-C 可以同时存在于同一个 project 中,但想让他们俩兄弟同时幸福快乐和谐的生活在同一个项目中并不是一件容易的事。 Swift 小老弟最大的优势就是 Type Safety, 而 Objective-C 老大哥最大的“问题”就是可以有满屏的 nil。 在 Swift 中如果你想在不初始化一个变量的情况使用这个变量,你必须要提前告知 Xcode 这个变量是 optional 的, 但是 Objective-C 就没有这样的要求。 那么怎么解决这个问题呢,苹果最后引入了 Nullability 来给 Objective-C 加入一些安全保障。 举例在 Objective-C 中有以下代码: 123456789// Objective-C@interface User: NSObject@property (copy, nonatomic) NSString *username;@property (copy, nonatomic) N... 查看全文
0%