开发中容易忽略和挖坑的场景总结

导语 总结代码设计时容易忽略的场景,需求启动阶段就考虑好各个场景,可以提高代码的健壮性,有效减少bug数

Model

设计协议时,没有考虑数据无更新的场景,不考虑seq存在的必要性
写发送请求代码时,没有考虑频率限制,重入问题
对于高频场景,没有考虑做数据缓存
对于列表数据没有去重逻辑
即发即看的数据(比如帖子,视频),要考虑好假数据的key问题,以及回包后刷新这个临时key的逻辑
忘了考虑超时,重试,网络切换,切后台/前台等等场景
往枚举类型中间插入新值时,要考虑旧版本的数据兼容性
数据量大时,没有考虑分页拉取
数据异步返回时,没有考虑账号已经切换的场景

View

动不动就reload整个tableview
把数据请求代码写到view里面
    这里不是不可以,而是不好,因为view的生命周期系统提供相应的回调,所以很多同学都把数据请求写到view的init方法里,这不仅仅引起代码耦合问题,一些性能问题也难以规避
    没考虑点击的频率限制
动画只会简单实用UIView提供的接口,一些序列动画请直接使用coreAnimatino接口
尽量不要在一个动画的completion里启动另外一个动画。为什么?
    动画一旦启动,无法直接中断。一些放大动画会先记录原来的值,等动画结束再还原回来,这个值很可能在其他地方被修改,导致还原回去的是个错误的值。
随处可见的魔法数字
随处可见的重复布局代码

Controller

动不动就继承系统的VC
    请多组合,少继承
willAppear/didAppear 一定要考虑重入问题
如果一个函数能改成静态的,说明这个函数与VC无关,请放到VC外面去,即使只有一行代码

上报

尽量把上报放到功能实现类的外面

性能

tableview里设置了Cornerradio,boundtomask等属性,生成圆角图片
tableview上的label使用sizetofit方法
这方法有严重的性能问题,请异步使用coretext里的接口来计算size,以免阻塞主线程
上传队列里如果有很多的UIImage,请考虑先存到本地,到真正上传时再从io读进来
上传队列每个task都应嵌套在autoreleasepool中

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏偏前端工程师的驿站

JS魔法堂:函数节流(throttle)与函数去抖(debounce)

一、前言                                     以下场景往往由于事件频繁被触发,因而频繁执行DOM操作、资源加载等重行为,导致...

1756
来自专栏云瓣

深入Redux架构

关于redux 之前写了一篇通过一个demo了解Redux,但对于redux的核心方法没有进行深入剖析,在此重新总结学习,完整的代码看这里。(参考了React ...

2496
来自专栏海说

类设计的SOLID原则

SOLID原则是面向对象范式的核心 单一职责原则(Single Responsible Principle, SRP):对于一个类,应该仅有一个引起它变化的原因...

1860
来自专栏大前端_Web

javascript运行机制:并发模型 与Event Loop

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

421
来自专栏水击三千

UML学习-时序图

时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的。顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序。时序图...

2799
来自专栏性能与架构

浏览器的UI线程

所有用于更新用户界面的操作都是由浏览器的UI线程来完成 UI线程维护一个队列,把每个要更新UI的操作都做为一个任务添加到队列中,然后等UI线程空闲时再按顺序进...

2987
来自专栏阮一峰的网络日志

Redux 入门教程(一):基本用法

一年半前,我写了《React 入门实例教程》,介绍了 React 的基本用法。 React 只是 DOM 的一个抽象层,并不是 Web 应用的完整解决方案。有两...

4215
来自专栏非典型技术宅

Swift多线程:使用Thread进行多线程间通讯,协调子线程任务1. Thread的三种建立方式2. Thread的基本使用3. 使用NSCondition实现线程间通讯4. pthread

932
来自专栏『不羁阁』行走的少年专栏

iOS多线程:『pthread、NSThread』详尽总结

1384
来自专栏高性能服务器开发

libevent源码深度剖析三 libevent基本使用场景和事件流程

(1)libevent源码深度剖析一 序 (2)libevent源码深度剖析二 Reactor模式 (3)libevent源码深度剖析三 libevent基本...

961

扫码关注云+社区