|
|
1
7
问题1:就是这样 杰出的 练习。 将包装规格视为 规范 ,您可以将其提供给其他开发人员,以便他们知道如何与您的代码进行接口。 问题2:我认为AdaGIDE实际上使用GNAT编译器进行所有编译,所以实际上是GNAT负责可接受的文件名(这是可以配置的,但是除非你有一个非常有说服力的理由这样做,否则简单地使用GNAT/AdaGIDE的文件命名约定要简单得多。)不过,与你的问题更相关的是,没有充分的理由将父单元作为单独单元名称的一部分。但是看看第三个问题的答案。。。 问题3:Ada的第一个版本ADA83引入了子单元,部分是为了帮助模块化代码,并允许延迟开发和编译。然而,Ada软件开发实践几乎放弃了子单元的使用,所有的过程/函数/任务/etc体都简单地保存在包体中。它们仍在某些领域使用,比如可能需要特定于平台的子程序版本,但大多数情况下很少使用。它留下更少的文件来跟踪,并将包的实现代码放在一起。因此,我强烈建议您忽略子单元功能,将所有实现代码放在包体中。 |
|
2
4
将问题分解为组件(包)是很正常的,每个组件(包)支持不同的方面。如果你已经学会了Ada,那么首先编写软件包的规格说明是很正常的,然后讨论(也许和你自己)为什么这是正确的设计,然后实现它们。我认为,这在任何支持规范和实体的语言中都是正常的,例如,C。 就我个人而言,我会边走边检查汇编,以确保我没有做任何蠢事。 至于分离-一个(不是很好)的原因是减少混乱,以防止单位太长。另一个原因(对于我编写的代码生成器)是代码生成器不需要担心在UML模型中保留开发人员手工编写的代码;所有代码体都是分开的。第三种可能是与环境相关的实现(例如,Windows vs Unix),您可以让编译器看到每个环境的独立主体的不同版本(不过,人们通常使用库包)。
它希望在一个名为
已经够清楚了。
|
|
3
1
您确实可以按照您描述的方式工作,当然,除非在所有包体都有某种实现之前,您的程序不会链接。因此,我认为更正常的做法是编写一个虚拟包体,其中所有过程都实现为:
所有功能的实现方式如下:
巨大的 但在这种情况下,更好的解决方案几乎总是重构代码。所以每当我看到一个,它是一个大红旗。 至于文件名问题,这是一个gnat问题,而不是Ada问题。Gnat对编译器采取了一种不同寻常的立场,即文件内容的名称决定了文件本身的名称。世界上可能还有其他编译器可以做到这一点,但我在30年的编码生涯中还没有找到一个。 |
|
|
brcebn · lib+初始值设定项上的Rspec 8 年前 |
|
|
kenji · 如何使用来自外部服务的验证来存根模型 8 年前 |
|
|
Alessandro Argentieri · Junit无法模拟类 9 年前 |
|
|
joshweir Raveena · RSpec存根循环中的相同方法 9 年前 |
|
|
user3066571 · 尝试安装多窗口功能时Chefspec不工作 10 年前 |
|
|
user970500 · 添加安全标头 10 年前 |
|
|
Camden Narzt · 我怎样才能在最短的时间内完成任务? 11 年前 |