当前位置:首页 > 网络编程 > 软件语言 > DELPHI > Delphi 程序员代码编写标准指南 (三)

Delphi 程序员代码编写标准指南 (三)

点击次数:42 次 发布日期:2008-11-09 08:46:35 作者:源代码网
源代码网推荐
广告载入中

源代码网整理以下3.5 类型

源代码网整理以下 

源代码网整理以下3.5.1 大写约定

源代码网整理以下 

源代码网整理以下如果类型的名字是保留字,那么它应全部小写。Win32 API类型通常全部大写,并且你必须遵循在Windows.pas或其他API单元中的详细类型名称的约定。对于其他变量名字,地一个字母应为大写,而其他字母应错落有致。下面是一些例子:

源代码网整理以下      var 软件开发网 www.mscto.com

源代码网整理以下        MyString : string;          //保留字

源代码网整理以下        WindowHandle : HWND;        //Win32 API 类型

源代码网整理以下        I : Integer;                //在System单元中引进的类型标识符

源代码网整理以下 

源代码网整理以下3.5.1.1 浮点指针类型

源代码网整理以下  软件开发网 www.mscto.com

源代码网整理以下不推荐使用Real类型,因为它的存在只是为了向前兼容早期的Pascal代码。在通常情况下用Double来实现浮点指针的需要。并且,Double对处理器和总线而言是做了最优化处理的,它也是IEEE中定义的标准数据格式。只有当需要的范围超出Double所定义的范围时才使用Extended。Extended是intel定义的类型且在Java中不支持。只有当浮点指针变量的实际字节大小有其意义时才使用Single。(比如当使用另一种语言的DLLs时)。

源代码网整理以下 

源代码网整理以下3.5.1.2 枚举类型 软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下枚举类型的名字需符合使用该类型的目的。该类型的名字需以字符T为前缀,以表明这是一个类型。枚举类型中的标识符列表必须包含两个或三个字符的前缀来对应于该枚举类型的名字- 例如:

软件开发网 www.mscto.com

源代码网整理以下        TsongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB);

源代码网整理以下一个枚举类型的实例的名字应与不要前缀的枚举类型(SongType)相同,除非有更好的原因来赋予该变量更特殊的名字,比如:FavoriteSongType1,FavoriteSongType2 等等。

源代码网整理以下 

源代码网整理以下3.5.1.3 变数和ole变数类型

源代码网整理以下 

源代码网整理以下通常不建议使用变数和Ole变数类型。但在只有运行时刻才能知道数据类型的程序中必须使用该类型,这种情形多出现在COM和数据库开发中。Ole变数使用在以COM为基础的编程中例如自动化和ActiveX控制,而变数使用在非COM的编程中,这是因为变数可以十分有效地存储本地Delphi字符串(同一个字符串变量一样),但Ole变数会将所有的字符串转换为Ole字符串(WideChar 字符串)并且并不实例运算 - 它们永远拷贝。 软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下3.5.2 结构类型

软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下3.5.2.1 数组类型

源代码网整理以下 

源代码网整理以下数组类型的名字需符合它们使用的目的。该类型的名字必须加以前缀T。如果须声明该数组类型的指针,那么该指针需加以前缀P而且应立即声明在该数组声明的前面。例如:

源代码网整理以下        type

源代码网整理以下          PCycleArray = ^TCycleArray;

源代码网整理以下          TCycleArray = array[1…100] of integer;

软件开发网 www.mscto.com

源代码网整理以下在实际应用中,数组的变量实例的名称应是其类型的名字去掉前缀T。

源代码网整理以下 

源代码网整理以下3.5.2.2 记录类型

源代码网整理以下 

源代码网整理以下记录类型的名字应符合使用它们的目的。其类型的声明应加以前缀T。如果要声明该记录类型的指针,就应加以前缀P并且应紧靠在类型声明的前面声明。例如:

源代码网整理以下        type

源代码网整理以下          PEmployee = ^TEmployee;

源代码网整理以下          TEmployee = record

源代码网整理以下            EmployeeName : string;

软件开发网 www.mscto.com

源代码网整理以下            EmployeeRate : Double;

源代码网整理以下          end;

源代码网整理以下 

源代码网整理以下3.6 语句

软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下3.6.1 if 语句

源代码网整理以下 

源代码网整理以下在if/then/else语句中最常发生的行为应放在then子句中,而其它发生可能性较小的行为应放在else子句中。

软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下尽量避免使用嵌套的if语句,在这种情形下应用多个if语句来判断各种可能。

源代码网整理以下 

源代码网整理以下不要使用if嵌套超过五级深度。应使代码编写得更加清晰、明了。

源代码网整理以下  软件开发网 www.mscto.com

源代码网整理以下不要在if语句中使用不必要的圆括号。

源代码网整理以下 

源代码网整理以下如果在if语句中有多个条件需测试,这些条件应按计算强度由少到多的顺序从左到右排列。这样做能使编译器在编译代码时获得布尔估算逻辑的捷径,从而使你的代码获得最佳的优化。举例来说,如果条件1快过条件2,而条件2快过条件3,那么在if语句中的排列应是:

源代码网整理以下         if 条件1 and 条件2 and 条件3 then

源代码网整理以下 

源代码网整理以下3.6.2 case 语句

源代码网整理以下 

源代码网整理以下3.6.2.1 一般性话题

源代码网整理以下 

源代码网整理以下在一个case语句中的各个独立的单元应以数字或字母顺序排列。

源代码网整理以下 

源代码网整理以下每一个case单元的动作行为应保持简单而不应该超过四到五行代码。如果所要执行的动作过于复杂应采用独立的过程或函数。

源代码网整理以下 

源代码网整理以下Case语句中的else子句只有当需要缺省行为或处理错误时才使用。

源代码网整理以下 

源代码网整理以下3.6.2.2 格式

源代码网整理以下 

源代码网整理以下case语句应遵循其它结构的缩格和命名约定。

源代码网整理以下 

源代码网整理以下3.6.3 while 语句

源代码网整理以下 

源代码网整理以下在一个while语句中不建议使用exit过程来跳出循环,尽量仅使用循环条件来跳出循环。

源代码网整理以下 

源代码网整理以下在一个while循环中所用的初始化代码应紧靠在进入while循环前面出现而不要被其它不相关的语句隔开。

源代码网整理以下 

源代码网整理以下任何结束后的处理应在循环之后立即进行。

源代码网整理以下 

软件开发网 www.mscto.com

源代码网整理以下3.6.4 for 语句

源代码网整理以下 

源代码网整理以下for语句只有当循环次数已知的情况下才能取代while语句使用。

源代码网整理以下 

源代码网整理以下3.6.5 repeat 语句

源代码网整理以下 

源代码网整理以下repeat语句的使用同while语句一样,并且遵循同样的通用方针。

软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下3.6.6 with  语句

源代码网整理以下 

软件开发网 www.mscto.com

源代码网整理以下3.6.6.1 一般话题

软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下with语句应节省使用,并且带有大量的警告。避免过度使用with语句并且在with语句中小心使用多个对象、记录等等。例如:

源代码网整理以下         with Record1, Record2 do

软件开发网 www.mscto.com

源代码网整理以下这些事情会使程序员感到困惑并难以发现问题所在。

源代码网整理以下 

源代码网整理以下3.6.6.2 格式

源代码网整理以下 

源代码网整理以下with 语句遵循本文档所说明的命名约定和缩格的格式规则。

源代码网整理以下 

软件开发网 www.mscto.com

源代码网整理以下3.7 结构异常处理 软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下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 }

软件开发网 www.mscto.com

源代码网整理以下     finally

源代码网整理以下       SomeClass1.Free;

源代码网整理以下       SomeClass2.Free;

源代码网整理以下     end; 软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下一个更安全更合适的分配过程应是:

源代码网整理以下     SomeClass1 := TSomeClass.Create;

源代码网整理以下     try

源代码网整理以下       SomeClass2 := TsomeClass.Create;

源代码网整理以下       try

源代码网整理以下         { do some code }

源代码网整理以下       finally

源代码网整理以下         SomeClass2.Free;

源代码网整理以下       end;

源代码网整理以下     finally

源代码网整理以下       SomeClass1.Free;

软件开发网 www.mscto.com

源代码网整理以下     end; 软件开发网 www.mscto.com

源代码网整理以下  软件开发网 www.mscto.com

源代码网整理以下3.7.3 try…except的使用

源代码网整理以下 

源代码网整理以下只有当在异常被触发而你想执行一些任务时才使用try…except。通常,你没有必要为了只是简单地在屏幕上显示一个错误信息而使用try…except语句,因为这会被Application对象自动执行。如果你想在except子句中执行完一些任务之后调用缺省的异常处理,使用raise来重新触发异常到下一个句柄。

源代码网整理以下 

源代码网整理以下3.7.4 try…except…else的使用

源代码网整理以下 

源代码网整理以下try…except中的else子句不建议使用,因为它会打断所有的异常包括那些你没有准备的异常。

源代码网整理以下 

源代码网整理以下3.8 类类型

软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下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 命名/格式 软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下方法的命名应遵循本文档中有关过程和函数的约定叙述。

源代码网整理以下 

源代码网整理以下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;

软件开发网 www.mscto.com

源代码网整理以下 protected

源代码网整理以下   function GetSomeField : Integer;

源代码网整理以下   procedure SetSomeField(Value : Integer); 软件开发网 www.mscto.com

源代码网整理以下 public

源代码网整理以下   property SomeField : Integer read GetSomeField write SetSomeField;

源代码网整理以下 end;

源代码网整理以下 

源代码网整理以下3.8.4 属性 软件开发网 www.mscto.com

源代码网整理以下 

源代码网整理以下3.8.4.1 命名/格式

源代码网整理以下 

源代码网整理以下属性如果是表示为一个私有域的存取器的话,那么它的名字应是它们所操作的域的名字除去解释符F。


源代码网推荐

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华