gpt4 book ai didi

Delphi - 是否在类里面声明?

转载 作者:行者123 更新时间:2023-12-03 15:20:39 24 4
gpt4 key购买 nike

就在最近,可能是因为我一直在维护一些旧代码,我开始考虑如何/为什么做事。正如你所做的那样。

我的大部分 Delphi 编程都是在内部学习的,或者是从散布在网络或手册中的示例中学习的。有些事情的完成只是因为“我就是这么做的”

我目前想知道的是变量、过程、函数等的声明

当我使用表单时,我会将所有程序和函数置于公共(public)私有(private)下。虽然我会尽量避免全局变量和常量通常会在接口(interface)或实现中位于 varconst 下,具体取决于需要调用它们的位置(有时虽然他们将在公共(public)/私有(private)场合进行)

否则,如果它只是一个单元,我将在接口(interface)中声明该过程并在实现中使用。我最近维护的一些代码没有接口(interface)声明,而是通过过程后的调用正确排序了所有内容...

有正确的方法吗?类里面应该做什么/不应该做什么有规则吗?或者这是一种风格/当你开始做事的时候?

编辑以添加

我的问题不是关于程序声明是否属于私有(private)/公共(public),而是 TForm 单元中的所有声明是否应该属于其中之一。同样,var/const 应该在其中之一吗?

进一步说明

我了解,不在界面中声明,或在公共(public)/私有(private)/等中声明会影响程序/函数对我的应用程序中其他单元的可见性。
我的问题的核心是为什么我不想想要申报? - 特别是当在表单/单元中工作时,当放置在私有(private)中时,声明的东西不可用于其他单元......

干杯丹

最佳答案

根据具体实例可以具有不同值的所有内容都属于该类,即

TDog = class
strict private
FColor : TColor;
FName : String;
public
property Color : TColor read FColor write FColor;
property Name : String read FName write FName;
end;

颜色和名字显然是每只狗的属性(每只狗在这里都有其他值)。

一般规则:

  • 字段属于 private(在此类和本单元中可见)或 strict private(仅在此类中可见)
  • 如果您需要访问其他类的字段,请创建一个 public 属性。这使您可以自由地将简单的字段访问更改为稍后更复杂的 getter/setter 方法,而无需更改类的接口(interface)。
  • 一切都应该尽可能本地化。如果 private 就足够了,则无需将其设置为 protected(在子类中也可见)。并且只将那些您真正需要的外部内容公开
  • 表单:仅应发布那些您希望存储在 DFM 文件中的内容
  • 在实现部分中放置尽可能多的内容,在接口(interface)部分中放置尽可能少的内容。对于 uses 子句也是如此。

您可能会混淆术语“全局变量”。如果它是在类中声明的,那么它就不是全局变量(即使声明为 public)。全局变量(您正确地认为应该避免)始终位于接口(interface)或实现部分中的 var 部分(最好遵循上述一般规则)

关于Delphi - 是否在类里面声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2117797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com