Questions tagged «modules»

1
模块还是包装?
每当我做什么时,from 'x' import 'y'我都想知道哪个模块被认为是“模块”,哪个模块被认为是“包装”,为什么它又不是?
140 python  packages  modules 

3
如何构建完全模块化的Web应用程序
在接下来的几个月中,我们将开始一个项目,我们将采用为客户端(v1)构建的系统,并从头开始对其进行重建。v2的目标是使其模块化,以便该特定客户端拥有自己使用的一组模块,然后另一个客户端可以完全使用另一组模块。这里的窍门是,公司A可能具有一系列结帐和用户模块,这些模块会更改系统的工作方式。公司B可能会遵循标准的结帐程序,但会自定义产品的浏览方式。 当您要从头开始构建一个要Core在所有客户端之间共享的应用程序,同时又要为要专门针对客户端修改的内容保持灵活性时,应用程序体系结构有哪些好的方法? 我已经看过CodeIgniter的钩子,并且认为这不是一个好的解决方案,因为我们最终可能会有250个钩子,但仍然不够灵活。还有哪些其他解决方案?理想情况下,我们不需要在沙子上画一条线。

6
将“一堆东西”实用程序项目分离为具有“可选”依赖项的各个组件
在使用C#/。NET进行一系列内部项目的多年中,我们已经使一个库有机地发展成为一大堆东西。它被称为“ Util”,我敢肯定你们中的许多人在您的职业生涯中见过这些野兽之一。 该库的许多部分都是非常独立的,可以分成单独的项目(我们希望将其开源)。但是,在将它们作为单独的库发布之前,需要解决一个主要问题。基本上,在这些库之间有很多我称之为“可选依赖项”的情况。 为了更好地说明这一点,请考虑一些适合成为独立库的模块。CommandLineParser用于解析命令行。XmlClassify用于将类序列化为XML。PostBuildCheck对已编译的程序集执行检查,如果失败则报告编译错误。ConsoleColoredString是彩色字符串文字的库。Lingo用于翻译用户界面。 这些库中的每一个都可以完全独立使用,但是如果将它们一起使用,则将具有有用的额外功能。例如,将CommandLineParser和都XmlClassify公开需要的构建后检查功能PostBuildCheck。同样,CommandLineParser允许选项文件使用彩色字符串字面量require来提供ConsoleColoredString,并且它通过支持翻译文档Lingo。 因此,关键区别在于这些是可选功能。可以将命令行解析器与纯色的无色字符串一起使用,而无需翻译文档或执行任何生成后检查。或者可以使文档可翻译但仍然没有颜色。或既彩色又可翻译。等等。 通过查看该“ Util”库,我发现几乎所有潜在可分离的库都具有将其绑定到其他库的此类可选功能。如果我实际上需要将这些库作为依赖项,那么这些东西根本就不会被弄乱:如果您只想使用一个库,则基本上仍然需要所有库。 是否存在任何建立的方法来管理.NET中的此类可选依赖项?

1
单个python文件分发:模块还是包?
假设我有一个有用的python函数或类(或任何类)useful_thing,该函数或类存在于单个文件中。本质上有两种组织源树的方法。第一种方法使用单个模块: - setup.py - README.rst - ...etc... - foo.py 在useful_thing中定义的位置foo.py。第二种策略是制作一个包装: - setup.py - README.rst - ...etc... - foo |-module.py |-__init__.py 在useful_thing中定义的位置module.py。在包装的情况下__init__.py看起来像这样 from foo.module import useful_thing 这样在两种情况下都可以from foo import useful_thing。 问题:首选哪种方式,为什么? 编辑:由于用户说这个问题的格式不正确,因此我要补充一点,官方python打包教程似乎并未评论上述哪种方法是首选方法。我明确不提供自己的利弊清单,因为我对是否存在社区首选方法感兴趣,而不是对利弊进行讨论:)

4
拆分大型模块是否有负面影响?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我正在浏览一个github项目,发现此模块有1万多行。 在一个模块中包含这么多的代码是一种惯例吗? 在我看来,这应该分为多个模块。也许每个数据库引擎一个。 开发人员从制作这样一个巨大的模块(而不是“将其全部放在一个地方”)获得什么好处,或者将其拆分(而不是“复杂性”)有什么坏处?

2
为什么包和模块是Java 9中的独立概念?
Java 9除了软件包外还将具有模块。通常,语言有其中一种。大多数程序员将两个术语视为同义词。模块建立在包的顶部,将它们视为原语。复合模式建议对原始体和复合体进行统一处理。否则会发生不好的事情。例如,看一下Valhalla项目,他们尝试在其中尝试为基元(值)和引用类型改造通用超类型。 模块和包代表语义上独立的概念吗?这意味着对于任何一种语言都应同时使用(关注点分离)。还是Java必须兼具两者才能向后兼容? 为什么要引入新概念而不是增加现有概念? JSR 376:在Jigsaw项目中实现的“ Java平台模块系统” 。 根据SOTMS 模块是一个命名的,自描述的代码和数据集合。它的代码被组织为一组包含类型(即Java类和接口)的软件包。其数据包括资源和其他种类的静态信息。 JLS小心地避免定义什么是包。来自维基百科: Java软件包是一种将Java类组织到类似于Modula模块的名称空间中的技术,以Java提供模块化编程。 我知道引用Wikipedia是一种不好的做法,但它反映了大家的共识。从模块化编程入门: 有时使用术语包而不是模块(如Dart,Go或Java)。在其他实施方式中,这是一个独特的概念。在Python中,程序包是模块的集合,而在即将到来的Java 9中,计划引入新的模块概念(具有增强的访问控制的程序包的集合)。

2
Python中的类与模块
Python有许多re执行一组特定操作的模块(例如)。您可以调用此模块的函数并获取结果,并且该模块作为一个整体有一个主意(在这种情况下,处理正则表达式)。 类似乎做几乎完全相同的事情,但是它们似乎比模块更多地使用属性。 模块与类在哪些方面有所不同?(我知道我不能对模块进行子类化,是吗?)什么时候应该使用类而不是模块?
19 class  modules 

3
软件工程中实际上是什么模块?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 根据Stephen Schach的“经典和面向对象的软件工程”,第6章: 模块由单个代码块组成,可以通过调用过程,函数或方法的方式来调用 这似乎非常模糊和广泛。因此,谁能清楚地解释它并显示一些实际的示例,以将需求分解为模块?谢谢。
18 software  modules 


2
如今如何模块化和打包客户端Javascript库?
我一直在追赶现代的客户端JS生态系统,并阅读CommonJS和AMD(包括相关工具-browserify,requirejs,onejs,jam等等)。如果我正在编写Javascript库,如何对它进行模块化/打包,以便可以最广泛地访问它(理想情况下,对CommonJS,AMD尤其是两者都不满意的用户)? 像jQuery这样的流行库似乎只是使用老式文件串联来构建自身,并动态检测它是否应该写入exports或全局上下文。我目前正在做同样的事情,但是主要的缺点是,如果我(与jQuery不同)依赖于一些库,那么不必要求用户手动预先包含传递集就很好了。(尽管我目前只有两个依赖项。)当然还有全局名称空间污染。 还是为每个上下文生成我的库的多个版本是最干净的? 我也想知道打包和发布。有几种系统,但是我相信主要的系统是bower,它很容易处理,因为它所做的只是获取。但是,我想知道是否也应该针对其他组件系统,例如component(需要CommonJS)。 我还应该注意其他相关方面吗?是否有所有这些都可以遵循的良好示例项目?

1
架构模块化服务应用程序
我正在考虑设计一种本质上是模块化的新解决方案,并希望创建一个支持该设计的结构,以便将来轻松进行扩展,明确分离关注点,按模块进行许可等。在网络上发现的关于模块化或组合应用程序的是以UI为中心的,专注于Silverlight,WPF等。就我而言,我正在开发WCF服务应用程序,该程序将由从事各种UI项目的其他开发人员使用。 背景 我的项目的目标是创建一个集中的业务/域逻辑源,以支持我们的多个当前重复流程,规则等的业务应用程序。虽然并非可以实现模块化的所有好处,但我想抓住建立一个可以利用我们可以利用的那些部分的框架的机会。 我通过查看服务应用程序公开的API来开始设计。显然,可以按照我所考虑的模块化路线来隔离服务。例如,我将拥有FinanceService,InventoryService,PersonnelService等服务,这些服务将我的服务操作分组以在API中提供高内聚性,同时保持较低的耦合度,因此客户端仅需使用与他们的应用程序相关的服务。 对于我来说,我可以为每个服务分别拥有单独的模块,例如MyApp.Finance,MyApp.Inventory,My.Personnel等。跨领域关注点和共享类型将在MyApp共享程序集中。从这里我有点束缚。 (哦,我应该提一下,我将使用IoC容器进行依赖注入来保持应用程序的松散耦合。我不会提及哪个容器,因为我不想打开Pandora的盒子!) 在MyApp.ServiceHost中,我将创建一个与每个模块相对应的服务宿主文件(.svc),例如FinanceService.svc。服务主机需要服务的名称,该名称与配置文件中的信息相对应,该配置文件包含定义服务合同的接口。然后,将IoC配置用于映射要使用的接口的具体实现。 1.服务层应该实现API并委托给模块,还是应该使模块自包含(因为它们包含与该模块相关的所有内容,包括服务实现)? 解决该问题的一种方法是拥有一个MyApp.Services“模块”,其中包含服务合同的实现。每个服务类都简单地委派给包含该操作的域逻辑的相应模块中的另一个类。例如,MyApp.Services中的FinanceService WCF类委托给另一个接口,该接口在Finance模块中实现以执行操作。例如,这将使我能够维护精简的服务外观并将实现“插入”到服务实现中,并且无需使模块担心WCF。 另一方面,也许每个模块都是独立的,因为它具有接口和实现。服务主机引用模块中的服务合同接口,并且IoC也配置为使用模块中的适当实现。这意味着除了添加新的.svc文件和IoC配置信息外,无需更改服务层即可添加新模块。 我正在考虑如果从标准WCF切换到RESTful服务接口,或者转而使用RIA服务之类的影响。如果每个模块都包含服务合同的实现,那么如果我更改服务技术或方法,则必须在每个模块中进行更改。但是,如果外观是其自己的模块,那么我只需要换出该部分即可进行更改。然后,这些模块将必须实现一组可能在共享程序集中定义的合同(接口)的不同集合??? 2.处理模块之间的资源共享和/或模块之间的依赖关系的最佳方法是什么? 以接收操作为例。乍一看,这很有意义,因为进货是库存功能,因此进入库存模块。但是,在财务方面,我们还需要生成收据并授权付款。 一方面,我希望使用某种类型的域事件/消息传递来传达操作。库存模块引发一个GoodsReceivedEvent,该事件由Financial模块处理以生成收据并启动付款过程。但是,这意味着财务模块需要了解已收到的库存项目。我可以简单地通过ID来引用它们,但是如果我需要收据的其他信息,例如名称和/或描述,单位成本等,该怎么办?每个模块都拥有自己的版本的清单项目以适应该模块的需求是否有意义?在这种情况下,财务模块在处理GoodsReceivedEvent时将必须执行自己的库存项目查找。 ... 我之所以使用此示例,是因为我已经与各种ERP系统进行了大量合作,并且知道它们是采用这种类型的模块化设计的-我只是不知道如何操作。我上面也没有明确提及,但是我更喜欢遵循域驱动设计原则来设计解决方案,并相信这种类型的模块化恰好适合该领域。 非常感谢我对此有所帮助。

1
在Javascript文件中声明module.exports的约定
是否应声明module.exports没有Javascript / Node.js模块文件的约定? 应该在文件的开头,例如: module.exports = Foo; function Foo() { this.bar = 'bar'; } Foo.prototype.getBar = function() { return this.bar; } 还是应该在文件末尾: function Foo() { this.bar = 'bar'; } Foo.prototype.getBar = function() { return this.bar; } module.exports = Foo; 我知道没有技术差异。第一个示例由于声明悬挂而完全有效。 所以我想知道是否存在某种最佳实践。

1
一个人可以编辑一个内置的Python模块吗?
我目前正在学习Python,并且在本书中谈到使用数学库。我浏览了Python网站,发现该库有点稀缺,正在编写一些更有用的函数。例如,我继续写了一个函数来获取系数并返回方程的根。本质上是二次公式函数。我想知道是否可以将其添加到python Math库中。如果不是,如何保存它,以便可以通过调用它在其他编写的Python程序中使用该函数?

3
为什么.NET模块将模块文件名与名称空间分开?
在Scheme编程语言(R6RS标准)的实现中,我可以如下导入模块: (import (abc def xyz)) 系统将尝试寻找一个文件$DIR/abc/def/xyz.sls,该文件$DIR是您保存Scheme模块的某个目录。xyz.sls是模块的源代码,如有必要,它可以即时进行编译。 在这方面,Ruby,Python和Perl模块系统相似。 另一方面,C#涉及更多。 首先,您必须根据每个项目引用dll文件。您必须明确引用每个。这比说要复杂得多,将dll文件拖放到目录中,然后让C#按名称进行选择。 其次,dll文件名与dll提供的名称空间之间没有一一对应的命名关系。我可以体会这种灵活性,但是它也可以一发不可收拾。 为了具体化,如果我说这话using abc.def.xyz;,C#会尝试abc/def/xyz.dll在C#知道要查找的某个目录中找到一个文件(可以根据每个项目进行配置),那就太好了。 我发现处理模块的Ruby,Python,Perl,Scheme方法更加优雅。新兴语言似乎倾向于更简单的设计。 为什么.NET / C#世界以额外的间接级别以这种方式执行操作?

1
打包Python程序的良好做法
在个人和专业项目的背景下,我已经使用Python一段时间了。 最近发生在我身上的一件事是,我从未想过部署Python程序的好方法。基本上,因为它主要是一堆脚本,所以我通常只将它们复制到要部署它的机器上,瞧! 但是我相信应该有一些关于如何部署Python项目的良好实践。我听说过Python Eggs,但对它并不熟悉,以了解它是否是一个不错的选择。还是带有一堆Shell脚本来运行核心模块脚本的普通老压缩包? 基本上,我希望能够做一个很好,优雅且自包含的部署,而不仅仅是在这里和那里复制文件,因为它不允许轻易地进行版本跟踪,而且非常混乱。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.