谈项目构建与维护

谈项目构建与维护

多去周边的世界看看。 -----Yee

链接

Yee的博客:谈项目构建与维护

第一阶段

  • 禁止使用xib.
  • 第三方service SDK禁止直接使用(更换的时候,代码如果太分散),必须构建一个中间层。
  • 图片名称不可出现中文。
  • 非公共、自行使用的组件,禁止编写宏。(真的会存在冲突)
  • 禁止编写对象或者Class的宏定义。比如:(#define YUInstance [YUClass manager])。
  • 依赖的frameWork必须修改源码时,需要在frameWork的加上当前项目的前缀。(为了防止与其他不可见SDK存在相同定义)
  • 禁止在逻辑代码中用宏去判断下一步该怎么做,(因为这个宏大多数情况下会使用多次,为何不维护一个全局变量。)

第二阶段

  • NSDictionary与NSArray使用时必须判断空或者转成model。
  • UITableViewCell中禁止使用KVO,应该由持有tableView的父UIView或更高级的视图(也可能为viewMdel)。
  • UITableViewCell中禁止去配置倒计时NSTimer,需要由更上层的组件去维护。
  • UITableViewCell的setSelected方法牵涉到逻辑处理时,禁止使用。(逻辑处理应该由上层下发)
  • UITableView与UICollectionView中禁止将cell设置为对象,当这个cell时考虑使用,其他情况不予使用。
  • 代码合并禁止跨版本合并(不能有侥幸心理,羚萌直播代码丢失了很多次了)
  • UIView、UIViewController、viewModel等Class的关键方法,如initinitWithFrameViewWillAppear静止编写逻辑代码,需要分发出来另起一个新方法。

第三阶段

  • 子对象禁止去操作父对象其他的子对象,必须借助父对象这个中间层。
  • block静止多层嵌套,需要下发出去。(以防止条件语句过多,导致逻辑层混乱,后序人员无法维护)
  • 懒加载方法中禁止setBlock等操作。(理由同上)
  • 反向传值禁止使用广播消息。(到底是谁接收/谁发送无从排查)

第四阶段

  • dealloc方法中要小心使用了点语法,以免对象无法销毁。
  • 组件需要自定义万能的初始化方法,参数为空时需要用nullable等关键字表明。

第五阶段

  • 更改以往版本功能,需告知测试人员,以防止功能丢失,代码丢失,线上问题等。(羚萌直播项目此类问题经常出现)。
  • 发版前一天出现问题,应该推辞发版。(这个需要多方面配合,羚萌直播经常出现此类问题,正式部署线上时间问题居多)

第六阶段

  • MVC、MVVM没有好坏,关键是如何处理组件的逻辑,而代码还能清晰明了。
  • tableView优化问题可做,无论是缓存height,取消不见的图片下载、圆角以图片更换,甚至于更换组件用Texture替换。需要考虑的是影响当前项目的瓶颈有那些,然后在开始动手。
  • 拦截常见的错误(NSArray越界,Map空,发生消息转发)
  • 启动时间优化(除了在程序启动后再加载非必须的组件,延后SDK的初始化,子线程预先加载必要图片),能否借助fishhook在dylb装载的时候优化。
  • 安装包的大小问题(无用代码,无用资源图片,减少SDK的使用)。

你可能感兴趣的:(谈项目构建与维护)