让我们写个优雅高效的工具吧

FileKit 是我今天看到的一个库, 本来还以为是一个 iOS 的文件管理框架, 我想想无非就是 iOS bundle 内的那几种文件夹, 这种东西一查就知道了, 但是显然的, 它其实是为了 swift 在 cocoa 和 linux 上使用而出现的, 当然既然是工具类库, 其实也就应该没有什么高深的知识了, 有的是作者对我们操作的各种封装, 工具的好坏我感觉也就是 效率和功能, 所以如何能找到痛点, 并且以 简洁 高效 优雅 的方式写出来, 这就是考验我们功力的地方了. 正好, 今天我就来说一下如何写出一个好的工具.

工具需要/能够帮助我们做什么

工具能够帮助我们的就是把复杂的事情变得简单, 把啰嗦的事情变得简洁.
举文件管理的一个简单例子, 我们要实现某个对象和文件的读写的时候,往往要先把对象转化为一个 data, 然后再进行文件存储, 那么其实这个过程在我看来就是啰嗦的.

说到这里, 就该说到我所认为的工具应该有的样子是什么呢:

就是输入参数 得到结果

工具隐藏了所有的中间状态, 因为那些并不是我所关心的, 一个对象是否需要变成 data 我不关心, 保存是否成功才是我所关心的. 而且我希望的能够重复的在不同地方都可以使用这个工具

那么我们说到这里其实已经说出了工具核心 -- 封装和复用, 这里的封装就不用多说了,就是把代码扔到函数中, 而复用我要用我自己的理解说明一下, 我所理解的复用是工具的方法的调用不应该相互影响, 这个就有点函数式编程的味道了, 无状态. 当然, 这个核函数式编程还是千差万别的.

虽然我上面说工具不应该相互影响, 但是这个也是相对的, 在为了效率的前提下, 我们往往要对工具做一些配置, 或者对线程进行一些调度, 或者把同时运行的相同的工作合并起来, 这些都是我们要考虑的.

那么如何写好一个工具呢

如果一定要强行给好的工具加一些特性的话, 我觉得我们应该从这几个方面进行思考和优化

  1. 从需求分析
    上面其实已经简单的说了一下, 工具就是把我们的操作封装起来, 那么我们到底到把那些操作封装呢, 这是一个问题, 我的理解就是
    1. 第一种情况是把那些使用频次很高的操作组合进行封装
    2. 第二种情况就是把逻辑或者操作复杂的操作进行封装
    3. 如果一定要把什么东西都凑成 3 的话, 那么第三种情况我认为就是把枯燥的/或者不适于人类做的事情使用工具, 比如说大段文的本修改或者对某些事物进行监听
  2. 从使用者的角度出发
    工具好不好用, 不仅要看他能不能满足我的需求, 其次当然也要看用起来爽不爽
    1. 对开发者友好是个很重要的前提, 如果你这个工具很好很吊,但是完全没有文档,难道你希望使用者自己去看源代码吗,显然是不可能的,所以好的借口设计和文档是好的工具必备属性
    2. 使用者都是贪心的, 他们往往希望一个工具能够满足他们所有的愿望, 所有的使用场景, 所有的需求, 所有喽, 满足他们, 尽可能的满足他们, 给他们自定义的权限, 尽可能的考虑所有的使用场景
    3. 不要把使用者想的太聪明, 所以不要对使用者传进来的东西深信不疑, 去验证这些东西, 当他们出现错误的时候也不要给使用者留下任何后患, 比如说发生错误的时候要清理所有的临时文件等等
  3. 最后要说点什么,恩,这个就是我最后的感触了了,就是作为一个工具要解决问题,要先集中一个方向去做,不要在很早的时候就试图去解决一些很大的问题,但是最后其实每一个小问题都不能很好的解决.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容