程序员的抽象能力是在了解计算机工作原理的基础上,借助于一种或多种编程语言将问题的解决方案抽象为计算机程序的能力。在前文《关于编程能力的思考》中提到了编程能力包括理论基础和系统设计能力,抽象思维能力恰恰就是决定编程能力的关键。
程序的本质是人的意志延伸到计算机的可识别的指令。计算机思维简单仅能识别 0 1 代码,本身不能解决任何问题,只能由人编写程序控制计算机解决问题,因此编程的本质就是人“教会”计算机解决问题。
编写程序总是离不开各种各样的数据结构与算法,其中又蕴含着深刻的数学思想。理解一种数据结构或算法,就是在理解解决方案的一种抽象。
随着业务越来越复杂、需求越来越多,程序总是在扩展和重构之间徘徊,在这个过程中,需要程序员深入理解业务并逐渐优化系统设计。正是在这样逐渐抽象的过程中,诞生了开发框架、中间件和业务框架。有着良好抽象能力的程序员能够根据业务的特点抽象出软件最合理的设计,使得程序具有良好的可读性、性能、扩展性、伸缩性、可用性和可靠性,而抽象能力差的程序员面对复杂的业务逻辑很可能束手无策导致代码臃肿难以维护。
如何提高编程的抽象思维能力,或者抽象能力又具体体现在哪些方面呢?作者认为有三个方面可以参考:善用自顶向下逐层分解的程序设计思想、熟练使用设计模式和对代码进行必要的重构。这三个方面能够体现出优秀程序员的抽象思维能力。
1、善用自顶向下、逐层分解的程序设计思想:
无论阅读或编写什么样的程序,都要始终坚持自顶向下、逐层分解。无论配置多少个显示器,打开多少个编辑器,都不可能一次展示出所有的代码,在阅读或编程时,始终把思维控制在一个屏幕范围内,看不到的代码都当做是黑盒,用抽象的思维去理解代码。小系统总是容易理解,大系统则很难一次把解决方案装入大脑,越大的系统越需要在设计和理解时进行抽象。
2、熟练使用设计模式:
设计模式是程序抽象到一定层次后自然而然产生的多种模式。基于这些模式,可以更好地理解和交流程序的架构和设计,是软件开发的成熟套路。设计模式是面向对象软件能够复用的基础,用好设计模式能培养程序员的抽象思维能力。
3、对代码进行必要的重构:
重构可以改善既有代码的设计,消除代码中的坏味道。任何一段代码都应该经历三个阶段,最初的设计阶段追求多快好省地解决问题,后来的设计优化用于扩展程序的新需求和解决 bug,最后的重构则把重点放在系统设计的优化上。重构是培养抽象能力的好方法,如何用更好的抽象模型描述解决方案以实现更好的扩展性、伸缩性、可用性、可靠性值得每个人深思。
每周 3 篇学习笔记或技术总结,面向有一定基础的 Java 程序员,内容涉及 Java 进阶、虚拟机、MySQL、NoSQL、分布式计算、开源框架等多个领域。关注作者或微信公众号 backend-develop 第一时间获取最新内容。
网友评论