做步伐界中的死神,斩魂刀始解

宁睿  论坛元老 | 2024-10-29 12:30:01 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1082|帖子 1082|积分 3256

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
标题解读:标题中的死神,是源自《死神》动漫内里的角色,斩魂刀是死神的武器,始解是斩魂刀的初始解放形态,卐解是斩魂刀的觉醒解放形态,也是死神的大招。意旨做步伐界中步伐员的佼佼者,一步一步最终修炼本身的大招。
  本文选自左耳朵耗子叔的步伐员练级攻略软件设计的内容,以此来分享一下。
编程范式

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


  • 推荐老师在极客时间写的《编程范式游记》系列文章
  • 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 原则

    • SRP(Single Responsibility Principle)- 职责单一原则。
    • OCP(Open/Closed Principle)- 开闭原则。
    • LSP(Liskov substitution principle)- 里氏代换原则。
    • ISP(Interface Segregation Principle )- 接口隔离原则。
    • DIP(Dependency Inversion Principle)- 依赖倒置原则。

  • CCP(Common Closure Principle) - 共同封闭原则,一个包中所有的类应该对同一种范例的变革关闭。当因为某个原因须要修改时,把须要修改的范围限制在一个最小范围内的包里。
  • CRP(Common Reuse Principle)- 共同重用原则 ,包的所有类被一起重用。如果你重用了其中的一个类,就重用全部。CCP 则让系统的维护者受益。CCP 让包尽大概大(CCP 原则到场功能相干的类),CRP 则让包尽大概小(CRP 原则剔除不使用的类)。它们的出发点不一样,但不相互冲突。
  • 好莱坞原则 - Hollywood Principle ,好莱坞原则就是一句话——“don’t call us, we’ll call you.”。意思是,好莱坞的经纪人不希望你去联系他们,而是他们会在须要的时间来联系你。也就是说,所有的组件都是被动的,所有的组件初始化和调用都由容器负责。简单来讲,就是由容器控制步伐之间的关系,而非传统实现中,由步伐代码直接操控。这也就是所谓“控制反转”的概念地点:1) 不创建对象,而是形貌创建对象的方式。2)在代码中,对象与服务没有直接联系,而是容器负责将这些联系在一起。控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。好莱坞原则就是IoC(Inversion of Control) 或DI(Dependency Injection)的基础原则。
  • 高内聚, 低耦合 & - High Cohesion & Low/Loose coupling,这个原则是 UNIX 操作系统设计的经典原则,把模块间的耦合降到最低。
  • CoC(Convention over Configuration)- 惯例优于配置原则 ,简单点说,就是将一些公认的配置方式和信息作为内部缺省的规则来使用。
  • SoC (Separation of Concerns) - 关注点分离 ,SoC 是计算机科学中最紧张的努力目标之一。这个原则,就是在软件开发中,通过各种手段,将题目的各个关注点分开。如果一个题目能分解为独立且较小的题目,就是相对较易解决的。
  • DbC(Design by Contract)- 契约式设计 ,DbC 的核心思想是对软件系统中的元素之间相互相助以及“责任”与“义务”的比喻。这种比喻从贸易活动中“客户”与“供应商”达成“契约”而得来。如果在步伐设计中一个模块提供了某种功能,那么它要:期望所有调用它的客户模块都保证一定的进入条件:这就是模块的先验条件(客户的义务和供应商的权利,这样它就不消去处置惩罚不满足先验条件的情况)。保证退出时给出特定的属性:这就是模块的后验条件(供应商的义务,显然也是客户的权利)。在进入时假定,并在退出时保持一些特定的属性:稳定式。
  • ADP(Acyclic Dependencies Principle)- 无环依赖原则 ,包(或服务)之间的依赖布局必须是一个直接的无环图形,也就是说,在依赖布局中不允许出现环(循环依赖)。在设计模块时,不能有循环依赖。
一些软件设计的读物



  • 《领域驱动设计》 ,本书是领域驱动设计方面的经典之作。
  • 《UNIX 编程艺术》 ,这本书重要介绍了 Unix 系统领域中的设计和开发哲学、思想文化体系、原则与履历。。
  • 《Clean Architecture》
小结

好了,总结一下今天禀享的内容。我认为,“品位”不同,是各层次步伐员之间最大的区别,这也决定了他们所做出来的软件的质量和代价。因此,我特意撰写了软件设计这一篇章,帮助那些想成长为软件工程师、设计师或架构师的步伐员,提高软件设计的品位,进而实现本身的目标。
虽然很多步伐员都忽略了对编程范式的学习,但我觉得学习编程范式其实黑白常非常紧张的事,能够明确编程的本质和各种语言的编程方式。为此,我推荐了好几份学习资料,帮助你系统化地学习和明白。随后我介绍了 DRY- 避免重复原则、KISS- 简单原则、迪米特法则(又称“最少知识原则”)、 面向对象的 S.O.L.I.D 原则等多个经典的软件设计原则。
末了,我精选并推荐了软件设计方面的学习资料,如《领域驱动设计》、《UNIX 编程艺术》和《Clean Architecture》等必读好书,以及怎样构建 SaaS,怎样避免过度设计,怎样设计 API,怎样用步伐打日志等方面的资料。
   该笔记摘录自极客时间课程
《左耳听风》

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宁睿

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表