每一个case单元的动作行为应保持简单而不应该超过四到五行代码。如果所要执行的动作过于复杂应采用独立的过程或函数。
Case语句中的else子句只有当需要缺省行为或处理错误时才使用。
3.6.2.2 格式
case语句应遵循其它结构的缩格和命名约定。
3.6.3 while 语句
在一个while语句中不建议使用exit过程来跳出循环,尽量仅使用循环条件来跳出循环。
在一个while循环中所用的初始化代码应紧靠在进入while循环前面出现而不要被其它不相关的语句隔开。
任何结束后的处理应在循环之后立即进行。
3.6.4 for 语句
for语句只有当循环次数已知的情况下才能取代while语句使用。
3.6.5 repeat 语句
repeat语句的使用同while语句一样,并且遵循同样的通用方针。
3.6.6 with 语句
3.6.6.1 一般话题
with语句应节省使用,并且带有大量的警告。避免过度使用with语句并且在with语句中小心使用多个对象、记录等等。例如:
with Record1, Record2 do
这些事情会使程序员感到困惑并难以发现问题所在。
3.6.6.2 格式
with 语句遵循本文档所说明的命名约定和缩格的格式规则。
3.7 结构异常处理
3.7.1 一般话题
异常的处理大量地使用在错误纠正和资源保护方面。这就是说一旦资源被分配,一个try…finally必需加以使用来保证该资源被正确的释放。这种异常的保护也是指在一个单元的initializition/finalization或一个对象的constructor/destructor中进行资源的分配和释放。
3.7.2 try…finally的使用
任何情形下,每一次的分配都应跟随一个try…finally。举例来说,下面的代码会造成可能的错误:
SomeClass1 := TsomeClass.Create;
SomeClass2 ;= TsomeClass.Create;
try
{ do some code }
finally
SomeClass1.Free;
SomeClass2.Free;
end;
一个更安全更合适的分配过程应是:
SomeClass1 := TSomeClass.Create;
try
SomeClass2 := TsomeClass.Create;
try
{ do some code }
finally
SomeClass2.Free;
end;
finally
SomeClass1.Free;
end;
3.7.3 try…except的使用
只有当在异常被触发而你想执行一些任务时才使用try…except。通常,你没有必要为了只是简单地在屏幕上显示一个错误信息而使用try…except语句,因为这会被Application对象自动执行。如果你想在except子句中执行完一些任务之后调用缺省的异常处理,使用raise来重新触发异常到下一个句柄。
3.7.4 try…except…else的使用
try…except中的else子句不建议使用,因为它会打断所有的异常包括那些你没有准备的异常。
3.8 类类型
3.8.1 命名和格式
类类型的名称应符合使用它们的目的。类型名字应加以前缀T以表明这是一个类型的定义 - 例如:
type
Tcustomer = class(TObject)
类型的实例通常是没有前缀T的类型的名字 - 例如:
var
Customer :Tcustomer;
注意:查阅“构件类型的命名标准”来获得更多有关构件命名的信息。
3.8.2 域
3.8.2.1 命名/格式
类的域名遵循与变量标识符同样的约定除了它们应以F为前缀,来表明这是一个域的名称。
3.8.2.2 可视化
所有的域都必需是私有的。想在类的范围之外存取域得通过属性来使用。
3.8.3 方法
3.8.3.1 命名/格式
方法的命名应遵循本文档中有关过程和函数的约定叙述。
3.8.3.2 使用静态的方法
如果使用一个静态的方法,那么该方法就不能被该类的后代类所继承。
3.8.3.3 使用虚拟/动态的方法
如果你打算该类的方法能被后代的类所继承就得使用虚拟的方法。只有在该方法有多个继承时(直接的或间接的)才使用动态的方法。例如,一个类类型包含一个可继承的方法,而100个后代类要继承这种方法,那么这个方法就会动态地产生为100个后代类使用的内存。
3.8.3.4 使用抽象的方法
如果在一个类中使用抽象的方法,该类就不能被创建。只有在那些永远不会被创建的类中使用抽象的方法。
3.8.3.5 属性存取方法
所有存取类的方法都只能出现在类的private或protected部分。属性存取方法的命名应遵循过程和函数的约定规则。读取存取方法(方法读取器)必需以单词Get为前缀。写入存取方法(方法写入器)必需以单词Set为前缀。方法写入器的参数的名字应为Value,并且它的类型应是它所操作的属性的类型。例如:
TSomeClass = class(TObject)
private
FsomeField : Integer;
protected
function GetSomeField : Integer;
procedure SetSomeField(Value : Integer);
public
property SomeField : Integer read GetSomeField write SetSomeField;
end;
3.8.4 属性
3.8.4.1 命名/格式
属性如果是表示为一个私有域的存取器的话,那么它的名字应是它们所操作的域的名字除去解释符F。
属性的名字应是名词,不是动词。属性表示的是数据,而方法表示的是行为。
数组类型的名称应为复数。一般情况下属性的名称应为单数。
3.8.4.2 使用存取的方法
尽管没有要求,但还是建议尽量少地为一个表示私有域的属性而使用写入存取方法。
四、文件
4.1 工程文件
4.1.1 命名
工程文件应取个描述性的名字。例如,Delphi 4开发者指南错误管理器 的工程名字是:DDGBugs.dpr。一个有关系统信息的程序的名字就应象 SysInfo.dpr。
4.2 窗体文件
4.2.1 命名
一个窗体文件的取名应可以描述使用该窗体的目的,并加以后缀Frm。例如,一个“关于”的窗体的文件名应是AboutFrm.dpr。主窗体的文件名应是MainFrm.dpr。
4.3 数据模板文件
4.3.1 命名
数据模板的取名应能表示使用该数据模板的目的,它的名称应加以两个字符的后缀DM。例如,自定义数据模板的文件名字应为CustomersDM.dfm。
4.4 远端数据模板文件
4.4.1 命名
远端数据模板的取名应能表示使用该远端数据模板的目的,它的名称应加以三个字符的后缀RDM。例如,自定义远端数据模板的文件名字应为CustomersRDM.dfm。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



