Delphi本地功能

Nic*_*ski 3 delphi scope function

我有一个包含在delphi单元中的函数库,我们将其称为UtilitiesU.其中一些函数只是辅助函数,仅在UtilitiesU中使用.我想将这些功能的范围限制在UtilitiesU.这些是我所知道的方法:

  1. 从接口中删除声明并在实现中将其依赖于其依赖项 - 函数定义的凌乱,反直觉的顺序,如果存在例如相互依赖,则不总是可能的
  2. 将所有函数放入一个静态类(ala Java)中,并根据需要将它们公开或私有 - 太多样板,错综复杂
  3. 声明辅助函数是使用它们的函数的局部函数 - 与第1点相同的问题

理想情况下,我想用C/C++方式来做 - 也就是说,在实现部分中将它们声明为静态.这可能吗?有没有更好的办法?

Ken*_*ssa 10

您仍然可以声明您的函数:

implementation

procedure ShowMe;forward;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMe;
end;

procedure showMe;
begin
  ShowMessage('Hello');
end;
Run Code Online (Sandbox Code Playgroud)

因此,您可以按照所需的顺序将所有功能放在实施后.向前声明它们,并在任何你想要的地方进一步定义它们.

我个人更喜欢将这些方法声明为类方法.(让我们称之为"名字空间友好").但最终结果几乎是一样的.

  • 将第一类函数强制转换为类不是"名称空间友好",它只是OO拜物教.在与此问题相关的各个方面,Delphi已经"命名空间".问题是如何在实现之前声明某些东西,以使其可以在它们之前实现的其他内容中引用.该语言提供了非常直接地实现这一目的所需的原语,而不需要存在不必要的伪容器 - 这是其他语言由于其OO固定而必然出现的.在Delphi中,只需使用Delphi方式即可.向前 (8认同)
  • @deltics在什么意义上是Delphi名称空间友好?在大型项目中,通常需要注意使用子句的顺序并且必须使用完全指定的名称.在很多情况下,我在一个单元中发生变化,使得另一个单元中完全不相关的代码片段失败,因为由于缺少细粒度的命名空间而突然使用了不同的函数.静态类方法提供了这一点. (3认同)