项目亮点优点
大的:
- 通过私有库将网络模块、Api模块、Utils拆分,做到多项目公用(离散Api->Base处理->AFN集约Api)
- 网络库的配置,动态Api
- 部分业务的实现逻辑还是可以借鉴的,虽然也有不少待优化的地方(目前想完善视频播放器及下载管理器两个部分)
小的:
部分UI感觉还是蛮漂亮(难)的。。
用到了Mantle,属性映射、转换等功能
用到了Lottie,使用AE生成的简单的JSON动画
项目的不足及反思
- 项目开始的时候架构没有做好,比如没有定义基类,这导致部分功能需要使用AOP实现,但这样实际是不太安全并且不推荐的,部分工具的中间层没有做好,这样导致在需求改变的时候需要多处修改(HUD,其实还好在BKTools里面)
- 类的单一职责原则没有很好的遵守,比如一些类的职责混杂,比如工具类BKTools,其中的一些方法是可以划分到分类中或者专门拆分出一个工具类的,又或者HBReaderClubCourseViewModel,里面的工具方法涉及到字符串格式化、路径生成及获取、视频处理、状态的存取等
- 避免硬编码,尽量避免写死可变的变量,如StatusBar的高度等,在iOS11中就改变了,使得很多硬编码的地方需要修改,还有就比如字体、颜色等最好找设计师索要设计风格概览,统一同类的控件的参数放在分类中,避免硬编码(Xcode9现在在IB中也可以自定义颜色和字体了)。
- 部分功能复杂的类在实现的时候,最好应用MVVM或者到组合的设计模式,将不同的功能实现分离,尽可能做到代码清晰,降低耦合。
- 老旧代码过多,导致文件过多,不能统一,历史包袱太重,部分设想无法顺利开展,比如使用Swift
小的:
- 网络库的设计没有考虑到所有情况,比如网络断开是否可以AOP统一处理等
网友评论