![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计思想、原则、模式、重构
接口设计、架构设计、设计原则、设计模式
真理剑客
认知你自己
展开
-
13、重构
重构是对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,使其更易理解,修改成本更低。 重构代码对一个工程师能力的要求,要比单纯写代码高得多。重构需要能洞察出代码存在的坏味道和设计上的 不足,并且能合理、熟练地利用设计思想、原则、模式、编程规范等理论知识。一、重构的目的:WHY1、保持代码质量的一个有效手段。 2、避免前期过度设计,优秀的代码和架构迭代出来的,随着系统的演进,重构代码不可避免。 3、工程师本身的技术成长。二、重构的对象1、大型重构:对顶层代码设计的重构,包括:系统、模块、代码原创 2020-06-22 17:40:59 · 727 阅读 · 0 评论 -
REST-表现层状态转换
REST,Representational State Transfer,即表现层状态转换,指的是一种为了让信息在互联网上顺利传递而设计的软件架构风格,即一种采用标准URI进行调用的方案。REST的核心原则是将API拆分为逻辑上的资源,REST 的核心要素包括资源、表现层和状态转换这三个部分。REST 是一种设计风格,而非协议或标准。而HTTP/HTTPS、HTML、XML等协议是 REST ...原创 2020-02-17 15:43:38 · 681 阅读 · 0 评论 -
12、KISS、YAGNI、DRY、LOD
一、KISS原则尽量保持简单。KISS原则是保持代码可读性和可维护性的重要手段。1、考虑逻辑复杂度、实现难点、代码可读性,如不重复造轮子、不过度优化2、本身就复杂的问题,用复杂的方法解决并不违背KISS原则。二、YAGNI原则:You Ain’t Gonna Need It不要做过度设计。如不要去设计当前用不到的功能、不要去编写当前用不到的代码、不引入无用的依赖包。当然,考虑到代码的...原创 2020-02-17 11:03:35 · 607 阅读 · 0 评论 -
11、SOLID原则
一个类或者模块只负责完成一个职责(或者功能)。通过避免设计大而全的类,避免将不相关的功能耦合在一起,来提高类的内聚性。同时,类职责单一,类依赖的和被依赖的其他类也会变少,减少了代码的耦合性。不过如果拆分的过细,则会降低内聚性,也会影响代码的可读性。如何判断类的职责是否单一不能脱离具体的应用场景,不同的应用场景、不同阶段的需求背景、不同的业务层面视角下,对一个类是否满足单一职责原则的判断是不一...原创 2020-02-07 17:45:01 · 298 阅读 · 0 评论 -
10、面向对象开发
面向对象分析OOA、面向对象设计OOD、面向对象开发OOP是面向对象开发的三个主要环节。一、面向对象分析 OOA面向对象分析的产出是详细的需求描述及解决方案。将笼统的需求细化到足够清晰、可执行。我们需要通过沟通、挖掘、分析、假设、梳理,搞清楚具体的需求有哪些,哪些是现在要做的,哪些是未来可能要做的,哪些是不用考虑做的。针对框架、类库、组件等非业务系统,作为被很多系统复用的通用框架,相比业务...原创 2019-12-30 14:36:26 · 374 阅读 · 0 评论 -
9、面向对象-贫血模型、充血模型与MVC架构
贫血模型: 只包含数据结构,不包含业务逻辑的类。如Entity、BO等,是面向过程编程风格。充血模型: 数据和对应的业务逻辑被封装到一个类中。满足面向对象的封装特性,是面向对象编程风格。MVC三层架构: 三个字母分别指Model、View、Controller,即将整个项目分为三层:展示层、逻辑层、数据层。 领域驱动设计(Domain Driven Design): 主要用来指导如何解耦业务...原创 2019-12-26 16:44:38 · 1466 阅读 · 0 评论 -
8、面向对象-抽象特性:面向接口而非实现编程
越抽象、越顶层、越脱离具体某一实现的设计,越能提高代码的灵活性,越能应对未来的需求变化。好的代码设计,不仅能应对当下的需求,而且在将来需求发生变化的时候,仍然能够在不破坏原有代码设计的情况下灵活应对。基于接口而非实现(又名基于抽象而非实现)编程就是一种非常有效的提高代码质量的手段,上游系统面向接口而非编程,不依赖不稳定的实现细节,这样当实现发生变化的时候,上游系统的代码不需要做改动,以此来降低耦...原创 2019-12-24 15:45:51 · 333 阅读 · 0 评论 -
7、面向对象-接口VS抽象类
一、什么是抽象类和接口?1、抽象类:抽象类是一种特殊的类,表示一种is-a关系。语法特性: 抽象类不能被实例化,只能被集成;抽象类可以包含属性和方法;子类继承抽象类,必须实现抽象类中的所有抽象方法。2、接口接口是对行为的抽象,表示一种has-a关系。接口相当于一组协议或契约,表示具有某些功能,接口也称协议(contract)。语法特性: 接口不能包含属性;接口只能声明方法,方法不能包...原创 2019-12-23 13:48:42 · 181 阅读 · 0 评论 -
6、面向对象-面向过程
一、什么是面向过程编程与面向过程编程语言?面向过程编程: 是一种流程化的编程范式或编程风格。它以过程(方法、函数)做为组织代码的基本单元,以数据(成员变量、属性)与方法相分离为主要的特点,通过拼接一组顺序执行的方法来操作数据完成一项功能。面向过程编程语言: 不支持类和对象两个语法概念,不支持丰富的面向对象编程特性(封装、继承、多态),仅支持面向过程编程的编程语言。如C、Basic语言与面向对...原创 2019-12-19 10:17:05 · 232 阅读 · 0 评论 -
5、面向对象-封装、抽象、继承、多态
每个特性存在的意义和目的,以及要解决哪些编程问题。一、封装 Encapsulation封装也叫数据隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式(函数)来访问内部信息或者数据。封装需要编程语言本身提供访问权限控制语法机制,来达成隐藏信息和保护数据的目的。意义:可控性: 如果对类中属性的访问不做限制,那任何代码都可以访问、修改类中的属性。易用性: 类仅仅通过...原创 2019-12-17 12:01:48 · 370 阅读 · 0 评论 -
4、面向对象
一、面向对象编程OOP、面向对象编程语言OOPL面向对象编程: 是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性作为代码设计和实现的基石。面向对象编程语言: 是有现成的支持类或对象的语法机制,能方便的实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。**判断一个编程语言是否是面向对象编程语言:**面向对象编程中有两个非常重要、非常基...原创 2019-12-17 11:35:40 · 165 阅读 · 0 评论 -
3、面向对象、设计原则、设计模式、编程规范、重构之间的关系
一、面向对象现在主流的编程范式有三种:面向过程、面向对象和函数式编程,而面向对象又是其中最主流的。面向对象因其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式编码实现的基础。面向对象的四大特性:封装、抽象、继承、多态面向对象编程与面向过程编程的区别和联系面向对象分析、面向对象设计、面向对象编程接口和抽象类的区别及各自的应用场景基于接口而非...原创 2019-12-12 10:26:51 · 288 阅读 · 0 评论 -
2、代码质量
对程序员来说,辨别代码质量的高低,是一个非常重要的能力,毕竟如果连好代码、烂代码都分不清,又怎么能写出好代码呢?一、如何评价代码质量的高低?代码质量高低是一个综合各种因素得到的结论,我们并不能通过单一维度去评价一段代码的好坏。另外对一段代码质量的评价往往带有很强的主观性,我们很难客观的量化一段代码质量的高低。一般越是有经验的工程师,给出的评价也就越准确。所以这也是说,如果没有人指导的话,自己...原创 2019-12-05 17:46:20 · 686 阅读 · 0 评论 -
1、导读-为什么要掌握设计模式相关知识
设计模式和数据结构与算法相比更基础的学科(操作系统、编译原理等)和平时的开发有直接的关系,能更直接的影响开发能力。数据机构和算法可以帮助我们写出高效代码,而设计模式则能帮我们写出可扩展、可读、可维护的高质量代码。1、应对面试中的设计模式相关问题求职面试中,设计模式是被问的频率比较高的一类问题。平时要多注重设计模式相关知识的积累和实践。2、提升复杂模块的设计和开发能力设计模式相关知识(设计...原创 2019-12-12 10:22:40 · 129 阅读 · 0 评论