连云港建设厅官方网站,wordpress 留言,新市网站建设,jq网站模板标题解读#xff1a;标题中的死神#xff0c;是源自《死神》动漫里面的角色#xff0c;斩魂刀是死神的武器#xff0c;始解是斩魂刀的初始解放形态#xff0c;卐解是斩魂刀的觉醒解放形态#xff0c;也是死神的大招。意旨做程序界中程序员的佼佼者#xff0c;一步一步最… 标题解读标题中的死神是源自《死神》动漫里面的角色斩魂刀是死神的武器始解是斩魂刀的初始解放形态卐解是斩魂刀的觉醒解放形态也是死神的大招。意旨做程序界中程序员的佼佼者一步一步最终修炼自己的大招。 本文选自左耳朵耗子叔的程序员练级攻略软件设计的内容以此来分享一下。
编程范式
学习编程范式可以让你明白编程的本质和各种语言的编程方式。因此我推荐以下一些资料以帮助你系统化地学习和理解。
推荐老师在极客时间写的《编程范式游记》系列文章Wikipedia: Programming paradigm维基百科上有一个编程范式的页面顺着这个页面看下去你可以看到很多很多有用的和编程相关的知识。这些东西对你的编程技能的提高会非常非常有帮助。Six programming paradigms that will change how you think about coding中文翻译版为 六个编程范型将改变你对编程的看法。这篇文章讲了默认支持并发Concurrent by default、依赖类型Dependent types、连接性语言Concatenative languages、声明式编程Declarative programming、符号式编程Symbolic programming、基于知识的编程Knowledge-based programming等六种不太常见的编程范式并结合了一些你没怎么听说过的语言来分别进行讲述。Programming Paradigms for Dummies: What Every Programmer Should Know这篇文章的作者彼得·范·罗伊Peter Van Roy是比利时鲁汶大学的计算机科学教师。他在这篇文章里分析了编程语言在历史上的演进有哪些典型的、值得研究的案例里面体现了哪些值得学习的范式。斯坦福大学公开课编程范式这是一门比较基础且很详细的课程适合学习编程语言的初学者。它通过讲述 C、C、并发编程、Scheme、Python 这 5 门语言介绍了它们各自不同的编程范式。
一些软件设计相关的原则
Don’t Repeat Yourself (DRY) DRY 是一个最简单的法则也是最容易被理解的。当在两个或多个地方发现一些相似代码的时候我们需要把它们的共性抽象出来形成一个唯一的新方法并且改变现有地方的代码让它们以一些合适的参数调用这个新的方法。Keep It Simple, Stupid(KISS) KISS 原则在设计上可能最被推崇在家装设计、界面设计和操作设计上复杂的东西越来越被众人所鄙视了而简单的东西越来越被人所认可。宜家IKEA简约、高效的家居设计和生产思路微软Microsoft“所见即所得”的理念谷歌Google简约、直接的商业风格无一例外地遵循了“KISS”原则。也正是“KISS”原则成就了这些看似神奇的商业经典。而苹果公司的 iPhone 和 iPad 将这个原则实践到了极至。Program to an interface, not an implementation这是设计模式中最根本的哲学注重接口而不是实现依赖接口而不是实现。You Ain’t Gonna Need It (YAGNI) 这个原则简而言之为——只考虑和设计必须的功能避免过度设计。Law of Demeter迪米特法则 (Law of Demeter)又称“最少知识原则”Principle of Least Knowledge。面向对象的 S.O.L.I.D 原则 SRPSingle Responsibility Principle- 职责单一原则。OCPOpen/Closed Principle- 开闭原则。LSPLiskov substitution principle- 里氏代换原则。ISPInterface Segregation Principle - 接口隔离原则。DIPDependency Inversion Principle- 依赖倒置原则。 CCPCommon Closure Principle - 共同封闭原则一个包中所有的类应该对同一种类型的变化关闭。当因为某个原因需要修改时把需要修改的范围限制在一个最小范围内的包里。CRPCommon Reuse Principle- 共同重用原则 包的所有类被一起重用。如果你重用了其中的一个类就重用全部。CCP 则让系统的维护者受益。CCP 让包尽可能大CCP 原则加入功能相关的类CRP 则让包尽可能小CRP 原则剔除不使用的类。它们的出发点不一样但不相互冲突。好莱坞原则 - Hollywood Principle 好莱坞原则就是一句话——“don’t call us, we’ll call you.”。意思是好莱坞的经纪人不希望你去联系他们而是他们会在需要的时候来联系你。也就是说所有的组件都是被动的所有的组件初始化和调用都由容器负责。简单来讲就是由容器控制程序之间的关系而非传统实现中由程序代码直接操控。这也就是所谓“控制反转”的概念所在1) 不创建对象而是描述创建对象的方式。2在代码中对象与服务没有直接联系而是容器负责将这些联系在一起。控制权由应用代码中转到了外部容器控制权的转移是所谓反转。好莱坞原则就是IoCInversion of Control 或DIDependency Injection的基础原则。高内聚 低耦合 - High Cohesion Low/Loose coupling这个原则是 UNIX 操作系统设计的经典原则把模块间的耦合降到最低。CoCConvention over Configuration- 惯例优于配置原则 简单点说就是将一些公认的配置方式和信息作为内部缺省的规则来使用。SoC (Separation of Concerns) - 关注点分离 SoC 是计算机科学中最重要的努力目标之一。这个原则就是在软件开发中通过各种手段将问题的各个关注点分开。如果一个问题能分解为独立且较小的问题就是相对较易解决的。DbCDesign by Contract- 契约式设计 DbC 的核心思想是对软件系统中的元素之间相互合作以及“责任”与“义务”的比喻。这种比喻从商业活动中“客户”与“供应商”达成“契约”而得来。如果在程序设计中一个模块提供了某种功能那么它要期望所有调用它的客户模块都保证一定的进入条件这就是模块的先验条件客户的义务和供应商的权利这样它就不用去处理不满足先验条件的情况。保证退出时给出特定的属性这就是模块的后验条件供应商的义务显然也是客户的权利。在进入时假定并在退出时保持一些特定的属性不变式。ADPAcyclic Dependencies Principle- 无环依赖原则 包或服务之间的依赖结构必须是一个直接的无环图形也就是说在依赖结构中不允许出现环循环依赖。在设计模块时不能有循环依赖。
一些软件设计的读物
《领域驱动设计》 本书是领域驱动设计方面的经典之作。《UNIX 编程艺术》 这本书主要介绍了 Unix 系统领域中的设计和开发哲学、思想文化体系、原则与经验。。《Clean Architecture》
小结
好了总结一下今天分享的内容。我认为“品位”不同是各层次程序员之间最大的区别这也决定了他们所做出来的软件的质量和价值。因此我特意撰写了软件设计这一篇章帮助那些想成长为软件工程师、设计师或架构师的程序员提高软件设计的品位进而实现自己的目标。
虽然很多程序员都忽略了对编程范式的学习但我觉得学习编程范式其实是非常非常重要的事能够明白编程的本质和各种语言的编程方式。为此我推荐了好几份学习资料帮助你系统化地学习和理解。随后我介绍了 DRY- 避免重复原则、KISS- 简单原则、迪米特法则又称“最少知识原则”、 面向对象的 S.O.L.I.D 原则等多个经典的软件设计原则。
最后我精选并推荐了软件设计方面的学习资料如《领域驱动设计》、《UNIX 编程艺术》和《Clean Architecture》等必读好书以及如何构建 SaaS如何避免过度设计如何设计 API如何用程序打日志等方面的资料。 该笔记摘录自极客时间课程 《左耳听风》