这段时间又攒了很多答应了,但还未动手的文章。大概一两周前,有个读者留言:「程序君,能发篇文章有关编程思想的吗?我是编程初学者,对编程思想没啥概念,求传授点经验!」
今天就讲讲编程思想。编程思想是个宏大的主题,我不敢保证我能在短短的一两个小时里讲得全面而深入。推荐给大家一本好书『冒号课堂』,是国内为数不多的讲编程思想的经典之作。无奈这本书已经不再出版,只能在图书馆里一睹芳容(我几年前在国图和它偶遇)。
各种软件思想虽然层出不穷,但其本质是降低系统复杂度,减少重复,减少代码的变更。掌握了这个大方向,理解各种编程思想就容易多了。
(下文所涉及的代码大多是剪短清晰的python代码)
以程序君不太准确的分类,编程思想可以分为以下几个大类:
- 原则(Principles)
- 范式(Paradigms)
- 方法论(Methodologies)
- 模式(Patterns)
我们一点点展开,说到哪算哪。
原则(Principles)
我认识(或者说现在想得起来的)的原则主要有以下几种:
- DRY (Don't Repeat Yourself)
- OCP (Open Close Principle)
- SoC (Separation of Concerns)
- IoC (Inversion of Control)
- CoC (Configuration over Convention)
- Indirection (Layering)
"Don't repeat yourself"很好理解。当你第二次写同样结构,变化不大的代码时,脑袋里就要闪现一个大大的问号:我是不是在repeat myself?如果是,就要重构,或封装,或抽象,或函数化,总之一个目的,消除重复。以笔者的经验,DRY原则看似基本,实则很多大型软件公司都未能做好,copy & paste到处可见。我们写代码,从一开始就要把握好这个原则,否则在「破窗理论」的指引下,代码的质量会快速划向万劫不复的深渊。
近期评论