加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

德尔福 – 在课堂上宣布与否?

发布时间:2020-12-15 09:37:35 所属栏目:大数据 来源:网络整理
导读:就在最近,可能是因为我一直在维护一些旧的代码,我已经开始研究如何/为什么我做事了.像你一样做. 我的大多数Delphi编程都是内部选择,或者是分散在Web或手册中的示例.有些事情只是因为“这就是我做的” 我目前想知道的是声明,变量,程序,功能等. 当我使用表格时
就在最近,可能是因为我一直在维护一些旧的代码,我已经开始研究如何/为什么我做事了.像你一样做.

我的大多数Delphi编程都是内部选择,或者是分散在Web或手册中的示例.有些事情只是因为“这就是我做的”

我目前想知道的是声明,变量,程序,功能等.

当我使用表格时,我会将所有程序和功能置于公开或私下.虽然我会尝试避免全局变量和常量,但通常会在接口或实现中使用var或const,具体取决于它们需要调用的位置(有时它们将在公共/私有中)

否则,如果它只是一个单元,我将在接口中声明该过程并在实现中使用.我最近维护的一些代码没有接口声明,但是在程序之后通过调用正确地订购了所有代码…

有没有正确的方法来做到这一点?课程中应该/不应该有什么规则?或者它是一种风格/当你开始的时候?

编辑添加

我的问题不是关于程序的声明是私下/公开的,而是一个TForm单位的所有声明是否应该进入其中一个.同样var / const应该是一个还是另一个?

进一步澄清

我知道不在界面中声明,或在public / private / etc中声明会影响我的应用程序中其他单元的过程/功能的可见性.
我的问题的核心是为什么我不想申报? – 特别是在私人放置时,在表单/单元中工作时,更明确的是声明的东西不可用于其他单位……

干杯

解决方法

这个问题似乎涉及范围.换句话说,事物可以或应该是多么容易获取.

作为一般准则,您希望尽可能地减少事物的范围,但仍然可以使它们足够可访问以便重复使用.原因是:

>随着系统的发展和变得越来越复杂,具有更大范围的东西更容易被访问.
>因此,他们更有可能以不受控制的方式重复使用.
>(听起来很棒)但问题出现在你想要做出改变的时候,许多事情会使用你想要改变的东西……
>在不破坏其他内容的情况下进行更改变得更加困难.

话虽如此,数据(变量,常量,类字段,记录属性)和例程(函数,过程,类上的方法)之间也存在区别.您需要更严格地将指南应用于数据,因为“奇怪使用”数据可能会以极其意外且难以调试的方式干扰您的某些例程.

另外要记住的是全局变量和类字段或记录属性之间的特殊区别:

>使用全局变量,整个应用程序只有一个’值'(松散使用的术语).
>使用类字段或记录属性,类或记录的每个新实例都有自己独立于其他实例的值.
>这似乎意味着,只要您的应用程序只需要一件事,您就可以使用某种形式的全局形式.但是,如前所述:这不是避免全局变量的唯一原因.

>我个人甚至倾向于避免全球惯例.
>我经常发现那些似乎没有被宣布为全球化的东西并不像最初想象的那样普遍. (例如Delphi VCL宣布一个全局Screen对象,我在2个屏幕上工作;我们的许多客户使用4到6个.)
>我还发现将可能已全局的例程与特定类关联为类方法很有用.它通常使得理解代码变得更容易.

因此,将这些“位置”从最大范围列为最小范围,您通常会努力选择列表中较低的位置(尤其是数据).

>界面全球
>实施全球化
>接口threadvar
>实现threadvar
>发布(注意我并不认为这是一个范围标识符;它确实是公共范围;“并且包括RTTI信息” – 理论上,将一些私有属性标记为“包括RTTI”也是有用的.)
>公众
>受保护
>私人
>严格私密
>局部变量

我必须承认:我在这里提出的内容肯定是过分简化.了解目标是一回事,实际实现目标则是另一回事.在封装(隐藏东西)和暴露受控接口之间存在平衡行为以实现高水平的可重用性.

成功平衡这些需求的技术属于一系列关于系统设计的更复杂(有时甚至是有争议的)问题.糟糕的设计很可能会导致人们“过多”地暴露“太大”的范围,并且(可能矛盾地)也会降低可重用性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读