如何将MS Access函数和子例程组织到标准模块中?

时间:2017-08-08 15:44:25

标签: vba ms-access module standards code-organization

使用MS Access VBE将子程序和函数分组到标准模块中的约定是什么?我可以在模块中找到关于命名法和子程序和函数功能的大量信息,但如何将子程序和函数分组到标准模块中没有任何内容。

目前,我有两个总标准模块 - 一个名为" Subs"还有一个名为" Functions",每个包含数百行代码,它们正在成为导航的拖累。我可以使用哪些指导方针来改善它?

3 个答案:

答案 0 :(得分:0)

我尝试保留可重复使用的子应用和功能部分来自应用特定的部分 我尝试按功能分组。这样我可以在处理文本文件导入/导出时导入一个模块,另一个用于浏览文件或文件夹,导出文件或文件夹,从完整路径中提取文件夹等等。 此外,我通常将模块导出到.bas文件(右键单击模块,然后导出),我可以在其他应用程序中重新导入。

答案 1 :(得分:0)

您之后所谓的抽象

一个成员是SubFunctionProperty根本不重要(请不要说你有{{} 1}}模块...)。你关心的是目的

为他们所使用的内容命名,并通过目的重新组合公共成员。保持公众成员'实现简单,处于相对较高的抽象级别

用简单的英语,这意味着如果你有一个制作咖啡和拿一个杯子的程序,知道从哪里取水,牛奶,奶油,糖,榛子和法国香草的香气,知道要倒多少所有的东西,激起它并为它服务(或者你在数百行代码中做的任何事情),那么你有一个程序可以做很多事情。

拆分它。将其分解为小步骤,每个步骤都比以前更加专业化(即处于较低的抽象级别)。

Properties

请注意,此Public Sub MakeCoffee() Dim selectedCoffeeType As CoffeeType selectedCoffeeType = PickCoffeeType Dim selectedSize As CoffeeSize selectedSize = PickCoffeeSize(selectedCoffeeType) GrindGrains selectedCoffeeType Infuse selectedCoffeeType, selectedSize AddExtras End Sub 程序无法关注机器中是否有水,或者是否需要使用牛奶,是否有所选尺寸的杯子,是否有& #39;所选类型的谷物,倒入多少糖和/或奶油,或任何其他不相关的细节:它允许您选择类型和大小,并使用该信息来做其行为。

详细信息位于较低的抽象级别,在此过程中,在MakeCoffeePrivate Function过程中实现。它们在它下面,因为它们密切相关,如果你从上到下阅读模块,它会告诉你一个从非常高级到非常专业和详细的故事 - 从来不需要200线程。

现在又出现了另一个模块,你需要一台出售薯片和可乐(或生物三明治和瓶装水)的自动售货机。同样的事情:抽象决定了事情如何分裂。

然后您需要咖啡机来实现支付功能。您要从自动售货机复制现有代码吗?从咖啡机的代码中调用自动售货机的私人程序?幸运的是,你无法做到这一点。不,您将提取一个类并将支付模块功能封装到自己的专用对象中,咖啡机和自动售货机都可以使用它。

如果您使用Rubberduck,那么您可以在每个模块中添加Private Sub注释,并实际将您的模块整理到文件夹和子文件夹中,您可以使用加载项浏览这些文件夹和子文件夹。 s Code Explorer 功能 - 所以你绝对没有理由担心有太多的模块"。

答案 2 :(得分:0)

非常感谢您的反馈,@ Mat's_Mug和@iDevlop。你各自的抽象解释和更具体的回应都让我感动了我正在寻找的答案。 看起来你们两个人也在暗示,在我提出这个令我怀疑的问题之前,我的徒劳无功的谷歌搜索是什么,以及@ Darren_Bartrup-Cook上面提到的内容 - 组织模块没有正式的结构,适当的结构可以从一个数据库到另一个。请纠正我,如果我的外卖是错的,但我从你们两个人所说的内容中得到的是,追求的一般原则是:

  • 找到在您自己的代码中有意义且有用的分组(最好是冒险分组太小而不是太大,也许?)
  • 将实现保持在高级抽象级别,以便于调试代码的可读性/易用性