首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发中容易忽略和挖坑的场景总结

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

作者头像
MelonTeam
发布2018-01-04 16:57:31
8590
发布2018-01-04 16:57:31
举报
文章被收录于专栏:MelonTeam专栏MelonTeam专栏

导语 总结代码设计时容易忽略的场景,需求启动阶段就考虑好各个场景,可以提高代码的健壮性,有效减少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中
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Model
  • View
  • Controller
  • 性能
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档