首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

接口和其他依赖项应该放在哪里?

在软件开发中,接口和其他依赖项应该放在哪里?这是一个非常重要的问题,因为它涉及到代码的组织和结构。

通常情况下,接口和其他依赖项应该放在一个独立的文件夹或目录中,以便于代码的组织和管理。这个文件夹或目录通常被称为“依赖项目录”或“库目录”。

在许多编程语言中,都有一种机制来管理依赖项,例如Python中的pip,Node.js中的npm,Java中的Maven等等。这些工具可以帮助开发人员轻松地管理和更新依赖项。

此外,为了确保代码的可读性和可维护性,开发人员应该遵循一些最佳实践,例如使用模块化和封装,避免使用全局变量和全局状态等等。

总之,接口和其他依赖项应该放在一个独立的文件夹或目录中,以便于代码的组织和管理。开发人员应该使用适当的工具和技术来管理和更新依赖项,并遵循一些最佳实践来确保代码的可读性和可维护性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

微服务架构下 Go 包的代码组织实践

其他领域或其他基础架构的项目可能需要不同的方法。请在下面的评论中告诉我您的设计最有意义的地方。 包及其依赖 在开发微服务时,按组件拆分服务很有用。...首先,在 Setup()函数中使用接口。这些接口应该尽可能小。在上面的例子中,有一个 httpGetter 接口接口中只有Get()函数。...接口的定义需要尽可能地接近它的用途。 其次,尝试编写更少的测试用例的同时可以覆盖到更多的代码。对于每个主函数的决策/操作,一个成功的测试用例一个失败的测试用例应该足够覆盖大约 80% 的代码。...把所有的东西都放在一个地方是很有用的。 当您想要测试整个应用程序时,请在主函数旁边的setup()函数中准备好每个依赖。它将为生产环境测试环境提供相同的设置,可以为您避免一些 bug。...测试应该重用 setup()函数,并且只模拟那些不易模拟的依赖(比如外部 api)。 总结 所有其他文件(比如 .travis.yaml 等)都保存在项目根目录中。

59810

10 人,2 个月 | 虾米音乐的监控体系升级之路

致力于打造高可用、高拓展的站点稳定性工程)将工作重点放在了对监控的治理上面,经过 2 个月的研发,构建了虾米全新的监控体系。...上游依赖出问题:上游某个接口出了问题导致本应用出现接口超时、调用失败等。 单机故障:某个容器受宿主机应用导致 Load、CPU 突然升高,最终导致超时、线程池满等情况发生。...通用监控 大多数情况下,应用出现的问题都是由于单机故障引起的时候,如果某台机器的接口黄金指标突然变化、错误或异常数量突然增多,而其他机器没有什么变化,那就说明是单机引起的。...报警路径优化 ---- 经过对监控的梳理优化,目前每个应用差不过有 30-50 个报警,如果所有报警用以前的方式投递的报警群,那么将是一个灾难,完全没有办法去看,更没有办法快速定位问题。...同时在 SRE 平台支持对应用上游应用一小时内的报警进行分类聚合展示,哪里出了问题一目了然。

92120

Java开发手册之二方库依赖

【强制】二方库里可以定义枚举类型,参数可以使用枚举类型,但是接口返回值不允许使用枚举类型或者包含枚举类型的POJO对象。...【推荐】所有pom文件中的依赖声明放在语句块中,所有版本仲裁放在 语句块中。...而所有声明在主pom的 里的依赖都会自动引入,并默认被所有的子项目继承。 【推荐】二方库不要有配置,最低限度不要再增加配置。...移除一切不必要的API依赖,只包含 Service API、必要的领域模型对象、Utils类、常量、枚举等。...每个版本的变化应该被记录,二方库由谁维护,源码在哪里,都需要能方便查到。除非用户主动升级版本,否则公共二方库的行为不应该发生变化。

27620

DDD之熵

层是基础实施层,为其他层提供通用的技术能力:业务平台,编程框架,持久化机制,消息机制,第三方库的封装,通用算法,等等 DIP 上面的标准形态图形的左半边图,跟以往的很不一样,但从DIP角度看,低层服务应该依赖于高层组件...这是COLA2.0的分层,作者利用DIP对1.0版本进行了优化 1、核心业务逻辑技术细节相分离,使用DIP,让Infrastructure反向依赖Domain 2、将repository上移到application...二、再细化的架构元素放哪里?...为了隔离领域模型与外部设备,同样需要为它们定义抽象的出口端口,这些出口端口该放在哪里呢?如果依然放在领域层,就很难自圆其说。...例如,出口端口EventPublisher支持将事件消息发布到消息队列,要将这样的接口放在领域层,就显得不伦不类了。倘若不放在位于内部核心的领域层,就只能放在领域层外部,这又违背了整洁架构思想

51720

两分钟带你快速掌握Flutter的项目结构、资源、依赖本地化

,在哪里归档图片资源以及如何处理不同分辨率?,如何归档strings资源,以及如何处理不同语言?也就是我们通常说的国际化,以及如何添加Flutter项目所需的依赖?...在Android中,你可以在Gradle文件来添加依赖; 在 iOS 中,通常把依赖添加到 Podfile 中; 在RN中,通常是由package.json来管理项目依赖; Flutter 使用 Dart...构建系统 Pub 包管理器来处理依赖。...否则,应该使用pubspec.yaml来声明用于Flutter的外部依赖。...否则,应该使用pubspec.yaml来声明用于Flutter的外部依赖。 推荐一个用于查找Flutter插件的网站:Pub site。 参考 Flutter从入门到进阶实战携程网App

1.6K10

Spring Boot 面试题精华

启动器是一套方便的依赖没描述符,它可以放在自己的程序中。你可以一站式的获取你所需要的 Spring 相关技术,而不需要依赖描述符的通过示例代码搜索复制黏贴的负载。...例如,如果你想使用 Sping JPA 访问数据库,只需要你的项目包含 spring-boot-starter-data-jpa 依赖,你就可以完美进行。...当你设计 RESTful 服务器的时候,最佳实践表明,你的接口应该考虑到两件重要的事情: 你的模型范围。 你的客户。...简而言之 JPA 是一个规范或者接口 Hibernate 是 JPA 的一个实现 当我们使用 JPA 的时候,我们使用 javax.persistence 包中的注释接口时,不需要使用 hibernate...下面是我们添加的依赖 spring-boot-stater-data-jpa 对于 Hibernate JPA 有过渡依赖性。

16.1K40

OpenCV(c++)-1 安装配置OpenCV4.4(Windows+visual studio 2019)

[1] 它轻量级而且高效——由一系列 C 函数少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理计算机视觉方面的很多通用算法。...OpenCV用C++语言编写,它具有C ++,Python,JavaMATLAB接口,并支持Windows,Linux,AndroidMac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用...配置visual studio 2019 配置包含路径 1、 配置环境的主要目的是告诉计算机OpenCV放在哪儿,以及告诉IDE应该哪里寻找头文件库文件。...5、属性页的“VC++目录”的“包含目录”“库目录”,以及“链接器”中的“附加依赖”,便是我们需要修改的地方。...“附加依赖”添加opencv_world440d.lib,如图: ?

3K20

DDD这样落地

为了隔离领域模型与外部设备,同样需要为它们定义抽象的出口端口,这些出口端口该放在哪里呢?如果依然放在领域层,就很难自圆其说。...这几项目标,也对应我们对domain的要求:独立性可测试;我们的依赖方向必须是由外向内 DIP与Maven 要想实现整洁架构目标,那必须遵循面向接口编程,达到DIP <module...为了隔离领域模型与外部设备,同样需要为它们定义抽象的出口端口,这些出口端口该放在哪里呢 按此划分module,这些出口端口都放在了infra层,当domain需要外部服务时,不得不依赖infra module...为了隔离领域模型与外部设备,同样需要为它们定义抽象的出口端口,这些出口端口该放在哪里呢?如果依然放在领域层,就很难自圆其说。...如果我们将六边形架构看作是一个对称的架构,以领域为轴心,入口适配器入口端口就应该与出口适配器出口端口是对称的;同时,适配器又需端口相对应,如此方可保证架构的松耦合。 ? ?

1.5K61

Spring Boot 面试题

启动器是一套方便的依赖没描述符,它可以放在自己的程序中。你可以一站式的获取你所需要的 Spring 相关技术,而不需要依赖描述符的通过示例代码搜索复制黏贴的负载。...例如,如果你想使用 Sping JPA 访问数据库,只需要你的项目包含 spring-boot-starter-data-jpa 依赖,你就可以完美进行。...问题二十 RequestMapping GetMapping 的不同之处在哪里?...当你设计 RESTful 服务器的时候,最佳实践表明,你的接口应该考虑到两件重要的事情: 你的模型范围。 你的客户。...简而言之 JPA 是一个规范或者接口 Hibernate 是 JPA 的一个实现 当我们使用 JPA 的时候,我们使用 javax.persistence 包中的注释接口时,不需要使用 hibernate

1.3K10

如何在 Spring 中使用依赖注入

什么是依赖注入? 每个开始学习 Spring 框架的人都应该听说过依赖注入,但到底这意味着什么?...代码使用 DI 原则更清晰,并且在为对象提供依赖时解耦更有效。该对象不查找其依赖,也不知道依赖的位置或类。...结果,您的类变得更容易测试,特别是当依赖位于接口或抽象基类上时,这允许在单元测试中使用存根或模拟实现。 “好吧好吧,但我还是不明白这一切的要点,请你说得更清楚些?” ...好吧,建议您使用构造函数注入,因为它允许您将应用程序组件实现为不可变对象,并确保所需的依赖不为空。Setter 注入应该主要只用于可选的依赖,这些依赖可以在类中分配合理的默认值。...此外,您应该在一些教程或代码中了解过其他非常用于 DI 的类型,即 Field Injection,让我们看一下它是如何实现的: public class Car { @Autowired

26420

大公司为什么禁止在 Spring Boot 项目中使用 @Autowired 注解?

其中基于字段的依赖注入被广泛使用,但是idea或者其他静态代码分析工具会给出提示信息,不推荐使用。...3.2 容易违反单一职责设计原则 在面向对象的编程中,五大设计原则SOLID被广泛应用,(国内一般为六大设计原则),用以提高代码的重用性,可读性,可靠性可维护性 S在SOLID中代表单一职责原则,即即一个类应该只负责一职责...但是如果使用基于构造函数的依赖注入,随着越来越多的依赖被添加到类中,构造函数会变得越来越大,我们一眼就可以察觉到哪里不对劲。...依赖注入设计模式将类依赖的创建与类本身分离开来,并将此责任转移到类注入容器,从而允许程序设计解耦,并遵循单一职责依赖倒置原则(同样可靠)。...3.4 隐藏依赖关系 在使用依赖注入时,受影响的类应该使用公共接口清楚地公开这些依赖,方法是在构造函数中公开所需的依赖,或者使用方法(setter)公开可选的依赖

27330

创建可维护可测试的 Windows 窗体应用程序的 10 种方法(译)

接口创建被动视图 一种特别有用的技术是使你创建的每个窗体用户控件都实现一个视图接口。此接口应包含允许设置检索视图中控件的状态内容的属性。...目标是这些视图接口的实现是完全被动的。理想情况下,你的 Forms UserControls 背后的代码中不应该有任何条件逻辑。 下面是一个用于新用户条目视图的视图接口示例。...这个视图的实现应该是微不足道的。任何业务逻辑都不属于后面的代码(我们接下来将讨论它属于哪里)。...在许多情况下,这将涉及调用其他对象业务服务,因此你需要将它们作为依赖注入到命令对象中。你的命令对象本身应该可以(并且直接)进行单元测试。 7....使用 IoC 容器管理依赖 如果你正在使用 Presenter 类 Command 类,那么你可能会发现它们所依赖的类的数量随着时间的推移而增长。

1.2K10

Gitlab CICD 实践六:统一管理 protocol buffer,API 大仓设计与实现

如果联调期间,A服务改动了该接口,还需重复前面的步骤,非常繁琐。 由此引出两个问题,proto文件放在哪合适?调用方如何获取生成的接口客户端代码?...Gitlab CI\CD流水线脚本一个道理,最终不得不抽取公共脚本到一个专属仓库,其他项目采用引入的形式来做。但是非流水线脚本,没有引入操作。...使用时通过go依赖引入,无需编写生成代码的脚本。 依赖服务A的接口,只需go get服务A的接口文件生成的代码。...使用时go get依赖一个大仓库即可 存在的问题 依赖服务A的接口,需要通过go get引入所有服务的接口文件生成的代码 不过这个问题不严重 这个仓库体积不大,因为接口定义文件,整个公司也没多少,一个项目才几个文本文件...依赖包里还有 swagger 接口文档 java 可使用maven插件,具体请参考maven + protobuf + gRPC + gitlab CI 其他语言 暂未考虑,需要时再扩展吧。

1.2K10

Spring Boot with Mysql

1.建立数据库连接(database connection) 在上篇文章中我们新建了一个Spring Boot应用程序,添加了jdbcdata-jpa等starters,以及一个h2数据库依赖,这里我们将配置一个...spring.jpa.show-sql = true来显示自动创建表的SQL语句,通过spring.jpa.database = MYSQL指定具体的数据,如果不明确指定Spring boot会根据classpath中的依赖自动配置...,该接口继承自CrudRepository,这个接口放在src/main/java/com/test/bookpub/repository包中,具体代码如下: package com.test.bookpub.repository...@ManyToOne, @ManyToMany表明具体的数据存放在其他表中,在这个例子里,书作者是多对一的关系,书出版社是多对一的关系,因此book表中的authorpublisher相当于数据表中的外键...@Repository 用来表示访问数据库并操作数据的接口,同时它修饰的接口也可以被component scan机制探测到并注册为bean,这样就可以在其他模块中通过@Autowired织入。

3.5K20

这个问题困扰了三歪几天

程序员天生需要团队协作,而协作的正能量要放在问题的有效沟通上。个性化应尽量表现在系统架构算法效率的提升上,而不是在合作规范上进行纠缠不休的讨论、争论,最后没有结论。...所以,一般我们的二方包都应该是很清爽的。比如我提供的二方包,它就只有接口接口所需要的实体,没有杂余的繁琐依赖。 业务方是不关心接口的实现的,我们只需要暴露接口就好了。...假设环境配置的问题能解决,等着我们还有各种依赖的问题。admin系统二方包的依赖冲突了怎么办? 比如说:相同的配置,不同的配置信息。...代码的简单意味着依赖会很少,比如我们的dao层就应该只有MybatisSpring相关的依赖,其余的就不应该有。...每个版本的变化应该被记录,二方库由谁维护,源码在哪里,都需要能 方便查到。除非用户主动升级版本,否则公共二方库的行为不应该发生变化。 ...... 三歪瞎扯 为什么我们会用多模块(Module)?

72040

超级干货:你应该知道的那些编程原则!!

每个程序员都可以从理解编程原理模式中受益。这篇概述用于我个人参考,同时我也把它放在这。也许这在设计、讨论或复查中对你有所帮助。但请注意,这还远远不够,你常常需要在相互矛盾的原则之间做出权衡。...不论何时编写代码,要想着最后维护代码的人是一个知道自己住在哪里的暴力精神病人。 如果某个入门的人掌握了代码,他们就会从阅读学习代码中获得乐趣,以这样的想法去编写代码注释。...为什么 一个模块的更改通常会导致其他模块的更改,产生涟漪效益。 由于模块间的依赖性增加,模块装配可能需要更多的工作和/或时间。 特定的模块可能难以重用/或测试,因为必须包含相关模块。...使模块不受关于其他系统如何执行其任务的假设约束,而是依赖于约定。 以防止模块更换时出现副作用。...接口应该比实现它的代码更依赖于调用它的代码。 为什么 如果类实现了不需要的方法,则调用方需要了解该类的方法实现。

19110

程序员能力提升:你应该知道的那些编程原则!!

每个程序员都可以从理解编程原理模式中受益。这篇概述用于我个人参考,同时我也把它放在这。也许这在设计、讨论或复查中对你有所帮助。但请注意,这还远远不够,你常常需要在相互矛盾的原则之间做出权衡。...不论何时编写代码,要想着最后维护代码的人是一个知道自己住在哪里的暴力精神病人。 如果某个入门的人掌握了代码,他们就会从阅读学习代码中获得乐趣,以这样的想法去编写代码注释。...为什么 一个模块的更改通常会导致其他模块的更改,产生涟漪效益。 由于模块间的依赖性增加,模块装配可能需要更多的工作和/或时间。 特定的模块可能难以重用/或测试,因为必须包含相关模块。...使模块不受关于其他系统如何执行其任务的假设约束,而是依赖于约定。 以防止模块更换时出现副作用。...接口应该比实现它的代码更依赖于调用它的代码。 为什么 如果类实现了不需要的方法,则调用方需要了解该类的方法实现。

29311
领券