本周的两次课,主要讲的是软件设计、代码重构方面的内容,设计模式案例解析内容涉及著名的 JUnit 和 Spring Framework,还有李老师此前做过的 Hive 语法解析项目。由于近期项目比较赶,端午节后就要交付,周内天天都要加班,周六也没能逃过,两次直播我都没能赶得上。今天花了半天看完了李老师的回放,这个点才开始写一下学习心得。首先我们这个要交付的项目,就如李老师所举的例子,初期缺乏设计,软件代码僵化,一有需求变动,就得改很多很多代码,明明只是数据库+Redis,本应该都是常规操作的,搞得人心力憔悴。初期接手这个工程的时候,我也只是肤浅的进行重构,抽取了历史代码中的重复部分。按照老师说的五大原则,即
- 开闭原则,
- 依赖倒置原则,
- 里氏替换原则,
- 单一职责原则,
- 接口分离原则,
我们要牢记这些原则,其中比较容易贯彻的,应该是单一职责原则。我个人深有体会。一个冗余的类,分析 起来就会很累,在里面 Debug,都很容易绕晕。后续开发工程时候,一定要考虑按职责进行拆分,这样各个模块可以有机的组合,看起来一目了然,Debug 也能顺心执行。后续设计模式这块,我需要好好加强,在开发中不断思考,运用前辈们的设计经验。
在讲解 Spring 框架的原理的时候,李老师将 IoC 的原理和核心代码通过几行代码就说明白了,顺便讲解了单例模式,剖析了其实现的关键细节。李老师还透露说,部分面试场景会让面试者手写代码,平常都在 IDE 里开发的我,可能在这些场景里就会紧张,甚至写不出来,在准备面试的时候,可能还需要针对性练一练,基础知识需要非常熟悉,可能才会比较坦然吧。再讲解 Hive 语法解析项目时,李老师详尽地讲解了一个复杂的工程如何通过设计原则,进行的重构,这段看了好几遍回放,受益良多。
以上。