草庐IT

从编译器对指令集的要求看API设计原则

摘要:最近看《计算机体系结构:量化研究方法(第五版)》,发现指令集设计中的一些原则,对API设计也同样适用,给大家分享一下。本文中的所有内容来自工作和学习过程中的心得整理,如需转载请注明出处。周荣华@燧原科技1 正交指令集需要满足操作、数据类型和寻址方式三个方面的功能就是正交的。所以API设计应该也要满足对外的一些功能需求,一般是基本操作、数据类型定义和内存访问方式。正交的要求不只是接口设计要覆盖所有功能,还需要尽量减少冗余接口。2 提供原语而不是解决方案API应该提供完成解决方案需要的一些原语的集合,而不是某个解决方案。提供解决方案到API中的最大缺点是稳定性太差,这些解决方案可能在当前适用

从编译器对指令集的要求看API设计原则

摘要:最近看《计算机体系结构:量化研究方法(第五版)》,发现指令集设计中的一些原则,对API设计也同样适用,给大家分享一下。本文中的所有内容来自工作和学习过程中的心得整理,如需转载请注明出处。周荣华@燧原科技1 正交指令集需要满足操作、数据类型和寻址方式三个方面的功能就是正交的。所以API设计应该也要满足对外的一些功能需求,一般是基本操作、数据类型定义和内存访问方式。正交的要求不只是接口设计要覆盖所有功能,还需要尽量减少冗余接口。2 提供原语而不是解决方案API应该提供完成解决方案需要的一些原语的集合,而不是某个解决方案。提供解决方案到API中的最大缺点是稳定性太差,这些解决方案可能在当前适用

设计模式——面向对象设计原则

面向对象设计原则都是为了高内聚低耦合原则。编程时基本都要遵守单一职责原则分类原则:一种人只干一种事。举例:(比较简单就不代码了)人可以干的事情有很多:敲代码、唱歌、跳舞、打篮球....以人设置成一个类,里面的方法就太多太杂了。所以可以有多个类:程序员(敲代码)、音乐人(唱歌)、爱豆(跳舞)、NBA球员(打篮球)。这样类就具体化了,可以干的事情也就具体了,一旦需要用哪个方法就知道从哪个类里调用了。开闭原则开:提供方提供抽象类/接口/方法等,实现类可以决定行为。闭:调用方调用时,尽量不需要修改代码。定义:一个软件实体,比如类、模块和函数应该对扩展开放,对修改关闭。其中,对扩展开放是针对提供方来说的

设计模式——面向对象设计原则

面向对象设计原则都是为了高内聚低耦合原则。编程时基本都要遵守单一职责原则分类原则:一种人只干一种事。举例:(比较简单就不代码了)人可以干的事情有很多:敲代码、唱歌、跳舞、打篮球....以人设置成一个类,里面的方法就太多太杂了。所以可以有多个类:程序员(敲代码)、音乐人(唱歌)、爱豆(跳舞)、NBA球员(打篮球)。这样类就具体化了,可以干的事情也就具体了,一旦需要用哪个方法就知道从哪个类里调用了。开闭原则开:提供方提供抽象类/接口/方法等,实现类可以决定行为。闭:调用方调用时,尽量不需要修改代码。定义:一个软件实体,比如类、模块和函数应该对扩展开放,对修改关闭。其中,对扩展开放是针对提供方来说的

经典设计原则 - SOLID

SOLID设计原则包含以下5种原则:单一职责原则(SingleResponsibilityPrinciple,SRP)开闭原则(OpenClosedPrinciple,OCP)里式替换原则(LiskovSubstitutionPrinciple,LSP)接口隔离原则(InterfaceSegregationPrinciple,ISP)依赖反转原则(DependencyInversionPrinciple,DIP)单一职责原则理解单一职责原则的描述是,一个类或者模块只负责完成一个职责(或功能)。当然,单一职责原则不止是可以针对于模块或类,对于很多粒度都有效果,如函数、类、接口、模块等等,模块通常

经典设计原则 - SOLID

SOLID设计原则包含以下5种原则:单一职责原则(SingleResponsibilityPrinciple,SRP)开闭原则(OpenClosedPrinciple,OCP)里式替换原则(LiskovSubstitutionPrinciple,LSP)接口隔离原则(InterfaceSegregationPrinciple,ISP)依赖反转原则(DependencyInversionPrinciple,DIP)单一职责原则理解单一职责原则的描述是,一个类或者模块只负责完成一个职责(或功能)。当然,单一职责原则不止是可以针对于模块或类,对于很多粒度都有效果,如函数、类、接口、模块等等,模块通常

设计原则之DRY原则

DRY原则  DRY原则,它的英文描述为:Don’tRepeatYourself。中文直译为:不要重复自己。也可以理解为:不要写重复的代码。  我们从实现逻辑重复、功能语义重复和代码执行重复,这三种代码重复来说明DRY原则。实现逻辑重复  例如有两个函数isValidUserName()和isValidPassword(),它们的代码其实是一样的,这个时候如果我们将其合并成一个函数,虽然代码量减少了,也没有重复代码,但却违反了DRY原则,从代码实现逻辑上看起来是重复的,但是从语义上并不重复。所谓“语义不重复”指的是:从功能上来看,这两个函数干的是完全不重复的两件事情,一个是校验用户名,另一个是

设计原则之DRY原则

DRY原则  DRY原则,它的英文描述为:Don’tRepeatYourself。中文直译为:不要重复自己。也可以理解为:不要写重复的代码。  我们从实现逻辑重复、功能语义重复和代码执行重复,这三种代码重复来说明DRY原则。实现逻辑重复  例如有两个函数isValidUserName()和isValidPassword(),它们的代码其实是一样的,这个时候如果我们将其合并成一个函数,虽然代码量减少了,也没有重复代码,但却违反了DRY原则,从代码实现逻辑上看起来是重复的,但是从语义上并不重复。所谓“语义不重复”指的是:从功能上来看,这两个函数干的是完全不重复的两件事情,一个是校验用户名,另一个是

设计模式遵循的设计原则

 一、什么是设计原则?       答:如果说设计模式是编写代码的一种套路,那么设计原则就是用来约束我们使用这种套路应该要遵循的规则,只有遵循了这些规则的设计模式编写出来的应用程序才具有更好的扩展性和维护性。作为一个程序员,不应该只站在客户的角度去判定某一程序只要实现了了功能、拥有了漂亮的外观、良好的用户体验,就说这一程序是完美的,除此之外,我们还应该从程序的可扩展性、维护性来判定这一程序是否完美,一个扩展性和维护性差的程序的后期维护和升级成本或许远远超出开发时的成本,这对于程序员个人来说或许事不关己,但对于公司来说却是一个潜在的成本。二、6大设计原则:  1、单一职责原则  2、里氏替换原则

LSP原则是什么

如果这篇文章能够帮到您,请给我一个免费的赞,谢谢QWQ! LSP原则并不难,但是有些地方就会把它说的很啰嗦,如果你对LSP还是感到疑惑,请往下看看。先上代码:publicclassBird{publicvoidfly(){}}publicclassDuckextendsBird{}乍一看,这段代码没啥问题。没错啊,鸭子是鸟,当然鸭子也会飞了!可是我举个反例:鸵鸟不是鸟吗?那鸵鸟会飞吗?明显不会。但鸵鸟也是鸟啊,我如果让我的鸵鸟做鸟的子类,那我按你这么写必须会飞了,这不矛盾了吗?写代码处处全是矛盾,那怎么行。。。所以计算机科学家研究出了一个原则,这就是LSP原则。LSP原则:子类对象在程式中可以