我之前的学习方式,大部分是直接学习技术,然后直接使用该技术,从零开始堆代码,解决实际问题。
这种方式的好处时,对技术基础部分理解比较深入;学习是一步步深入的,难度相对小些,不会因为太难而出戏或放弃。
坏处是,缺乏大型项目的最佳实践经验。对一些技术的组合及使用,全凭自己对新技术的理解和过往的经验。而这样的使用,很可能是「土方法」。虽说在小项目中也能实现功能,但往往不优雅、灵活性差。
与之相比,另一种学习及使用新技术的方法是:基于开源库学习。这些开源库,是对技术的完整及实际使用;并不是 Hello World 级别,而是真实可用于生产的使用。
比如,在学习 Ant Design 时,前一种使用是自己看完文档及各组件用法后,自己堆代码以实现业务逻辑。后一种是,继续学习 Ant Design Pro,然后在其基础上修改,或借鉴其整体代码并实现业务。Ant Design Pro 并不是对 Ant Design 简单的示例性应用,而是开箱即用、可用于生产环境的项目。
这样的学习方式,好坏几乎是与第一种方式反过来的。好处是,可以学到更专业的用法;坏处是,由于一下子要接触大量新的、和自己风格不同的代码,学习起来比较吃力;在没有大块时间或充分的心理准备时,很可能会进行不下去;这也是上周我拖延的原因。
不过,我今天硬着头皮看代码,确实是有些收获。需要指出的一点是,和在开源项目基础上修改的做法相比,个人三汤五割更好的是新起一个项目,把开源项目中好的、自己用得到的部分搬过来,并适配自己的代码风格和惯用法。通过这么一搬和适配,才能更好地理解、更有可能成为自己真正的积累。
博客原文:0408 - 从开源项目中学习