Linus 说过,这世界程序员之所以有高下之分,最大的区别就是程序员的“品味”不一样。有品位的程序员和没有品位的程序员写出来的代码,做出来的软件,差距非常大。
或许你可以把基本功能实现,但想要做得优雅、可迭代,那就很不容易了。这其中,软件设计就是你走向优秀程序员的必备技能。
为什么这么说?想想工作中我们接触到的软件,是不是都在不断修改、迭代、演化和发展。Linux 一开始只是 Linus 的练习作品,它只有最简陋的能力。但经过 30 年的发展,已经成为由全世界程序员贡献的庞然大物,在世界各个角落支撑着人们的生活,迄今依然生机勃勃。
只要是有生命力的软件,在其演进过程中,就会产生源源不断的需求。而软件设计,就是应对一波又一波需求的“算法”,是整个开发周期中,最重要的阶段。前期设计弹性和灵活的体系结构,在将来出现需求变更时,遇到的问题就越少。
具体到工作中是什么样子的呢?回忆一下,你是否遇到过这样的场景:
是的,你看,软件设计没做好,系统变得难以维护,代码变得糟糕,Bug 层出不穷,让开发人员陷入迷宫,掉到一个又一个坑里。
这也是你为什么要学习软件设计的原因。优秀的工程师是拥抱需求变化的,他写软件不仅追求如何实现功能,还要考虑未来的维护和扩展;他的代码不会毫无目的地堆在那里,而是要考虑如何组织更为恰当。
不想当将军的士兵不是一个好士兵,不想做设计的程序员不是一个好程序员。写程序的人谁不想操刀一个大型的系统,但不懂软件设计的人能摆弄的代码规模是有限的,而这也限定了你的成长高度。
如何设计出强壮、灵活、易维护的代码?
首先,你得彻底搞懂软件设计。相关的知识很多,你或许听说过一些,比如,设计模式、领域驱动设计等等。但你可能也发现,学了那么多设计模式,能用上的却没有几个;领域驱动设计中的概念那么多,完全不知道该从哪学起。
其实,让我们困惑的,并不是这些知识本身,而是在于缺乏一个整体结构将它们贯穿起来。学习软件设计的难度,不在于一招一式,而在于融会贯通。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!