抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

八年 iOS 老开发的五点心得

2017 年 7 月 05 日

本文作者从 2009 年开始进行 iOS 系统的开发工作,中间参与开发了无数款应用。本文就是结合他多年心得,总结出的一些能够让应用开发更高效、更有趣且更具可维护性的方法。

1、保持原生

如果代码保持原生平台,就不会真正出错。任何跨平台的技术都可能会增加复杂性,并有可能给项目引入 bug。此外,报告的实际节省时间差异也很大。目前,我们只听说过有大型项目因跨平台而感到后悔,而未曾听说过大型项目因保持原生而感到后悔的。还是不要冒险比较好。

2、避免使用外部库

如今使用外部库完全没有必要,许多事情通过原生框架就能完成得很好。连接网络就是个很好的案例,我们无需某些炫酷的外部库才能解决,只管基于 iOS 的联网代码,根据项目需求构建自己的封装就好,这样的做法简单而具有灵活性。这一道理适用于几乎所有我们需要的功能,当然在一些实际案例中,我们不得已必须使用到外部库。比如想要在应用中嵌入谷歌地图,或者 Intercom 对讲机,那也是可以接受的。

3、不要使用软件包管理器(package manager)

既然我们不应当使用那么多外部数据库,也就无需软件包管理器了。只管将个别的外部数据库加入项目,然后借助专用工具来管理,这样更节省时间。

4、在代码中写入布局,不要采用 Storyboard

Storyboard 可以帮助初学者快速上手,但如果需要一些合理的动态布局的话,无论如何都要在代码中写入相关的逻辑,那么,干嘛不在一开始就这么做呢?我曾经见过许多项目中都有硕大的 Storyboard,其视图控制器中空无一物。更不要说自动布局了——这些只会给简单易写的内容增加复杂性。实际上,来自笔者的建议是:将所有布局逻辑写入代码,丢掉 Storyboard 和自动布局。简单,又具有极度的灵活性。至于具体做法,笔者有另一篇文章可以借鉴。

5、使用 Core Data

新上手 iOS 开发的程序员很少使用 Core Data,它很复杂,要入手就需要一大堆的样板代码,而且乍看没什么吸引力。刚开始 iOS 开发的头一年,笔者也花了一些时间进行深入研究,结果以失败告终。之后读到了这篇文章,于是决定再花些时间来研究。最后,一切清晰起来,使用 Core Data 的确是在 iOS 中处理数据的最佳办法,它非常强大,能够帮助开发者解决一些非常困难的问题,比如几乎每个应用都会出现的持久性问题以及传播数据变化的问题。诚意推荐 Core Data。

以上这些建议有助于开发者创建出一个可以存续数年,应对不同 iOS 版本的可维护项目。请保持简单。
https://hackernoon.com/5-key-learnings-after-8-years-of-ios-development-7190d8a01d09


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017 年 7 月 05 日 19:003515

评论

发布
暂无评论
发现更多内容

消息队列Kafka:入门基础

正向成长

kafka

写公号大半年,看看我都收获了些啥

架构精进之路

技术 总结 微信公众号 成长笔记

1480. 一维数组的动态和

小马哥

算法 七日更

第一次异地过年有感

石君

思考 情感

C语言第三方库Melon开箱即用之词法分析器使用

码哥比特

c c++ Linux 后端 框架

数据量大读写缓慢如何优化(5)【读缓存】

我爱娃哈哈😍

redis 缓存 架构设计实战 缓存设计

今日笔记

Nydia

【活动回顾】4步2小时,搭建爆火的语音聊天室

ZEGO即构

揭秘登上2021春晚舞台的黑科技-XR技术

架构精进之路

黑科技 vr 春晚 XR MR

3.Fiber(我是在内存中的dom)

全栈潇晨

React React Hooks react源码

这是我的第一次JavaScript初级技巧

魔王哪吒

JavaScript 学习 程序员 前端 2月春节不断更

ElasticSearch.03 - 基本原理

insight

elasticsearch 2月春节不断更

程序员成长第五篇:如何选择城市工作?

石云升

程序员成长 2月春节不断更 选择城市

日记 2021年2月17日(周三)

Changing Lin

2月春节不断更

EternalWallet为您提供快速、便捷、低价的国际汇款服务

Geek_c610c0

gradle中的增量构建

程序那些事

maven Gradle 程序那些事 构建工具

IDEA插件:快速删除Java代码中的注释

xiaoxi666

代码注释 Java 8 JavaParser

开发利器——C语言必备实用第三方库

码哥比特

c c++ Linux 后端 框架

微信红包封面,2021年为啥突然火了?

架构精进之路

春节 微信红包封面 商业洞察

13. 如果自己写的 Python 程序出错了,怎么办?

梦想橡皮擦

python 爬虫 2月春节不断更

诊所数字化:诊所老板为什么拒绝预约制?

boshi

数字化转型 医院 七日更

翻译:《实用的Python编程》01_05_Lists

codists

人工智能 后端 python 爬虫 列表 数据结构与算法

1.开篇(听说你还在艰难的啃react源码)

全栈潇晨

React React Hooks react源码

2.react心智模型(来来来,让大脑有react思维吧)

全栈潇晨

React React Hooks react源码

第四章作业-编写一个用例文档

秦挺

深度讲解背包问题:面试中每五道动态规划就有一道是背包模型 ...

宫水三叶的刷题日记

深度思考 LeetCode 动态规划 数据结构与算法 面试数据结构与算法

【LeetCode】数组拆分Java题解

HQ数字卡

算法 LeetCode 2月春节不断更

春节快过腻了?不妨关心下太空探索

脑极体

【STM32】PWM 输出 (标准库)

AXYZdong

硬件 stm32 2月春节不断更

C语言实用第三方库Melon开箱即用之多线程模型

码哥比特

c c++ Linux 后端 框架

给hugo博客添加评论功能

LanLiang

Hugo 静态博客 utterances

Study Go: From Zero to Hero

Study Go: From Zero to Hero

八年iOS老开发的五点心得-InfoQ