收藏 分销(赏)

开发人员单元测试标准规范.docx

上传人:精*** 文档编号:2769657 上传时间:2024-06-05 格式:DOCX 页数:14 大小:24.72KB 下载积分:8 金币
下载 相关 举报
开发人员单元测试标准规范.docx_第1页
第1页 / 共14页
开发人员单元测试标准规范.docx_第2页
第2页 / 共14页


点击查看更多>>
资源描述
为了提高整个开发中心产品和项目测试效率,保证产品与项目内部系统集成测试顺利进行,现规定系统开发部各项目组在提交产品至项目监理部之前必要进行严格单元测试,即按照代码单元构成逐个进行测试。详细阐明如下:  ¨ 单元测试内容  单元测试根据是详细设计,应对模块内所有重要控制途径设计测试用例,以便发现模块内部错误。单元测试测试类型重要涉及:  1 模块接口测试;  2 模块局部数据构造测试; 3 模块边界条件测试;  4 模块中所有独立执行通路测试; 5 模块各条错误解决通路测试;  6 模块非法测试,例如在输入数字地方输入字母;  7代码重用测试,在开发过程中有些模块功能几乎相似,程序员在重用代码时也许忘掉在原有代码上修改或修改不全面,而导致错误;  8系统兼容测试,例如有些程序在IE6能运营正常,到IE5下不能运营。有些程序在WIN下能运营,而到WIN98却不能运营。  ¨ 单元测试力度 规定测试力度满足:  语句覆盖:使被测程序每条语句至少执行一次; 鉴定覆盖:使被测程序每一分支执行一次;  条件覆盖:规定鉴定中每个条件均为“真”、“假”两种成果至少执行一次; 条件组合覆盖:让条件覆盖中成果所有也许组合至少浮现一次; ¨ 单元测试环节  普通以为单元测试应紧接在编码之后,当源程序编制完毕并通过复审和编译检查,便可开始单元测试。测试用例设计应与复审工作相结合,依照设计信息选用测试数据,将增大发现各类错误也许性。在拟定测试用例同步,应给出盼望成果。项目组完毕单元测试,向项目监理部提交验收版本同步必要一并递交单元测试案例及测试问题报告记录。  测试部由项目监理部获得需测试系统版本及有关文档,若在测试期间发现单元测试中记录问题,如实记录。项目监理部视详细状况酌情对该项目组绩效考核与项目评分加以控制。  不同语言及架构单元测试见附件。 附件一  c++语言单元测试规范  1. 基本规定  1.1 程序构造清析,简朴易懂,单个函数程序行数不得超过100行。 1.2 打算干什么,要简朴,直接了当,代码精简,避免垃圾程序。 1.3 尽量使用原则库函数和公共函数。  1.4 不要随意定义全局变量,尽量使用局部变量。 1.5 使用括号以避免二义性。   2.可读性规定  2.1 可读性第一,效率第二。 2.2 保持注释与代码完全一致。  2.3 每个源程序文献,均有文献头阐明,阐明规格见规范。 2.4 每个函数,均有函数头阐明,阐明规格见规范。  2.5 重要变量(构造、联合、类或对象)定义或引用时,注释能反映其含义。 2.7 常量定义(DEFINE)有相应阐明。 2.8 解决过程每个阶段均有有关注释阐明。 2.9 在典型算法前均有注释。  2.10 运用缩进来显示程序逻辑构造,缩进量一致并以Tab键为单位,定义Tab为 6个 字节。  2.11 循环、分支层次不要超过五层。  2.12 注释可以与语句在同一行,也可以在上行。 2.13 空行和空白字符也是一种特殊注释。 2.14 一目了然语句不加注释。  2.15 注释作用范畴可觉得:定义、引用、条件分支以及一段代码。  2.16 注释行数(不涉及程序头和函数头阐明部份)应占总行数 1/5 到 1/3 。   3. 构造化规定  3.1 禁止浮现两条等价支路。 3.2 禁止GOTO语句。  3.3 用 IF 语句来强调只执行两组语句中一组。禁止 ELSE GOTO 和 ELSE RETURN。 3.4 用 CASE 实现多路分支。 3.5 避免从循环引出各种出口。 3.6 函数只有一种出口。 3.7 不使用条件赋值语句。 3.8 避免不必要分支。  3.9 不要容易用条件分支去替代逻辑表达式。   4. 对的性与容错性规定  4.1 程序一方面是对的,另一方面是优美  4.2 无法证明你程序没有错误,因而在编写完一段程序后,应先回头检查。 4.3 改一种错误时也许产生新错误,因而在修改前一方面考虑对其他程序影响。 4.4 所有变量在调用前必要被初始化。  4.5 对所有顾客输入,必要进行合法性检查。 4.6 不要比较浮点数相等, 如: 10.0 * 0.1 == 1.0 , 不可靠  4.7 程序与环境或状态发生关系时,必要积极去解决发生意外事件,如文献能否 逻辑锁定、打印机与否联机等。  4.8 单元测试也是编程一部份,提交联调测试程序必要通过单元测试。   5. 可重用性规定  5.1 重复使用完毕相对独立功能算法或代码应抽象为公共控件或类。 5.2 公共控件或类应考虑OO思想,减少外界联系,考虑独立性或封装性。 5.3 公共控件或类应建立使用模板。           1合用范畴  本原则合用于运用Visul C++ ,Borland C++进行软件程序开发人员.。   .2变量命名  命名必要具备一定实际意义,形式为xAbcFgh,x由变量类型拟定,Abc、Fgh表达持续意 义字符串,如果持续意义字符串仅两个,可都大写.如OK. 详细例程:  BOOL类型         bEnable;   ch   *       char              chText  c   *       类对象             cMain(对象实例) h   *       Handle(句柄)         hWnd i   *       int  n   *       无符号整型 p   *       指针 sz,str *       字符串 w           WORD x,y          坐标  Char或者TCHAR类型    与Windows API有直接联系用szAppName[10]形式否则用 FileName[10]形式,单个字符也可用小写字母表达; Int类型          nCmdShow; LONG类型         lParam; UINT类型         uNotify; DWORD类型        dwStart; PSTR类型         pszTip; LPSTR类型        lpCmdLine LPTSTR类型        lpszClassName; LPVOID类型        lpReserved WPARAM类型       wParam, LPARAM类型        lParam HWND类型         hDlg; HDC类型          hDC; HINSTANCE类型      hInstance  HANDLE类型        hInstance, HICON类型         hIcon; int             iTmp float             fTmp DWORD          dw* String , AnsiString       str *  m_           类成员变量           m_nVal, m_bFlag g_           全局变量            g_nMsg, g_bFlag 局部变量中可采用如下几种通用变量:nTemp,nResult,I,J(普通用于循环变量)。 其她资源句柄同上 .3常量命名和宏定义  常量和宏定义必要具备一定实际意义; 常量和宏定义在#include和函数定义之间;  常量和宏定义必要所有以大写字母来撰写,中间可依照意义持续性用下划线连接,每一 条定义右侧必要有一简朴注释,阐明其作用; 资源名字定义格式: 菜单:IDM_XX或者CM_XX 位图:IDB_XX 对话框:IDD_XX 字符串:IDS_XX DLGINIT:DIALOG_XX  ICON:IDR_XX .4函数命名  函数原型阐明涉及引用外来函数及内部函数,外部引用必要在右侧注明函数来源:模 块名及文献名, 如是内部函数,只要注释其定义文献名;  第一种字母必要使用大写字母,规定用大小写字母组合规范函数命名,必要时可用下划线 间隔,示例如下:  void UpdateDB_Tfgd (TRACK_NAME);  file://Module Name :r01/sdw.c void PrintTrackData (TRACK_NAME); file://Module Name :r04/tern.c void ImportantPoint (void);      file://Module Name :r01/sdw.c void ShowChar (int , int , chtype);  file://Local Module void ScrollUp_V (int , int);      file://Local Module .5构造体命名  构造体类型命名必要所有用大写字母,原则上前面如下划线开始;构造体变量命名必要用 大小写字母组合,第一种字母必要使用大写字母,必要时可用下划线间隔。对于私有数 据区,必要注明其所属进程。全局数据定义只需注意其用途。           示例如下:           typedef struct           {                char         szProductName[20];               char         szAuthor[20];                 char         szReleaseDate[16];               char         szVersion[10];   unsigned long    MaxTables;               unsigned long    UsedTables; }DBS_DATABASE;  DBS_DATABASE GdataBase;   6 控件命名: 用小写前缀表达类别 用小写前缀表达类别: fm       窗口 cmd      按钮  cob      combo,下拉式列表框 txt      文本输入框 lab      labal,标签 img      image,图象 pic      picture grd      Grid,网格 scr      滚动条 lst      列表框 frm      fram  7注释  原则上注释规定使用中文;  文献开始注释内容涉及:公司名称、版权、作者名称、时间、模块用途、背景简介等,复 杂算法需要加上流程阐明;  函数注释涉及:输入、输出、函数描述、流程解决、全局变量、调用样例等,复杂函数 需要加上变量用途阐明;  程序中注释涉及:修改时间和作者、以便理解注释等;      引用一: 文献开头注释模板  /****************************************************************** ** 文献名:  ** Copyright (c) 1998-1999 *********公司技术开发部 ** 创立人: ** 日 期: ** 修改人: ** 日 期: ** 描 述: ** ** 版 本:  **-------------------------------------------------------------------------- ---  ******************************************************************/     引用二: 函数开头注释模板  /***************************************************************** ** 函数名: ** 输 入: a,b,c **   a--- **   b--- **   c--- ** 输 出: x--- **   x 为 1, 表达... **   x 为 0, 表达... ** 功能描述: ** 全局变量: ** 调用模块: ** 作 者: ** 日 期: ** 修 改: ** 日 期: ** 版本  ****************************************************************/   引用三: 程序中注释模板  /*----------------------------------------------------------*/ /* 注释内容            */ /*----------------------------------------------------------*/ 8 程序  a.   程序编码力求简洁,构造清晰,避免太多分支构造及太过于技巧性程序, 尽量不采用递归模式。  b.  编写程序时,亦必要想好测试办法,换句话说,”单元测试” 测试方案应 在程序编写时一并拟好。 c.  注释一定要与程序一致。  d.  版本封存后来修改一定要将老语句用/* */ 封闭,不能自行删除或修改,并要 在文献及函数修改记录中加以记录。  e.   程序中每个block 开头 ”{" 及 "}” 必要对齐,嵌套block 每进一套, 缩进一种tab,TAB 为4个空格,block类型涉及if、for、while、do等核心字引出。 f. 对于比较大函数,每个block 和特殊函数调用,都必要注明其功能,举例如下 :  count.divisor = 1193280 / freq;        // compute the proper count OutByte((unsigned short)67, (unsigned char)182); // tell 8253 that a count is coming  OutByte((unsigned short)66, count. c[0]);   // send low-order byte OutByte((unsigned short)66, count. c[1]);   // send high-order byte   ×××××××××××××××××××××××××××××××××××××××  bcb,delphi中变量命名:  遵循匈牙利命名法,命 名必要故意义,制定如下规定   窗体:以大写W开始,如About版权窗体, 命名为WAbout 文献:以大写F开始,如About版权窗体,文献命名为FAbout.cpp 按钮(Button):如退出按钮,命名为btnExit  ……   基类:加base标记,如报表基类,窗体命名为:WBaseRep, 文献命名为FBaseRep.cpp    1. 在.h/.cpp开头应有一段格式统一阐明,内容涉及: > a. 文献名 (FileName); > b. 创立人 (Creater); > c. 文献创立时间 (Date);  > d. 简短阐明文献功能、用途 (Comment)。 好习惯  > 2. 除非极其简朴,否则对函数应有注释阐明。内容涉及:功能、入口/出口参数,必 要  > 时还可有备注或补充阐明。 还是好习惯  > 3. 每列代码长度推荐为 80列,最长不得超过120列;折行以对齐为准。  太宽了,我限制是60列,由于文本方式下屏幕一共80列,如果你用BC这一类编辑 器,窗口边框等又要占据一定空间,因此80列太宽  > 4. 循环、分支代码,判断条件与执行代码不得在同一行上。 很对  > 5. 指针定义,* 号既可以紧接类型,也可以在变量名之前。 >  > 例:可写做:int* pnsize; >  > 也可写做:int *pnsize; >  > 但不得写做:int * pnsize;  建议采用第二种,除非附加此外一条规定:一次只声明一种变量,否则就会让人混淆, 例如: int* a, b;  看起来b好像也是个指针,其实不是。  > 6. 在类成员函数内调用非成员函数时,在非成员函数名前必要加上"::"。  这一条我倒觉得并不是必须,我看法是决不要让你类成员函数和全局函数名称 相似(或类似)  > 7. 函数入口参数有缺省值时,应注释阐明。 >  > 例:BOOL CWpsDib::PaintDIB(CDC* pDC, CRect& rc, >   int nBrightness, file://*=0*//  >   BOOL bGrayScale file://*=FALSE*// )  每个变量写一行,必要时加上/*in, out*/注释 > 8. else if 必要写在一行。 应当尽量避免else if这样构造 > 9. 与„{‟、„}‟关于各项规定: >  > 9.1„{‟、„}‟应独占一行。在该行内可有注释。  > 9.2 „{‟必要另起一行,„{‟ 之后裔码必要缩进一种Tab。„{‟与„}‟必要在 同  > 一列上。  > 9.3 在循环、分支之后若只有一行代码,虽然可省略„{‟、„}‟,但不推荐这样 > 做。若省略后也许引起歧义,则必要加上„{‟、„}‟。 持保存意见,由于GNU代码规范是这样: if ( NULL == ptr )   {      // do something here   } 或者  if ( NULL == ptr ) {      // do something here }  争论哪个更好并没故意义,核心是统一,如果用VC固然你办法最以便,可是如果你用 emacs或者vi,就不是这样了。 > 10. 与空格关于各项规定。 >  > 10.1 在所有两目、三目运算符两边都必要有空格。在单目运算符两端不必空格。 但  > 在„—>‟、„::‟、„.‟、„[‟、„]‟等运算符先后,及„&‟(取地址)、„* > ‟(取值)等运算符之后不得有空格。  > 10.2 for、while、if 等核心词之后应有1个空格,再接„(‟,之后无空格;在结 尾  > „)‟前不得有空格。   我以为在括号两端加空格并不是什么错误,特别是在一种条件十分复杂if语句里 > 10.3 调用函数、宏时,„(‟、„)‟先后不得有空格。 > 10.4 类型强制转换时,„(‟„)‟先后不得有空格 同上  > 11. 与缩进关于各项规定 >  > 11.1 缩进以 Tab 为单位。1 个 Tab 为 4 个空格  我以为这个值应当更大,我自己使用8个空格,如果你代码由于缩进幅度太大而导致 折行,那么几乎可以必定你程序设计方案有问题。 > 11.2 下列状况,代码缩进一种 Tab: > 1. 函数体相对函数名及'{'、'}'。  > 2. if、else、for、while、do 等之后裔码。 > 3. 一行之内写不下,折行之后裔码,应在合理位置进行折行。若有 + - * / 等 运  > 算符,则运算符应在上一行末尾,而不应在下一行行首。  这一条我反对,运算符应当放在下一行行首,以使人能清晰懂得这一行是续上一行 ,例如 if ( something   && somethingelse   && otherthings ) 如果写做 if ( something &&   somethingelse &&   otherthings ) 反而看不清晰  > 11.3 下列状况,不必缩进:switch 之后 case、default。 附件二 java语言单元测试规范  java语言编程规范遵循公司开发规范。 1. 基本规定  1.1 程序构造清析,简朴易懂,单个函数程序行数不得超过100行。 1.2代码精简,避免垃圾程序。  1.3 尽量使用原则库函数和公共函数。  1.4 不要随意定义全局变量,尽量使用局部变量。 1.5 使用括号以避免二义性。   2.可读性规定  2.1 可读性第一,效率第二。 2.2 保持注释与代码完全一致。  2.3 每个源程序文献,均有文献头阐明,阐明规格见规范。 2.4 每个函数,均有函数头阐明,阐明规格见规范。  2.5 重要变量(构造、联合、类或对象)定义或引用时,注释能反映其含义。 2.7 常量定义(DEFINE)有相应阐明。  2.8 解决过程每个阶段均有有关注释阐明。 2.9 在典型算法前均有注释。  2.10 运用缩进来显示程序逻辑构造,缩进量一致并以Tab键为单位,定义Tab为 6个 字节。  2.11 循环、分支层次不要超过五层。  2.12 注释可以与语句在同一行,也可以在上行。 2.13 空行和空白字符也是一种特殊注释。 2.14 一目了然语句不加注释。  2.15 注释作用范畴可觉得:定义、引用、条件分支以及一段代码。  2.16 注释行数(不涉及程序头和函数头阐明部份)应占总行数 1/5 到 1/3 。   3. 构造化规定  3.1 禁止浮现两条等价支路。 3.2 禁止GOTO语句。  3.3 用 IF 语句来强调只执行两组语句中一组。禁止 ELSE GOTO 和 ELSE RETURN。 3.4 用 CASE 实现多路分支。 3.5 避免从循环引出各种出口。 3.6 函数只有一种出口。 3.7 不使用条件赋值语句。 3.8 避免不必要分支。  3.9 不要容易用条件分支去替代逻辑表达式。   4. 对的性与容错性规定  4.1 程序一方面是对的,另一方面是优美  4.2 无法证明你程序没有错误,因而在编写完一段程序后,应先回头检查。 4.3 改一种错误时也许产生新错误,因而在修改前一方面考虑对其他程序影响。 4.4 所有变量在调用前必要被初始化。  4.5 对所有顾客输入,必要进行合法性检查。 4.6 不要比较浮点数相等,  如: 10.0 * 0.1 == 1.0 , 不可靠  4.7 程序与环境或状态发生关系时,必要积极去解决发生意外事件,如文献能否 逻辑锁定、打印机与否联机等。  4.8 单元测试也是编程一部份,提交联调测试程序必要通过单元测试。   5. 可重用性规定  5.1 重复使用完毕相对独立功能算法或代码应抽象为公共控件或类。 5.2 公共控件或类应考虑OO思想,减少外界联系,考虑独立性或封装性。 5.3 公共控件或类应建立使用模板。           命名规范   定义这个规范目是让项目中所有文档都看起来像一种人写,增长可读性,减少项目组中由于换人而带来损失。(这些规范并不是一定要绝对遵守,但是一定要让程序有良好可读性)    Package 命名   Package 名字应当都是由一种小写单词构成。  Class 命名   Class 名字必要由大写字母开头而其她字母都小写单词构成  Class 变量命名   变量名字必要用一种小写字母开头。背面单词用大写字母开头。  Static Final 变量命名   Static Final 变量名字应当都大写,并且指出完整含义。  参数命名   参数名字必要和变量命名规范一致。  数组命名   数组应当总是用下面方式来命名:  byte[] buffer;    而不是:   byte buffer[];  办法参数   使用故意义参数命名,如果也许话,使用和要赋值字段同样名字:  SetCounter(int size){  this.size = size;  }    Java 文献样式   所有 Java(*.java) 文献都必要遵守如下样式规则    版权信息  版权信息必要在 java 文献开头,例如:  /**   * Copyright ?  Shanghai XXX Co. Ltd.  * All right reserved.  */    其她不需要出当前 javadoc 信息也可以包括在这里。    Package/Imports   package 行要在 import 行之前,import 中原则包名要在本地包名之前,并且按照字母顺序排列。如果 import 行中包括了同一种包中不同子目录,则应当用 * 来解决。  package .stats;  import java.io.*;   import java.util.Observable;  import hotlava.util.Application;    这里 java.io.* 使用来代替InputStream and OutputStream 。    Class   接下来是类注释,普通是用来解释类。  /**   * A class representing a set of packet and byte counters  * It is observable to allow it to be watched, but only  * reports changes when the current set is complete  */    接下来是类定义,包括了在不同行 extends 和 implements  public class CounterSet  extends Observable  implements Cloneable  Class Fields   接下来是类成员变量:  /**   * Packet counters  */   protected int[] packets;    public 成员变量必要生成文档(JavaDoc)。Proceted、private和 package 定义成员变量如果名字含义明确话,可以没有注释。    存取办法   接下来是类变量存取办法。它只是简朴用来将类变量赋值获取值话,可以简朴写在一行上。  /** * Get the counters   * @return an array containing the statistical data. This array has been  * freshly allocated and can be modified by the caller.  */   public int[] getPackets() { return copyArray(packets, offset); }  public int[] getBytes() { return copyArray(bytes, offset); }  public int[] getPackets() { return packets; }   public void setPackets(int[] packets) { this.packets = packets; }    其他办法不要写在一行上    构造函数   接下来是构造函数,它应当用递增方式写(例如:参数多写在背面)。   访问类型 ("public", "private" 等.) 和 任何 "static", "final" 或 "synchronized" 应当在一行中,并且办法和参数另写一行,这样可以使办法和参数更易读。  public   CounterSet(int size){  this.size = size;  }   克隆办法   如果这个类是可以被克隆,那么下一步就是 clone 办法:  public   Object clone() {  try {   CounterSet obj = (CounterSet)super.clone();  obj.packets = (int[])packets.clone();  obj.size = size;  return obj;   }catch(CloneNotSupportedException e) {   throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());  }  }   类办法   下面开始写类办法:  /**   * Set the packet counters   * (such as when restoring from a database)  */   protected final   void setArray(int[] r1, int[] r2, int[] r3, int[] r4)  throws IllegalArgumentException  {  //   // Ensure the arrays are of equal size  //   if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)  throw new IllegalArgumentException("Arrays must be of the same size");  System.arraycopy(r1, 0, r3, 0, r1.length);  System.arraycopy(r2, 0, r4, 0, r1.length);  }    toString 办法   无论如何,每一种类都应当定义 toString 办法:  public   String toString() {   String retval = "CounterSet: ";   for (int I = 0; I < data.length(); i++) {  retval += data.bytes.toString();  retval += data.packets.toString();  }   return retval;  }  }   main 办法   如果main(String[]) 办法已经定义了, 那么它应当写在类底部.  代码编写格式    代码样式   代码应当用 unix 格式,而不是 windows (例如:回车变成回车+换行)  文档化   必要用 javadoc 来为类生成文档。不但由于它是原则,这也是被各种 java 编译器都承认办法。使用 @author 标记是不被推荐,由于代码不应当是被个人拥有。  缩进   缩进应当是每行2个空格. 不要在源文献中保存Tab字符. 在使用不同源代码管理工具时Tab字符将由于顾客设立不同而扩展为不同宽度.  如果你使用 UltrEdit 作为你 Java 源代码编辑器话,你可以通过如下操作来禁止保存Tab字符, 办法是通过 UltrEdit中先设定 Tab 使用长度室2个空格,然后用 Format|Tabs to Spaces 菜单将 Tab 转换为空格。  页宽   页宽应当设立为80字符. 源代码普通不会超过这个宽度, 并导致无法完整显示, 但这一设立也可以灵活调节. 在任何状况下, 超长语句应当在一种逗号或者一种操作符后折行. 一条语句折行后, 应当比本来语句再缩进2个字符.  {} 对   {} 中语句应当单独作为一行. 例如, 下面第1行是错误, 第2行是对的:  if (i>0) { I ++ }; // 错误, { 和 } 在同一行  if (i>0) {  I ++   }; // 对的, { 单独作为一行    } 语句永远单独作为一行.    如果 } 语句应当缩进到与其相相应 { 那一行相对齐位置。    括号   左括号和后一种字符之间不应当浮现空格, 同样, 右括号和前一种字符之间也不应当浮现空格. 下面例子阐明括号和空格错误及对的使用:  CallProc( Aparameter ); // 错误  CallProc(Aparameter); // 对的   不要在语句中使用无意义括号. 括号只应当为达到某种目而出当前源代码中。下面例子阐明错误和对的用法:   if ((I) = 42) { // 错误 - 括号毫无意义   if (I == 42) or (J == 42) then // 对的 - 确需要括号    程序编写规范    exit()   exit 除了在 main 中可以被调用外,其她地方不应当调用。由于这样做不给任何代码代码机会来截获退出。一种类似后台服务地程序不应当由于某一种库模块决定了要退出就退出。  异常   声明错误应当抛出一种RuntimeException或者派生异常。   顶层main()函数应当截获所有异常,并且打印(或者记录在日记中)在屏幕上。  垃圾收集   JAVA使用成熟后台垃圾收集技术来代替引用计数。但是这样会导致一种问题:你必要在使用完对象实例后来进行清场工作。例如一种prel程序员也许这样写:  …  {   FileOutputStream fos = new FileOutputStream(projectFile);  project.save(fos, "IDE Project File");  }  …    除非输出流一出作用域就关闭,非引用计数程序语言,例如JAVA,是不能自动完毕变量清场工作。必要象下面同样写:   FileOutputStream fos = new FileOutputStream(projectFile);  project.save(fos, "IDE Project File");  fos.close();  Clone   下面是一种有用办法:  implements Cloneable  public Object clone()  {  try {   ThisClass obj = (ThisClass)super.clone();  obj.field1 = (int[])field1.clone();  obj.field2 = field2;  return obj;   } catch(CloneNotSupportedException e) {   throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());  }  }   final 类   绝对不要由于性能因素将类定义为 final (除非程序框架规定)   如果一种类还没有准备好被继承,最佳在类文档中注明,而不要将她定义为 final 。这是由于没有人可以保证会不会由于什么因素需要继承她。  访问类成员变量   大某些类成员变量应当定义为 protected 来防止继承类使用她们。   注意,要用"int[] packets",而不是"int packets[]",后一种永远也不要用。  public void setPackets(int[] packets) { this.packets = packets; }  CounterSet(int size)  {   this.size = size;  } 
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 品牌综合 > 行业标准/行业规范

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服