首页 常见问题 管理信息系统代码设计中编码的目的是什么?

管理信息系统代码设计中编码的目的是什么?

Aug 28, 2020 pm 02:16 PM
编码

编码的目的是:惟一化、规范化、系统化。代码就是以数字或字符来代表各种客观实体,在系统开过程中设计代码目的是:惟一化、规范化、系统化。

管理信息系统代码设计中编码的目的是什么?

代码就是以数字或字符来代表各种客观实体,在系统开过程中设计代码目的是:

1、惟一化;

2、规范化;

3、系统化。

代码设计 六大原则

单一职责原则 Single Responsibility Principle

定义:一个类或者一个接口,最好只负责一项职责。

问题由来:类T负责两个不同的职责P1和P2。由于职责P1需要发生改变而需要修改T类,就有可能导致原来运行正常的职责P2功能发生故障。

解决方法:遵循单一职责原则。分别建立新的类来对应相应的职责;这样就能避免修改类时影响到其他的职责;

当遇到职责扩散的时候,在逻辑足够简单的时候,才可以在代码级别上面违反单一职责原则,只有类中方法数量足够少,才可以在方法级别上违反单一职责原则;

优点:类的复杂性将会降低,可读性将会大大提高,维护性也会提高。

里氏替换原则 Liskov Substitution Principle

在使用基类的地方可以任意使用其子类,能保证子类完美替换基类;这一种精神其实是对继承机制约束规范的体现。在父类和子类的具体实现中,严格控制继承层次中的关系特征,以保证用子类替换基类时,程序行为不发生问题,且能正常进行下去。

对于继承来说,父类定义了一系列的规范和契约,虽然不强制所有的子类必须遵从,但是如果子类对这些非抽象方法任意修改,就会对整个继承体系造成破环。

如果非要重写父类的方法,比较通用的方法是:原来的父类和子类都继承一个更加通俗的基类,原有的继承关系去掉,采用依赖、聚合、组合等关系代替;

原则包含了一下四层含义:

* 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法;

* 子类可以增加自己特有的方法;

* 当子类的方法重载父类的方法时,方法的形参要比父类方法的输入参数更佳宽松;

* 当子类的方法实现父类的抽象方法时,方法的返回值要比父类更加严格;

依赖倒置原则 Dependence Inversion Principle

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象,其核心思想是依赖于抽象;

问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来完成;这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原则操作;假如修改类A,会给程序带来不必要的风险。

解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I来间接与类B和类C发生联系,则会降低修改类A的几率;

在实际中,我们一般需要做到以下三点:

* 低层模块尽量都要有抽象类或者接口,或者两者都有;

* 变量的声明类型尽量是抽象类或者接口;

* 使用继承时遵循里氏替换原则;

接口隔离原则 Interface Segregation Principle

定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上,否则将会造成接口污染;类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现它们不需要的方法;

原则的含义是:建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少;就是说,我们要为每个类建立专用的接口,而不要试图去建立一个庞大的接口供所有依赖它的类去调用;

注意,接口尽量小,但是要有限度,对接口进行细化可以提高程序设计灵活性,但是如果过小,则会导致接口数量尽量小,使设计复杂化。所以一定要适度,为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来;

规则:

* 一个接口只服务于一个子模块或业务逻辑,服务定制;

* 通过业务逻辑压缩接口中的public方法,让接口看起来更加精悍;

* 已经被污染了的接口,尽量修改,如果变更风险太大,则用适配器模式进行转化;

* 根据具体的业务,深入了解逻辑,用心感知去控制设计思路;

如何实施接口隔离,主要有两种方法:

1. 委托分离,通过增加一个新的接口类型来委托客户的请求,隔离客户和接口的直接依赖,注意这同时也会增加系统的开销;

2. 多重继承分离,通过接口的多重继承来实现客户的需求;

迪米特法则

定义:一个对象应该对其他对象保持最少的了解,其核心精神就是:不和陌生人说话,通俗之意就是一个对象对自己需要耦合关联调用的类应该知道的少;这会导致类之间的耦合度降低,每个类都尽量减少对其他类的依赖。

合成复用原则

原则是尽量使用合成/聚合的方式,而不是使用继承;

开闭原则

定义:一个软件实体如类、模版和函数应该对扩展,对修改关闭;

解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是修改已有的代码来实现变化;

  • 单一职责原则:实现类要职责单一;

  • 里氏替换原则:不要破坏继承体系;

  • 依赖倒置原则:面向接口编程;

  • 接口隔离原则:设计接口的时候要精简单一;

  • 迪米特法则:降低耦合;

开闭原则:总纲,对扩展开放,对修改关闭;

更多相关知识,请访问:PHP中文网

以上是管理信息系统代码设计中编码的目的是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

11个常见的分类特征的编码技术 11个常见的分类特征的编码技术 Apr 12, 2023 pm 12:16 PM

机器学习算法只接受数值输入,所以如果我们遇到分类特征的时候都会对分类特征进行编码,本文总结了常见的11个分类变量编码方法。1、ONE HOT ENCODING最流行且常用的编码方法是One Hot Enoding。一个具有n个观测值和d个不同值的单一变量被转换成具有n个观测值的d个二元变量,每个二元变量使用一位(0,1)进行标识。例如:编码后最简单的实现是使用pandas的' get_dummiesnew_df=pd.get_dummies(columns=[‘Sex’], data=df)2、

utf8编码汉字占多少字节 utf8编码汉字占多少字节 Feb 21, 2023 am 11:40 AM

utf8编码汉字占3个字节。在UTF-8编码中,一个中文等于三个字节,一个中文标点占三个字节;而在Unicode编码中,一个中文(含繁体)等于两个字节。UTF-8使用1~4字节为每个字符编码,一个US-ASCIl字符只需1字节编码,带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文等字母则需要2字节编码。

知识图谱:大模型的理想搭档 知识图谱:大模型的理想搭档 Jan 29, 2024 am 09:21 AM

大型语言模型(LLM)具有生成流畅和连贯文本的能力,为人工智能的对话、创造性写作等领域带来了新的前景。然而,LLM也存在一些关键局限。首先,它们的知识仅限于从训练数据中识别出的模式,缺乏对世界的真正理解。其次,推理能力有限,不能进行逻辑推理或从多个数据源融合事实。面对更复杂、更开放的问题时,LLM的回答可能变得荒谬或矛盾,被称为“幻觉”。因此,尽管LLM在某些方面非常有用,但在处理复杂问题和真实世界情境时,仍存在一定的局限性。为了弥补这些差距,近年来出现了检索增强生成(RAG)系统,其核心思想是

常见的几种编码方式 常见的几种编码方式 Oct 24, 2023 am 10:09 AM

常见的编码方式有ASCII编码、Unicode编码、UTF-8编码、UTF-16编码、GBK编码等。详细介绍:1、ASCII编码是最早的字符编码标准,使用7位二进制数表示128个字符,包括英文字母、数字、标点符号以及控制字符等;2、Unicode编码是一种用于表示世界上所有字符的标准编码方式,它为每个字符分配了一个唯一的数字码点;3、UTF-8编码等等。

PHP编码小技巧:如何生成带有防伪验证功能的二维码? PHP编码小技巧:如何生成带有防伪验证功能的二维码? Aug 17, 2023 pm 02:42 PM

PHP编码小技巧:如何生成带有防伪验证功能的二维码?随着电子商务和互联网的发展,二维码越来越被广泛应用于各行各业。而在使用二维码的过程中,为了确保产品的安全性和防止伪造,为二维码添加防伪验证功能是十分重要的一环。本文将介绍如何使用PHP生成带有防伪验证功能的二维码,并附上相应代码示例。在开始之前,我们需要准备以下几个必要的工具和库:PHPQRCode:PHP

hdb3编码规则是啥 hdb3编码规则是啥 Aug 29, 2023 pm 01:38 PM

编码规则是:1、如果前一个编码是0,当前数据位为0,则编码为0;2、如果前一个编码是0,当前数据位为1,则编码为双极脉冲(+A或-A),并将计数器加1;3、如果前一个编码是1,当前数据位为1,则编码为0,并将计数器加1;4、如果前一个编码是1,当前数据位为0,则根据计数器的奇偶性来确定编码方式,如果是偶数,则编码为(+B或-B),如果是奇数,则编码为零电平,并将计数器清零等等。

如何解决php数据库查询结果编码的问题 如何解决php数据库查询结果编码的问题 Mar 21, 2023 am 11:49 AM

PHP是一种流行的Web编程语言,可以用于编写动态网页和应用程序。在实际应用中,PHP经常需要与数据库进行交互,进行数据的查询和处理。然而,在使用PHP从数据库中获取结果时,可能会遇到编码的问题,这通常会导致出现乱码。那么,如何解决php数据库查询结果编码的问题呢?

一文搞懂如何基于 GenAI 提升编码效能 一文搞懂如何基于 GenAI 提升编码效能 Apr 01, 2024 pm 06:49 PM

Hellofolks,我是Luga,今天我们来聊一下人工智能(AI)生态领域相关的技术-GenAI。面对日新月异的技术创新以及差异化的业务场景挑战,传统的编码方式已经开始出现水土不服,难以完全应对日益增长的诉求。与此同时,新兴的通用GenAI(人工智能技术)具有极具潜力的能力来满足这一需求。GenAI作为人工智能技术的代表,以其强大的潜力和能力已经开始在各行各业得到广泛应用。它可以自动学习和适应不同场景下的编码需求,极大地提高了编码效率和质量。通过深度学习和模型优化,GenAI能够准确地理解不同