某学姐

Android Female Developer,Technology Fan,Reader。

学习方法总结

2018-05-12 | Comments

1、关于模块设计
2、关于源码学习

本文是自己的一些心得体会总结,记录下来免得忘记。

1、关于模块设计

(1)明确实现的功能

先明确该模块要实现什么功能,对外提供什么服务,从而确定对外接口。对外的接口/类名可能的几种形式,XXXManager/XXXLoader/Volley/EventBus/Picasso等,起名可以自行体会。

至此,对外接口/类确定好了。

(2)分析实现这个功能需要哪些角色

一个稍微复杂点的功能并不是所有逻辑都写在一个类里面,应该有很多角色,每个角色负责其中的一部分内容。这就相当于将任务进行分拆,每个角色分配一项任务。然后每个角色根据自己负责的任务,确定接口。

至此,每个角色对应的接口/类确定好了。

(3)理清各角色之间的关系

各角色之间是相互配合工作的,所以要理清楚各角色的调用关系。

至此,各角色对应的接口/类的调用关系确定好了。

上面3步之后,整个框架的整体设计差不多出来了。

(4)细化各角色的具体工作

针对每个角色,实现自己的功能怎么实现?需要用到什么技术?这个就是具体实现类的事情。

心得体会:
上面是自己根据平时的工作经验,总结的一些关于模块设计的认识。
整个项目前后端架构设计,或者某一端的设计和模块设计的基本思想是一致的,只不过问题的粒度不一样。
当然还要多看源码,多分析别人的设计,自己多练习,或许理解的会更深刻,自己设计也会更游刃有余一些。

2、关于源码学习

之前写源码总结的时候,总是一行行去跟进具体实现,贴大段大段的代码,花大量篇幅去讲哪个类调用了哪个方法,现在看来这种方法是有问题的。首先过分注重细粒度的具体调用关系看不清整个架构,最后搞半天很重要的几个关键问题没搞清楚。

现在的体会。阅读代码期间,可以跟进每一行代码,熟悉下整个流程;在写总结时,先画出大脉络,也就是所谓的这个模块的整体设计;然后再仔细研究这个模块一些重要类的实现,提炼出其中的关键技术点。

我认为这样的源码学习方法是更有效的。梳理出源码的整体设计图这个过程,有助于提高我们的工程设计能力。研究重要类的具体实现,提炼出关键技术点,有助于提高技术实力,更加理解一些原理性的东西。

多看看小米Framework团队的人的技术博客,因为他们平时工作就是做这块的,所以自然研究的比较深入和全面,值得借鉴。

之前有看过 金字塔原理 这本书,希望再结合这本书来思考下。

本文原文发自 某学姐, 转载请保留出处, 谢谢.

Comments