工作了三五年,当我们能实现基本功能后,就会对自己有更高的要求:“我的代码还有更好的写法吗?”“如果有一天要重写,我该从哪入手改进呢?”
其实,类似的问题还有很多,比如:
平时把各种代码堆砌在一起,出Bug时定位问题就像“大家来找茬”;
为了一个小需求,要在无数地方小心翼翼各种微调,还被产品经理嫌弃改得慢;
辛辛苦苦写好的代码,被别人在其他地方不经意地修改,给弄崩溃了;
后来我发现,之所以出现这些问题,归根结底是因为“软件设计”没有做好。写程序的人谁不想操刀一个大型系统,但如果不懂软件设计,能摆弄的代码规模就非常有限,可以说,它限定了你的成长高度。而优秀的工程师会拥抱需求变化,写的软件不仅追求基本功能的实现,还要考虑未来的维护和扩展;他的代码不会毫无目的地堆在那,而是要考虑如何组织更为恰当。事实上,我们后期遇到的很多问题,都是前期缺乏设计留下的隐患。而学习软件设计,是让你的把控能力从一段代码扩展到一个模块,再扩展到一个子系统,最后扩展到一个大系统的必备过程,也是整个开发周期中最重要的阶段。这里,分享给你一张软件设计整体流程图,不仅从宏观上详述了软件设计的需求场景,还从微观上介绍了软件设计的步骤流程、工具、方法和常见问题。这张图出自郑晔,他是推文科技技术VP,前火币网首席架构师,也是OracleDuke选择奖获奖作品Moco的创始人。最早知道他,是因为《10x程序员工作法》这个专栏,看完感觉茅塞顿开,把我从常见思维误区里拉了出来。所以,去年看他又推出了《软件设计之美》,我第一时间就入手了,追着更新看了一遍,今年抽空又二刷了,收获超出预期。整个专栏深入浅出,实战性很强,郑大精选30个经典软件设计案例,用图文、原理、实践相结合的方式,深入剖析了软件设计的本质,总计了典型的软件设计思维误区,以及软件设计的3大步骤和必备4大知识模板,带你建立起软件设计的整体认知,真正提升软件开发能力,做到“多一点设计,少一点问题”。
秒杀+专属口令「happy」立省¥60
到手半价¥69,即将涨价至¥
其实,软件设计的相关知识有很多,比如,设计模式、领域驱动设计等等。但你会发现,学了那么多设计模式,能用上的却没几个;领域驱动设计中概念很多,都不知道从哪学起。后来,我才明白,我们困惑的并不是知识本身,而是缺乏一个整体结构将它们串联起来。所以,软件设计学习的难度,不在于一招一式,而是融会贯通。在这个专栏中,郑大交付了一套软件设计的完整知识工具箱,包括4大核心部分:程序设计语言:带你横跨语言学语言,让你不再局限于某一种语言,而是择其善者而从之,更好地落地自己的设计;
编程范式:他选了几个最主流的编程范式,包括结构化编程、面向对象和函数式编程,帮你建立起软件设计的根基;
设计原则与模式:介绍面向对象的主流设计原则,SOLID原则。
设计方法:分析DDD设计方法,这是当下完整、有效的应对复杂业务场景的设计方法,包括了从如何识别概念到如何建立模型。
在课程最后,郑大还结合实际项目带我们手把手实操,串联前面讲过的知识点,比如:结合自己的开源项目Moco,讲解如何设计一个程序库;用一个数据采集的项目,讲解如何构建一个可扩展的模型,还有如何对既有项目做设计上的改进等等。
另外,我觉得这个课最宝贵的一点,是每篇文章下面,都会附赠一张郑大总结的思维脑图,以及一道思考题,不止帮你更好地吸收内容,也让你形成思考习惯,把学到的知识运用到实际工作中。连专栏里的留言质量都很高,郑大不仅会解答大家的问题,读者也会互相讨论切磋,光看评论区都能学到不少,口碑自然不错,截了一些供你参考:记得Linus说过这么一句话:程序员之所以有高下之分,最大的区别就是“品味”不一样。对一个好程序员来说,品味尤为重要。但遗憾的是,我们大多数人日常工作见到的代码都很难称得上有品味,唯一的优点就是可运行。所以,应该从累积软件设计的意识开始,逐渐将其应用到实践当中,在真实项目中应用它,把专业的做法训练成直觉,这也是普通程序员和高手的差别所在。
申请了粉丝专属优惠:
专栏即将涨价至¥现秒杀+口令「happy」到手仅¥69,相当于半价入手口令仅「前50人」有效郑大在专栏里说:“你要做正确的事,做有价值的需求,别把时间浪费在不该做的事情上。”我们常常看似很忙碌,但是都是一些无效的努力,真正能得到成长的是,提高做事的效率性。怎么提高效率性呢?找对方法很重要。比如,比起自己琢磨,学习前辈总结的经验和教训,就可以事半功倍。点击「阅读原文」输入粉丝专享口令「happy」半价秒杀,仅限「前50人」有效预览时标签不可点收录于合集#个上一篇下一篇