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

导语 总结代码设计时容易忽略的场景,需求启动阶段就考虑好各个场景,可以提高代码的健壮性,有效减少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 条评论
登录 后参与评论

相关文章

来自专栏个人分享

Spark RDD简介与运行机制概述

主要分为三部分:创建RDD对象,DAG调度器创建执行计划,Task调度器分配任务并调度Worker开始运行。

854
来自专栏钟绍威的专栏

Java内存模型—JMMhappens-before规则

 有时候编译器、处理器的优化会导致runtime与我们设想的不一样,为此Java对编译器和处理器做了一些限制,JAVA内存模型(JMM)将这些抽象出来,这样编写...

1675
来自专栏https://www.cnblogs.com/L

【Spark篇】--Spark中的宽窄依赖和Stage的划分

父RDD和子RDD partition之间的关系是一对一的。或者父RDD一个partition只对应一个子RDD的partition情况下的父RDD和子RDD ...

1001
来自专栏java工会

阿里历年经典Java面试题汇总

1486
来自专栏搜云库

面试官最爱的volatile关键字

在Java相关的岗位面试中,很多面试官都喜欢考察面试者对Java并发的了解程度,而以volatile关键字作为一个小的切入点,往往可以一问到底,把Java内存模...

1706
来自专栏GreenLeaves

C#多线程学习一

一、概述:C#支持多线程并行执行程序,一个线程有他单独的执行路径,能够与其他线程同时执行,一个程序是由一个单线程开始,该单线程由CLR(公共语言运行时)和操作系...

2047
来自专栏简单聊聊Spark

Spark内核分析之DAGScheduler划分算法实现原理讲解(重要)

        接着上一篇,我们接着来分析下一个非常重要的组建DAGScheduler的运行原理是怎么实现的;通过之前对Spark的分析讲解,我们的Spark作...

872
来自专栏idba

浅谈 multiprocessing

一前言 使用python进行并发处理多台机器/多个实例的时候,我们可以使用threading ,但是由于著名的GIL存在,实际上threading 并...

710
来自专栏Java Edge

Java内存模型与volatile关键字Java内存模型(JMM)指令重排序对于Long和double型变量的特殊规则内存屏障有序性(Ordering)先行发生原则

36310
来自专栏北京马哥教育

Python实现线程安全队列

作者:愤怒的屎壳螂 来源:http://blog.csdn.net/hit0803107/article/details/52876143 最近学习spa...

3787

扫码关注云+社区