⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_26315.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:26315 发表者:beiqiao 发表日期:2002-12-31 09:06:39
<br>主题:c#的编程规范哪里有?
<br>内容:如题
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:david (小鱼儿) 回复日期:2003-01-02 11:26:59
<br>内容:别给我分,给落叶夏日吧。<BR>C#编程规范-程序员们都应该这样写代码<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-落叶夏日<BR>为了保证大家使用C#编程和C++的风格的连贯,我在C++的标准备上对C#编程规则作了制定(试用版),在这里感谢大家的支持,特别是Stone Jiang. <BR><BR>基本要求<BR>1程序结构要求<BR>1.1 程序结构清晰,简单易懂,单个函数的程序行数不得超过100行。<BR>1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。<BR>1.3 尽量使用.NET库函数和公共函数(无特殊情况不要使用外部方法调用windows的核心动态链接库)。<BR>1.4 不要随意定义全局变量,尽量使用局部变量。<BR>2.可读性要求<BR>2.1 可读性第一,效率第二(代码是给人读的J)。<BR>2.2 保持注释与代码完全一致。<BR>2.3 每个源程序文件,都有文件头说明,说明规格见规范。<BR>2.4 每个函数,都有函数头说明,说明规格见规范。<BR>2.5 主要变量(结构、联合、类或对象)定义或引用时,注释能反映其含义。<BR>2.6 处理过程的每个阶段都有相关注释说明。<BR>2.7 在典型算法前都有注释, 同时算法在满足要求的情况下尽可能简单。<BR>2.8 利用缩进来显示程序的逻辑结构,缩进量一致并以Tab键为单位,定义Tab为 6个<BR>字节。<BR>2.9 循环、分支层次不要超过五层。<BR>2.10 注释可以与语句在同一行,也可以在上行。<BR>2.11 空行和空白字符也是一种特殊注释。<BR>2.12 一目了然的语句不加注释。<BR>2.13 注释的作用范围可以为:定义、引用、条件分支以及一段代码。<BR>2.14 注释行数(不包括程序头和函数头说明部份)应占总行数的 1/5 到 1/3<BR><BR>2.15 常量定义(DEFINE)有相应说明。<BR><BR> <BR><BR>3. 结构化要求<BR><BR>3.1 禁止出现两条等价的支路。<BR>3.2 禁止GOTO语句。<BR>3.3 用 IF 语句来强调只执行两组语句中的一组。禁止 ELSE GOTO 和 ELSE RETURN。<BR>3.4 用 CASE 实现多路分支。<BR>3.5 避免从循环引出多个出口。<BR>3.6 函数只有一个出口。<BR>3.7 不使用条件赋值语句。<BR>3.8 避免不必要的分支。<BR>3.9 不要轻易用条件分支去替换逻辑表达式。<BR><BR> <BR><BR>4. 正确性与容错性要求<BR><BR>4.1 程序首先是正确,其次是优美<BR>4.2 无法证明你的程序没有错误,因此在编写完一段程序后,应先回头检查。<BR>4.3 改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。<BR>4.4 所有变量在调用前必须被初始化。<BR>4.5 对所有的用户输入,必须进行合法性检查。<BR>4.6 不要比较浮点数的相等,<BR>如: 10.0 * 0.1 == 1.0 , 不可靠<BR>4.7 程序与环境或状态发生关系时,必须主动去处理发生的意外事件,如文件能否<BR>逻辑锁定、打印机是否联机等,对于明确的错误,要有明确的容错代码提示用户。<BR>4.8 单元测试也是编程的一部份,提交联调测试的程序必须通过单元测试。<BR><BR>4.9 尽量使用规范的容错语句.<BR><BR>&nbsp;&nbsp;例如:<BR><BR>try<BR><BR>{<BR><BR>}<BR><BR>catch<BR><BR>{<BR><BR>}<BR><BR>finally<BR><BR>{<BR><BR>}<BR><BR>5. 可重用性要求<BR><BR>5.1 重复使用的完成相对独立功能的算法或代码应抽象为asp.net服务或类。<BR>5.2asp.net服务或类应考虑OO思想,减少外界联系,考虑独立性或封装性。<BR><BR> <BR><BR>附:C#编程规范<BR><BR>1适用范围<BR><BR>本标准适用于利用Visul C# ,其余语言作参考.。<BR><BR>2变量命名<BR><BR>命名必须具有一定的实际意义,形式为xAbcFgh,x由变量类型确定,Abc、Fgh表示连续意<BR>义字符串,如果连续意义字符串仅两个,可都大写.如OK.<BR><BR>具体例程:<BR><BR>BOOL类型&nbsp;&nbsp;&nbsp;&nbsp;bEnable;<BR><BR>sz&nbsp;&nbsp; char&nbsp;&nbsp;&nbsp;&nbsp; szText<BR><BR>sb&nbsp;&nbsp; sbyte&nbsp;&nbsp;&nbsp;&nbsp; sbText<BR><BR>bt&nbsp;&nbsp;&nbsp;&nbsp;byte&nbsp;&nbsp;&nbsp;&nbsp; btText<BR><BR>n&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nText<BR><BR>ui&nbsp;&nbsp;&nbsp;&nbsp;uint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uiText<BR><BR>l&nbsp;&nbsp;&nbsp;&nbsp; long&nbsp;&nbsp;&nbsp;&nbsp; lText<BR><BR>ul&nbsp;&nbsp;&nbsp;&nbsp;ulong&nbsp;&nbsp;&nbsp;&nbsp;ulText<BR><BR>f&nbsp;&nbsp;&nbsp;&nbsp; float&nbsp;&nbsp;&nbsp;&nbsp; fText<BR><BR>d&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;&nbsp;&nbsp;&nbsp;dText<BR><BR>b&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bText<BR><BR>de&nbsp;&nbsp; decimal&nbsp;&nbsp; deText<BR><BR>str&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp; strText<BR><BR>x,y 坐标<BR><BR>att&nbsp;&nbsp; 表属性<BR><BR>m_ 类成员变量 m_nVal, m_bFlag<BR><BR>s_&nbsp;&nbsp;类静态成员变量 s_nVal,s_bFlag<BR><BR>//不提议用全局变量,其于类的实例,尽量选取表示该类特性的字母,例如classText,class体现类的特性.<BR><BR>3常量命名和宏定义<BR><BR>常量和宏定义必须具有一定的实际意义;<BR><BR>常量和宏定义在#include和函数定义之间;<BR><BR>常量和宏定义必须全部以大写字母来撰写,中间可根据意义的连续性用下划线连接,每一<BR>条定义的右侧必须有一简单的注释,说明其作用;<BR><BR>4资源名字定义格式(我对.NET的资源还没有了解的多),只写几个:<BR>菜单:IDM_XX或者CM_XX<BR>位图:IDB_XX<BR>对话框:IDD_XX<BR>字符串:IDS_XX<BR>DLGINIT:DIALOG_XX<BR>ICON:IDR_XX<BR><BR>5函数命名和命名空间,类的命名,接口的命名<BR>函数原型说明包括引用外来函数及内部函数,外部引用必须在右侧注明函数来源: 模<BR>块名及文件名, 如是内部函数,只要注释其定义文件名;<BR>第一个字母必须使用大写字母,要求用大小写字母组合规范函数命名,必要时可用下划线<BR>间隔,示例如下:<BR><BR>void PrintTrackData ( );<BR><BR>void ShowChar (int , int ,char);<BR><BR>事件函数的命名:<BR><BR>&nbsp;&nbsp; void EventH(object sd,Event e)&nbsp;&nbsp;//Event 表示事件响应的函数.<BR><BR>接口的命名<BR><BR>&nbsp;&nbsp; 接口的命名一般都以’I’作为首字母,为了和类区分,例如:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; interface IA&nbsp;&nbsp;<BR><BR>命名空间(例如 namespace A)和类的命名规则从原则上和函数命名相同.<BR><BR> <BR><BR>6结构体命名<BR>结构体类型命名必须全部用大写字母,原则上前面以下划线开始;结构体变量命名必须用<BR>大小写字母组合,第一个字母必须使用大写字母,必要时可用下划线间隔。对于私有数<BR>据区,必须注明其所属的进程。全局数据定义只需注意其用途。<BR><BR>示例如下:<BR>typedef struct<BR>{<BR>char szProductName[20];<BR>char szAuthor[20];<BR>char szReleaseDate[16];<BR>char szVersion[10]; <BR>unsigned long MaxTables;<BR>unsigned long UsedTables;<BR>}DBS_DATABASE;<BR>DBS_DATABASE GdataBase;<BR><BR>7 控件的命名:<BR><BR>C#控件规则为了和.net类库统一,分WindowsForm程序和Web程序(也许大家不是很习惯J).<BR><BR>WindowsForm程序<BR><BR>&nbsp;&nbsp; 用小写前缀表示类别<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fm 窗口<BR>cmd 按钮<BR>cob combo,下拉式列表框<BR>txt 文本输入框<BR>lab labal,标签<BR>img image,图象<BR>pic picture<BR>grd Grid,网格<BR>scr 滚动条<BR>lst 列表框<BR>frm fram<BR><BR>Web程序<BR><BR>&nbsp;&nbsp; 用大写前缀表示类别<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fm 窗口<BR>Cmd 按钮<BR>Cob combo,下拉式列表框<BR>Txt 文本输入框<BR>Lab labal,标签<BR>Img image,图象<BR>Pic picture<BR>Grd Grid,网格<BR>Scr 滚动条<BR>Lst 列表框<BR>Frm fram<BR><BR>8注释<BR><BR>原则上注释要求使用中文;<BR>文件开始注释内容包括:公司名称、版权、作者名称、时间、模块用途、背景介绍等,复<BR>杂的算法需要加上流程说明;<BR>函数注释包括:输入、输出、函数描述、流程处理、全局变量、调用样例等,复杂的函数<BR>需要加上变量用途说明;<BR>程序中注释包括:修改时间和作者、方便理解的注释等;<BR>引用一: 文件开头的注释模板<BR>/******************************************************************<BR>** 文件名:<BR>** Copyright (c) 1998-1999 *********公司技术开发部<BR>** 创建人:<BR>** 日 期:<BR>** 修改人:<BR>** 日 期:<BR>** 描 述:<BR>**<BR>** 版 本:<BR>**----------------------------------------------------------------------------<BR>******************************************************************/<BR><BR>引用二: 函数开头的注释模板<BR>/*****************************************************************<BR>** 函数名:<BR>** 输 入: a,b,c<BR>** a---<BR>** b---<BR>** c---<BR>** 输 出: x---<BR>** x 为 1, 表示...<BR>** x 为 0, 表示...<BR>** 功能描述:<BR>** 全局变量:<BR>** 调用模块:<BR>** 作 者:<BR>** 日 期:<BR>** 修 改:<BR>** 日 期:<BR>** 版本<BR>****************************************************************/<BR>引用三: 程序中的注释模板<BR>/*----------------------------------------------------------*/<BR>/* 注释内容 */<BR>/*----------------------------------------------------------*/<BR><BR>9 程序<BR>a. 程序编码力求简洁,结构清晰,避免太多的分支结构及太过于技巧性的程序,<BR>尽量不采用递归模式。<BR>b. 编写程序时,亦必须想好测试的方法,换句话说,”单元测试” 的测试方案应<BR>在程序编写时一并拟好。<BR>c. 注释一定要与程序一致。<BR>d. 版本封存以后的修改一定要将老语句用/* */ 封闭,不能自行删除或修改,并要<BR>在文件及函数的修改记录中加以记录。<BR>e. 程序中每个block 的开头 ”{" 及 "}” 必须对齐,嵌套的block 每进一套,<BR>缩进一个tab,TAB 为4个空格,block类型包括if、for、while、do等关键字引出的。<BR>f. 对于比较大的函数,每个block 和特殊的函数调用,都必须注明其功能.<BR><BR> <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:beiqiao 回复日期:2003-03-11 12:40:34
<br>内容:经过一个朋友的指点,看了sun公司的java编码规范,获益很大<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:落叶夏日 回复日期:2003-03-11 14:13:32
<br>内容:我这个是适用于C++程序员改用的:)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:乖乖兔不乖 回复日期:2003-04-12 22:29:13
<br>内容:大虾同志,我学C++已经一年了,但是,我怎么都看不懂你们在说的程序呢?难道你们说的那些程序已经涉及windows程序设计了? 还是工作中遇到的具体问题呢??请指教!! 
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:落叶夏日 回复日期:2003-04-15 08:22:34
<br>内容:我这里是基于.net下的技术,是新的技术
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -