第二周学习总结
这周学习了两个内容,一个是《编程的本质与未来》,一个是《软件设计原则》。
对于前者,再次感受了一番:计算机软件工程发展过程中,前期是努力提升硬件的运行效率,后期到现在是提升开发效率。
李智慧老师在讲课中提到编程的目的是用计算机来解决现实问题,需要编程语言这种"抽象",来让计算机和现实世界关联。所以"抽象"能力成为衡量程序员的一个指标。虽然在日常开发中即使没有"抽象",也能编程出解决问题的软件。但是具有"抽象",能让软件更加可维护可扩展和易于阅读。个人觉得这是架构师的一种基本能力要求。
但"抽象"能力是否足够不好定量判断,在个人有限的实践经验和阅读视野来看,这需要不断虚心学习和不断总结,学习理论知识,学习别人的成功失败案例,总结各种使用场景,不断实践。在充分了解业务需求情况下,才能提高和用好"抽象"能力,让系统可维护可扩展。
本周第二节学习的是软件设计原则(solid)。再次让个人觉得开闭原则(ocp)是最重要的。而依赖倒置原则(dip)的讲解让个人重新认识高层与底层。在阅读《架构整洁之道》一书,已知道高层与底层的说法,但那是针对的是一个具有核心逻辑功能的软件,还没转化到常见的网络服务应用上(这可能和个人的能力及理解有关)。通过李智慧老师讲解,认识到高层与底层之间,区分在于调用链上的位置,调用者为高层,被调用者为底层。这一对比个人之前的认知,这个看法更有指导性。
再引申一下,高层与底层,抽象与具体,个人觉得都是在稳定与易变之间平衡。抽象出稳定模块或逻辑或数据,让其能被其他模块依赖使用。封装易变模块或逻辑或数据,让其标准化,符合稳定模块定义的接口。
软件要想良好地运行,除了本身的代码设计外,还需考虑底层的操作系统、硬件,和外部的服务依赖、网络环境等。
还需要不断学习和实践。
版权声明: 本文为 InfoQ 作者【iHai】的原创文章。
原文链接:【http://xie.infoq.cn/article/76d58d94409ebb19b2be8a047】。文章转载请联系作者。
评论