学习软件设计的方法、理念、范式和模式,是让你从一个程序员通向工程师的必备技能。如果你不懂这些设计方法,那么你将无法做出优质的软件。这就好像写作文一样,文章人人都能写,但是能写得有条理,有章法,有血有肉,就不简单了。软件开发也一样,实现功能,做出来并不难,但是要做漂亮,做优雅,就非常不容易了。

Linus说过,这世界程序员之所有高下之分,最大的区别就是程序员的“品味”不一样。有品位的程序员和没有品位的程序员写出来的代码,做出来的软件,差距非常大。所以,如果你想成为一名优秀的程序员,软件设计定是你的必修课

然而,软件设计这个事,并不是一朝一夕就能学会的,也不是别人能把你教会的,很多东西需要你自己用实践、用时间、用错误、用教训、用痛苦才能真正体会其中的精髓。所以,除了学习理论知识外,你还需要大量的工程实践,然后每过一段时间就把这些设计的东西重新回炉一下。你会发现这些软件设计的东西,就像饮茶一样,一开始是苦的,然后慢慢回甘,最终你会喝出真正的滋味。

要学好这些软件开发和设计的方法,你真的需要磨练和苦行,反复咀嚼,反复推敲,在实践和理论中螺旋式地学习,才能真正掌握。 所以,你需要有足够的耐心和恒心。

编程范式

学习编程范式可以让你明白编程的本质和各种语言的编程方式。因此,我推荐以下一些资料,以帮助你系统化地学习和理解。

一些软件设计的相关原则

一些软件设计的读物

小结

好了,总结一下今天分享的内容。我认为,“品位”不同,是各层次程序员之间最大的区别,这也决定了他们所做出来的软件的质量和价值。因此,我特意撰写了软件设计这一篇章,帮助那些想成长为软件工程师、设计师或架构师的程序员,提高软件设计的品位,进而实现自己的目标。

虽然很多程序员都忽略了对编程范式的学习,但我觉得学习编程范式其实是非常非常重要的事,能够明白编程的本质和各种语言的编程方式。为此,我推荐了好几份学习资料,帮助你系统化地学习和理解。随后我介绍了DRY-避免重复原则、KISS-简单原则、迪米特法则(又称“最少知识原则”)、 面向对象的S.O.L.I.D原则等多个经典的软件设计原则。

最后,我精选并推荐了软件设计方面的学习资料,如《领域驱动设计》、《UNIX编程艺术》和《Clean Architecture》等必读好书,以及如何构建SaaS,如何避免过度设计,如何设计API,如何用程序打日志等方面的资料。

希望这些内容对你有帮助。从下一篇文章开始,我们将进入《程序员练级攻略》的第五个篇章——高手成长篇。敬请期待。

下面是《程序员练级攻略》系列文章的目录。

评论