最近在做一个改造的项目,过程中感觉很费劲,在以前的基础上进行修修补补,很是费劲,自己怕时间不足,不想进行大的重构,但是在下午的时候看到师父写的模块改造代码后,感觉结构很清晰,对原有复杂的代码进行了剥离,抽取出了自己的一套实现逻辑。
过后我在思考自己所欠缺的能力,抽象的能力还是很薄弱。抽象指的是从纷繁复杂的事物中提炼本质的过程,是一个具体到概念的过程, 例如苹果、香蕉、生梨、葡萄、桃子等,它们共同的特性就是水果。得出水果概念的过程,就是一个抽象的过程。在软件业,抽象能力的重要性怎么说都不为过,因为软件开发是一个高度复杂的智力活动,程序员经常需要面对、处理异常复杂的业务和逻辑,如果你不具备强大的抽象能力,无法把具体变成概念,进而驾驭概念进行思考, 你就很难降低问题的复杂度,从而陷入泥潭,无法自拔。 无论你学会了多么强大的程序语言,你的编程能力也很难有质的提高。
抽象是在把复杂的东西简单化,是一个整合内聚的过程,这体现了过程中你所具备的独立思考和深度思考的能力,比如在我改造项目的过程中,我可以仔细分析原有代码结构和代码逻辑,抽取出公共的业务部分,封装成接口进行统一调用,这需要抽象、总结与归纳,剥离出简单的方法出来。
说到底,软件设计和开发就是把现实中的问题映射的计算机的语言实现,但现实问题太复杂,细节太多,而且在不断的变化过程中,一般人很难同时对这么的细节进行思考 ,这时候就需要抽象。我们只有从纷繁复杂的现象中抽取事物的本质,从具体事物提炼出正交的概念,才能驾驭这些概念,才能在一个低复杂度的世界中进行思考。抽象能力的高低,很大程度上反映了一个程序员的能力的高低。