首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“每个文件一个类”规则是否存在一些Delphi特有的问题?

“每个文件一个类”规则是否存在一些Delphi特有的问题?
EN

Stack Overflow用户
提问于 2012-07-21 22:34:49
回答 3查看 1.6K关注 0票数 6

老标题:每个单元有多少课程是可取的?

我的问题是针对Delphi的。我认为在Java和C#世界中,通常每个类都有一个文件是一种相当普遍的做法。我认为这也是在Delphi中遵循的一个很好的规则,因为在Delphi中,如果一个单元中有多个类,那么私有成员就不是真正的私有成员。

因此,我很惊讶地听到两个不同的资深程序员(可能比我更有经验)告诉我,我的代码划分得太多了。他们中的一个告诉我不要害羞,在一个单元中安排5-6个班级。

“每个模块一个类”的规则是否有一些我不知道的问题,可以保证并解释这些程序员的反应?

EN

回答 3

Stack Overflow用户

发布于 2012-07-21 22:39:59

我不知道你说的模块是什么意思。

Java要求每个文件有一个公共类,并且类名必须与文件名匹配。没有如果,和,或者但是。在该文件中可以有其他包私有或私有方法,但只能有一个公共类。

如果"module“对您来说意味着" package”,那么我想说在一个包中有多个类是很常见的。没有规范;看看JDK本身就能明白这一点。在java.utiljava.langjava.sqljavax.swing中有许多类。

除了这两个,我不知道你或所谓的“高级程序员”指的是什么。我同意,任何事情都有可能做得过多,不应该盲目地遵循教条规则。

但分解是计算机科学的-no,是解决问题的基础。忽视它比过度使用它更常见。

票数 2
EN

Stack Overflow用户

发布于 2012-07-21 23:04:40

那得看情况。没有一个确切的规则可以遵循。通常你需要通过logical,common dependency或者更好的方法来理解业务的功能。

例如,如果你有很多小的辅助类,独立的,互补的类,那么就有理由把它们都放在一个单元中。就像波兰德在DB.pas部门做的那样。所有通用数据库的东西: TDataSet,TDataSource,TField等等。

表格,即TForm后代博兰建议每单位一个,因为dfm资源加载等。

通常当你写“use FOO;”的时候,意思是编译器包含了来自FOO的所有东西。您可以访问类、常量、类型等。所以,划分是好的,但保持理性是好的。

在Delphi的最新版本中,单元被视为namespaces。你可以更好地组织你的代码。

票数 2
EN

Stack Overflow用户

发布于 2012-07-21 23:06:39

一个单元一个类太严格了。有时类是相关的,因此它们可以连接到一个单元中。

受保护变量和私有变量的后门问题可以通过使用strict指令来修复:

代码语言:javascript
运行
复制
type
  TClass1 = class 
  private
    FField1 : Integer;
  strict private
    FField2 : Integer;
  end;

  TClass2 = class 
  public
    procedure MessWithClass1;
  end;



implementation
  procedure TClass2.MessWithClass1;
  var
    c1 : TClass1;
  begin
    c1.FField1 := 1;
    c1.FField2 := 2;   // Fails!
  end;     
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11593034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档