资源描述
SinoNetscape计算机软件系统有限公司
SinoNetscape Appkit商用业务基础平台
Web开发技术手册
<版本 1.0>
企业
部门
2009年6月
成文信息
编 号:
主题词:
作 者:
文档类别:
技术文档
主 送:
存档日期:
抄 送:
发布日期:
变更信息
版本
原因
作者
日期
目 录
第1章 数据页面的扩展编程 1
1.1 概述 1
1.2 支持扩展编程的事件 1
1.3 常用保护方法或属性 1
1.4 全页滚动浏览 1
1.5 典型范例 2
第2章 Appkit Web类库 2
2.1 Appkit.AppCommon名称空间 2
2.1.1 Mails类(邮件) 2
2.1.2 Messages类(消息) 2
2.1.3 WorkManage类(业务管理) 2
2.2 Appkit.Common名称空间 3
2.2.1 CommonMethod类(公共方法) 3
2.2.2 Dialog类(对话框) 3
2.2.3 SimpleMethod类(简单方法) 3
2.2.4 ChineseCurrency类(人民币) 4
2.3 Appkit.Web.Data名称空间 4
2.3.1 ResultSet类(查询结果集合) 4
2.3.2 ResultRow类(结果行) 4
2.3.3 XmlProcesser类(Xml处理器) 4
2.3.4 XmlCustomReader类(Xml读取器) 4
2.3.5 ObjectDocument类(对象文档) 5
2.4 Appkit.Web.IO名称空间 5
2.4.1 DirService类(目录路径服务) 5
2.4.2 FileReader类(文件读取器) 5
2.4.3 FileWriter类(文件写入器) 5
2.5 Appkit.Web.Management名称空间 6
2.5.1 AppContext类(应用上下文) 6
2.5.2 ObjectCache类(对象缓存管理器) 6
2.5.3 ObjectService类(对象服务) 6
2.5.4 SessionState类(会话状态管理) 6
2.5.5 Transaction类(事务管理) 6
2.6 Appkit.Web.Search名称空间 7
2.6.1 ConditionConstructor类(条件构造器) 7
2.6.2 DateRange类(日期范围) 7
2.7 Appkit.Web.Security名称空间 8
2.7.1 PrivilegeService类(权限服务) 8
2.8 Appkit.Web.Threading名称空间 8
2.8.1 ThreadExecutor类(线程执行器) 8
2.9 Appkit.Web.UI名称空间 8
2.9.1 Page类(Appkit页面基类) 8
2.9.2 PageService类(页面服务) 9
2.9.3 Script类(脚本服务) 9
第3章 Appkit.Web.Control控件库 9
第4章 javascript资源 9
4.1 common.js 9
4.2 message.js 10
4.3 align.js 10
4.4 selectobject.js 11
4.4.1 选择一个对象 11
4.4.2 选择多个对象 11
4.4.3 选择一个对象并为文本框赋值 11
4.4.4 选择多个对象并为文本框赋值 12
4.5 divdialog.js 12
4.6 progress.js 12
4.7 listview.js 12
4.8 RadioListview.js 13
4.9 page.develop.js 13
第5章 Aspx页面设计其他 13
5.1 前言 13
5.2 调用录入页面 13
5.2.1 概述 13
5.2.2 服务端编程示例(C#) 14
5.3 直接访问数据库 14
5.3.1 概述 14
5.3.2 C#示例 14
5.3.3 VB示例 15
5.4 调用任务 15
5.4.1 概述 15
5.4.2 C#示例 15
5.4.3 VB示例 15
第6章 编程技术规范基本控制点 16
6.1 说明 16
6.1.1 Camel命名法 16
6.1.2 Pascal命名法 16
6.2 命名 16
6.2.1 页面文件命名 16
6.2.2 页面控件命名 16
6.2.3 类的命名 16
6.2.4 修饰符的使用 17
6.2.5 方法命名 17
6.2.6 事件方法命名 17
6.2.7 参数命名 17
6.2.8 集合参数及变量命名 17
6.2.9 常量的命名 17
6.2.10 局部变量命名 17
6.2.11 成员变量命名 17
6.2.12 拼音的使用 18
6.3 格式 18
6.3.1 {} 18
6.3.2 缩进 18
6.3.3 空格 18
6.3.4 换行 19
6.3.5 空行 19
6.3.6 注释 19
6.4 界面呈现 20
第1章 数据页面的扩展编程
1.1 概述
基于Web页面工具,可以自动生成每个类型的数据(录入/修改)页面,包括aspx文件及aspx.cs文件,当具有特定的需求时可以进行扩展编程。
1.2 支持扩展编程的事件
OnPreRender:页面呈现之前。
OnPreApply:页面数据更新到对象之前(事务控制中) 。
OnPreSave:页面数据更新到对象之后执行数据库保存之前(事务控制中) 。
OnSaveComplete:保存到数据库之后(事务控制中) 。
OnPreSaveCompleteContinue:保存(按钮)操作完成之后跳转之前。
OnPreApplyCompleteContinue:应用(按钮)操作完成之后跳转之前。
OnPreDelete:对象删除之前。
OnDeleteComplete:对象删除完成之后。
Web页面工具生成aspx.cs文件时,已经针对上述事件提供了方法框架,开发者可以根据业务需求在相应的方法中编写业务逻辑代码。
1.3 常用保护方法或属性
ObjectType:页面所关联的业务对象的类型标识。
ObjectId:页面所关联的业务对象的标识。
IsNew:页面所关联的业务对象是一个新建的尚未保存的对象。
AttachedObj:页面所关联的抽象类型OprObject对象,可以通过该抽象对象构造更易于编程的具体类的对象,相关信息需要参阅文档《Appkit-面向对象体系》。
AddTransObject:将其他的业务对象添加到事务的回滚集合中。
CreateNextNewContinue:是否继续创建下一个新对象,一般用于方法OnPreSaveCompleteContinue()中。
1.4 全页滚动浏览
默认情况下,当数据页面中包含明细子数据表格时(即表头与表体结构),表体部分当内容较多时可以滚动浏览、而表头部分内容不在滚动查看的范围、始终保持在固定的页面位置。
如果表头部分内容较多而表体部分的内容也较多时,由于表体部分所占的高度区域非常有限,那么滚动查看表体部分会比较困难,这种情况下,可以改变数据页面的布局和浏览方式,使得能够滚动浏览整个数据页面而非仅滚动浏览表体部分。
实现数据页面的全页滚动浏览,需要进行以下三项修改:
PageXXX.aspx页,使用以下标签替换原来修饰lsvwYYY框架的GroupBox标签:
<div style="font-weight: bold; margin-top: 5px;">YYY子类型的显示名称</div>
PageXXX.aspx页,注释或删除以下js代码行:
//reHeightToClient("lsvwYYY");
YYY.DataGrid.aspx页,页面底部js代码段的末尾添加以下js代码行:
resizeFrame = true;
1.5 典型范例
d:\WebApps\SFPARTMIS\OprObject\PageWLCGD.aspx.cs。
d:\WebApps\Htwlxt\OprObject\PageRKJL.aspx.cs。
d:\WebApps\Htwlxt\OprObject\PageCKJL.aspx.cs。
第2章 Appkit Web类库
2.1 Appkit.AppCommon名称空间
2.1.1 Mails类(邮件)
提供邮件服务。
常用方法:
static MailTo
2.1.2 Messages类(消息)
提供消息服务。
2.1.3 WorkManage类(业务管理)
提供业务管理的支持。
常用方法:
static Transfer
2.2 Appkit.Common名称空间
2.2.1 CommonMethod类(公共方法)
提供公共基础方法(静态方法)的支持。
常用方法:
GetQueryString:获取请求查询字符串中的相关值。
IsTrueQuery
IsFalseQuery
IsTrue
IsFalse
HasQuery
QueryReplace:替换当前请求的链接中的键值。
UrlReplace:替换url链接中的键值。
RedirectMessage:跳转到信息显示页面。
RegScript:注册js脚本代码。
RegSrcScript:注册js脚本文件。
StartupScript:运行js脚本代码。
Replace:忽略大小写的字符串替换。
2.2.2 Dialog类(对话框)
提供弹出信息对话框服务。
常用方法:
ShowInfo:显示提示信息。
ShowError:显示错误信息。
ShowException:显示异常信息。
CheckMsg:处理信息内容中可能的影响显示的特殊字符。
2.2.3 SimpleMethod类(简单方法)
常用方法:
ResultCheck:检查一个值,并且确实是否抛出异常。
Array:将不确定数目的字符串或数值转换为数组。
NullDate:返回Appkit约定的空日期。
NullTime:返回Appkit约定的空时间。
2.2.4 ChineseCurrency类(人民币)
常用方法:
ToUpper:转换为大写人民币。
ToLower:转换为小写人民币 ¥前导, 两位小数, 整数部分每三位用逗号分隔。
2.3 Appkit.Web.Data名称空间
2.3.1 ResultSet类(查询结果集合)
常用方法及属性:
构造:传递一个完整的SQL查询表达式。
Rows:行对象集合。
RowCount:行数。
ColumnCount:列数。
GetRow:获取指定索引的ResultRow行对象。
2.3.2 ResultRow类(结果行)
常用方法:
GetStr:获取行中指定字段的值,参数可以传递索引或名称。
GetFloat:获取行中指定字段的值并转换为float,参数可以传递索引或名称。
GetBool:获取行中指定字段的值并转换为bool,参数可以传递索引或名称。
GetDate:获取行中指定字段的值并转换为DateTime,参数可以传递索引或名称。
GetTime:获取行中指定字段的值并转换为DateTime,参数可以传递索引或名称。
2.3.3 XmlProcesser类(Xml处理器)
2.3.4 XmlCustomReader类(Xml读取器)
2.3.5 ObjectDocument类(对象文档)
2.4 Appkit.Web.IO名称空间
2.4.1 DirService类(目录路径服务)
提供物理目录与虚拟路径服务。
常用属性:
(略)。
2.4.2 FileReader类(文件读取器)
提供文件读取服务。
常用方法:
string ReadLn(string filePath):读取一行文本。
List<string> ReadLns(string filePath):读取所有文本到List。
string[] ReadArray(string filePath):读取所有文本到字符串数组中。
2.4.3 FileWriter类(文件写入器)
提供文件写入服务。
常用方法:
void Write(string filePath, string content):写入文本(覆盖原内容)。
void AppendWrite(string filePath, string content):追加写入文本。
void WriteArray(string filePath, string[] contents):写入一个字符串数组(覆盖原内容)。
void AppendWriteArray(string filePath, string[] contents):追加写入一个字符串数组。
void WriteLns(string filePath, params string[] contents):写入多行文本(覆盖原内容)。
void AppendWriteLns(string filePath, params string[] contents):追加写入多行文本。
2.5 Appkit.Web.Management名称空间
2.5.1 AppContext类(应用上下文)
参见SessionState类。
2.5.2 ObjectCache类(对象缓存管理器)
常用属性:
Session
Console
AppId:当前的应用系统标识。
PrjId:当前的应用系统工程的标识。
UserLoginName:当前用户登录名。
UserName:当前用户名。
2.5.3 ObjectService类(对象服务)
提供基本的OprObject对象服务。
常用静态方法:
ResultCheck:判断一个值,并确定是否抛出一个异常。
Delete(应用系统开发中不常用)
CreateNew(应用系统开发中不常用)
2.5.4 SessionState类(会话状态管理)
提供会话状态服务,基于序列化技术进行对象缓存管理。
典型用法:
AppContext.Current.Session["键名称"]=对象或值;
2.5.5 Transaction类(事务管理)
提供事务的支持。
常用方法:
构造:传递类型标识为参数。
Begin:启动事务。
AddObject:添加业务对象到回滚控制
Commit:提交事务。
Rollback:回滚事务。
2.6 Appkit.Web.Search名称空间
2.6.1 ConditionConstructor类(条件构造器)
提供可靠简便的查询条件构造服务。
常用方法:
AddCompare:添加等于比较表达式。
AddIsEmptyCompare:添加等于空字符串比较表达式。
AddIsNotEmptyCompare:添加不等于比较表达式。
AddIsNotNullCompare:添加为空比较表达式。
AddIsNullCompare:添加不为空比较表达式。
AddLikeCompare:添加字符串包含比较表达式。
ToString:转换为SQL条件表达式。
And:比较表达式之间的逻辑运算符。
2.6.2 DateRange类(日期范围)
提供日期范围查询表达式及起始日期计算的支持。
普通日期范围枚举NormalDateRange。
简单日期范围枚举SimpleDateRange。
常用方法:
ParseDateRangeExpr
CalculateDateRange
2.7 Appkit.Web.Security名称空间
2.7.1 PrivilegeService类(权限服务)
常用方法:
CheckAdmin:
CheckAdmins:
CheckFuncPrivilege:
2.8 Appkit.Web.Threading名称空间
2.8.1 ThreadExecutor类(线程执行器)
提供基本的线程服务,可以在大型任务的执行过程中实时设置任务的完成进度信息,配合调用RateOfProgress.js脚本中的showRatio、将任务的完成进度及相关信息显示给用户。
常用方法:
static Init(System.Web.UI.Page page);
static Execute(ThreadStart start);
static SetProgress (int total, int complete, string info);
(同时需要引用名称空间System.Threading)。
javascript方法:
showRatio(msg, timeout, barColor, url)
2.9 Appkit.Web.UI名称空间
2.9.1 Page类(Appkit页面基类)
无论采用C#或Vb进行编程,如果将页面类的基类由System.Web.UI.Page改为Appkit.Web.UI.Page类,这样可以获得来自Appkit的诸多服务支持。
常用方法:
ListenSubmit:监听基于Appkit所提供的submit函数的客户端提交,扩展模拟aspx的原有机制。
2.9.2 PageService类(页面服务)
提供基本的页面服务。
常用方法:
ResizeToMain
SetCommonStyle
SetCssLink
InitSelect
InitListBox
2.9.3 Script类(脚本服务)
提供页面脚本引用的支持。
常用方法:
IncludeCommon
IncludeDefault
IncludeGrid
IncludeSelect
第3章 Appkit.Web.Control控件库
请参见《Appkit-Web控件使用手册》。
第4章 javascript资源
4.1 common.js
执行服务器端代码Appkit.Web.UI.Script.IncludeCommon可以引用该脚本。
httpPost(url):基于 Ajax 技术静默发出一个请求,忽略服务端的响应或是否有响应。
httpGetText(url, handle): 基于 Ajax 技术静默发出一个请求, 要求服务端的响应返回字符串。handle 为处理函数句柄,一般为function (result){//…},result为字符串。
httpGet(url, handle):基于 Ajax 技术静默发出一个请求, 要求服务端的响应返回 XML 对象。handle 为处理函数句柄,一般为function (result){//…},result为XML。
loadHideFrame(src, shwprg):创建并载入隐藏框架。
postHideFrame(src, handle):创建并基于提交方式使用隐藏框架。handle 为处理函数句柄,一般为function (doc){//…},doc为iframe的window对象的document对象。
以上方法的示例请参见《Appkit-常见典型需求的实现方法》。
getAppPath(win):获取应用系统的绝对虚拟路径(例如 http://host:port/虚拟目录)。win可忽略。
getCurPath(win):获取当前的绝对虚拟路径(例如 http://host:port/虚拟目录/目录1/目录2)。win可忽略。
getPage(win):获取当前页面的名称(例如 Default.aspx)。win可忽略。
getQuery(key):获取对应查询关键字的值。
doNothing():没有任何操作的方法。
refresh():刷新页面。
4.2 message.js
执行服务器端代码Appkit.Web.UI.Script.IncludeCommon可以引用该脚本。
showInfo(msg):显示一个普通信息对话框;
showError(msg):显示一个错误信息对话框;
showException(msg):显示一个异常信息对话框;
confirmOkCancel(msg):显示一个确定或取消的确认信息对话框,返回 true(确定) 或 false(取消);
confirmYesNo(msg):显示一个是或否的确认信息对话框,返回 true(是) 或 false(否)。
4.3 align.js
执行服务器端代码Appkit.Web.UI.Script.IncludeCommon可以引用该脚本。
reWidthToClient(obj, w):调整对象的宽度以充满可用空间。obj 可以为对象或标识,w 为补偿宽度,一般为负数。
reHeightToClient(obj, w):调整对象的高度以充满可用空间。obj 可以为对象或标识,w 为补偿高度。
resizeToClient(obj, w, h):调整对象的宽度和高度以充满可用空间。obj 可以为对象或标识; w 为补偿宽度,一般为负数;h 为补偿高度,一般为负数。
reHeightAs。
reWidthAs。
resizeAs。
reWidthTable(tbl, r):合计单元格 style.width 调整设定 table 的宽度。r 为标准行的索引。
4.4 selectobject.js
执行服务器端代码Appkit.Web.UI.Script.IncludeSelect可以引用该脚本。
4.4.1 选择一个对象
selectObject(objType, propName, forceCond, direct, confirmHandle):选择并返回一个业务对象。
objType为类型名称。
propName为属性名称。
forceCond为附加的搜索条件, 没有时可以传递空字符串。
direct为是否立即执行搜索,取值true或false。
confirmHandle为选定之后处理函数句柄,一般为function (value, obj){//…},value是选定对象的propName属性值字符串,obj是选定的对象,可以以obj["属性标识"]的方式读取更多的属性值。
4.4.2 选择多个对象
selectObjects(objType, propName, forceCond, direct, confirmHandle):选择并返回若干业务对象。
objType、propName、forceCond、direct参数同上。
confirmHandle为选定之后处理函数句柄,一般为function (values, objs){//…},values是选定对象的propName属性值字符串数组,objs是选定的对象数组。
4.4.3 选择一个对象并为文本框赋值
selectObjectTo(txtId, objType, propName, forceCond, direct, confirmHandle):选择一个业务对象并将相关的属性值赋值给指定标识的文本框。
txtId为文本框控件的标识,选定之后,所选对象的propName属性值赋值给该文本框。
objType、propName、forceCond、direct参数同上。
confirmHandle为选定之后处理函数句柄,一般为function (value, obj){//…},value是选定对象的propName属性值字符串,obj是选定的对象,可以以obj["属性标识"]的方式读取更多的属性值。
注:Appkit.Web.Control.ObjectSelectEdit服务器控件封装了该功能。
4.4.4 选择多个对象并为文本框赋值
selectObjectsTo(txtId, objType, propName, forceCond, direct, confirmHandle):选择若干业务对象并将相关的属性值赋值给指定标识的文本框。
txtId为文本框控件的标识,选定之后,所选对象的propName属性值数组的分号连接字符串赋值给该文本框。
objType、propName、forceCond、direct参数同上。
confirmHandle为选定之后处理函数句柄,一般为function (values, objs){//…},values是选定对象的propName属性值字符串数组,objs是选定的对象数组。
4.5 divdialog.js
执行服务器端代码Appkit.Web.UI.Script.IncludeCommon可以引用该脚本。
4.6 progress.js
执行服务器端代码Appkit.Web.UI.Script.IncludeCommon可以引用该脚本。
showProgress(str):提示运行信息并禁止当前窗口的操作。
showProgressTop(str):提示运行信息并禁止整个浏览器窗口的操作。
closeProgress():关闭运行提示。
开发javascript代码时,如果是一个较长时间的操作,那么可以在开始部分使用showProgress或showProgressTop,操作结束部分使用closeProgress。
4.7 listview.js
执行服务器端代码Appkit.Web.UI.Script.IncludeGrid可以引用该脚本。
Appkit内置的搜索结果包含相关的功能。
getSelKeyArray():获取当前页所有通过 checkbox 选中行的键值的数组。
getSelPropArray(propName):获取当前页所有通过 checkbox 选中行的指定数据属性值的字符串数组。
getAllSelKeyArray():分页场景下获取所有通过 checkbox 选中行的键值的数组。
4.8 RadioListview.js
执行服务器端代码Appkit.Web.UI.Script.IncludeGrid可以引用该脚本。
Appkit内置的搜索结果包含相关的功能。
getRadioRowKey():返回单选按钮选中行的键值。
4.9 page.develop.js
执行服务器端代码Appkit.Web.UI.Page.ListenSubmit可以引用该脚本。
submit():可以传递若干字符串参数、执行页面提交、并按照特定的命名约定机制调用服务端特定的方法。
例如,id为imgTest的图片<img>通过onclick调用了该方法,如果页面的服务器代码中有一个public void imgTestOnClick(params string[] args)函数,那么页面将提交回传并执行该服务器函数代码;如果客户端调用的形式为submit("中国","china"),则服务端args参数同样为{"中国","china"}数组。
服务器代码中函数的命名约定为控件标识+后缀,后缀可以为_Click、_OnClick、Click及OnClick,同时遵循前述优先顺序。
第5章 Aspx页面设计其他
5.1 前言
针对Appkit应用系统开发的页面,不能在Vs.Net开发环境中通过“在浏览器中查看”直接访问,需要基于完整的应用系统环境进行访问。
5.2 调用录入页面
5.2.1 概述
需要访问页面:WebApps/Common/PageAgent.aspx。
查询字符串参数:?objtype={类型标识}&innercreate=true。
5.2.2 服务端编程示例(C#)
using Appkit.AppCommon;
string objType = "{类型标识}";
string url = UrlLookup.GetPageAgent() +
"?objtype=" + Server.UrlEncode(objType) +
"&innercreate=true";
// 使用该 url
5.3 直接访问数据库
5.3.1 概述
普通情况下,并不建议直接访问数据库,基于Appkit所提供的服务,能够满足大多数的业务需求,在此基础上,还为直接访问数据库提供了简洁有效的支持。
5.3.2 C#示例
using System.Data.Common;
using %应用系统标识%.DB;
DbConnection conn = Main.Connection;
Main为%应用系统标识%.DB名称空间的一个类,代表主数据库,除了Main之外还有其他数据库。
至此就可以进行数据库编程了,名称空间%应用系统标识%中,以类的形式提供了所有表名及字段名的信息,可以使开发者更容易的进行编程。
5.3.3 VB示例
Imports System.Data.Common
Imports %应用系统标识%.DB
Dim conn As DbConnection
Set conn = Main.Connection
5.4 调用任务
5.4.1 概述
数据库任务除了通过在任务中心中通过标准的交互模式执行,还可以在任何功能模块中通过编程的方式进行调用。
5.4.2 C#示例
using DBTskEng;
using Appkit.Web.Management;
DBTaskEntity tsk = ObjectCache.DBTaskEngine.GetTask("任务的标识名称");
string query = string.Format("@参数1={0}&@参数2={1}&参数3={2}", "值1", "值2", "值3");
tsk.Execute(query);
if (tsk.LastResult != 0)
CommonMethod.RedirectMessagePage(tsk.LastErrMsg);
5.4.3 VB示例
Imports DBTskEng
Imports Appkit.Web.Management
Dim tsk As DBTaskEntity
Set tsk = ObjectCache.DBTaskEngine.GetTask("任务的标识名称")
Dim query As String
query = String.Format("@参数1={0}&@参数2={1}&参数3={2}", "值1", "值2", "值3")
tsk.Execute(query)
If tsk.LastResult <> 0 Then
CommonMethod.RedirectMessagePage(tsk.LastErrMsg)
EndIf
第6章 编程技术规范基本控制点
6.1 说明
该控制点涵盖aspx、html、c#、javascript、xml、xslt。
6.1.1 Camel命名法
标识符的首字母小写,而每个后面连接的单词的首字母都大写。
Camel命名法也称为Camel大小写。
6.1.2 Pascal命名法
标识符的首字母和后面连接的每个单词的首字母都大写。
Pascal命名法也称为Pascal大小写。
6.2 命名
6.2.1 页面文件命名
文件名遵从Pascal命名法,无特殊情况时扩展名小写。
使用统一而又通用的文件扩展名。
6.2.2 页面控件命名
可以采用以下三种命名方式:
小写控件类型缩写(简写)+英文描述,英文描述采用Pascal命名法。
小写控件类型缩写(简写)+中文拼音描述,拼音描述首字母大写。
中文拼音描述,拼音描述首字母大写。
6.2.3 类的命名
遵从Pascal命名法。
使用名词或组合名词做为类的名称。
可以使用中文拼音。
6.2.4 修饰符的使用
正确使用private、protected及public来确定类的成员的可访问性。
正确使用abstract、virtual、override、static等修饰符。
6.2.5 方法命名
C#语言,采用Pascal命名法。
javascript语言,采用Camel命名法。
6.2.6 事件方法命名
C#语言,采用Button1_Click形式的命名。
javascript语言,采用button1_onclick 形式的命名。
6.2.7 参数命名
参数命名采用Camel命名法。
使用描述性参数名称,参数名称应当具有足够的描述性,以便参数的名称及其类型可用于在大多数情况下确定它的含义。
6.2.8 集合参数及变量命名
遵从Camel命名法之外,建议采用复数,可以带s等后缀来描述。
6.2.9 常量的命名
应该都大写,多个单词之间用“_”隔开。并且指出完整含义
6.2.10 局部变量命名
局部变量命名采用Camel命名法。
变量名必须采用有意义的单词命名。
如果变量名过长可以使用单词缩写。
6.2.11 成员变量命名
private、protected成员使用Camel大小写。
public成员使用Pascal大小写。
6.2.12 拼音的使用
可以使用汉语拼音来替代英文。
常见的用法包括:
中文词语各个汉字的拼音首字母。
中文词语首个汉字拼音全拼及以后各个汉字的拼音首字母。
可以使用汉语拼音及英文的组合。
常用的简单英文单词不要使用汉语拼音来代替,包括Find、Delete、Exists、Index、Remove、Move、Up、Down、Do、Execute、Draw、Create、Display、Show、Work等。
6.3 格式
6.3.1 {}
{以及}应该另起新行,该行不应有其他代码,成对的{、}应该垂直对齐。
6.3.2 缩进
每对{及}中的代码段应该有1次缩进,缩进应该为4个空格,可以在代码中使用Tab字符来代替4个空格。
因代码段仅1行而忽略{及}时同样需要缩进。
6.3.3 空格
参照以下规则使用空格:
1 关键字和左括号“(”应该用空格隔开,在方法名和左括号“(”之间不要使用空格,这样有主语辨认代码中的方法调用与关键字。
2 多个参数用逗号隔开,每个逗号后都应加一个空格。
3 除了“.”之外,所有的二元操作符都应用空格与它们的操作数隔开,一元操作符、++及--与操作数间不需要空格。
4 语句中的表达式之间用空格隔开。
5 代码行尾部不应保留多余的空白(空格或Tab字符串),对于从页面上复制来的代码尤其需要检查。
6.3.4 换行
换行是为了避免太长的一行代码,以便提高代码的可阅读性。
以下情况应换行:
1 代码行超出1024×768屏幕时开发工具常规的阅读宽度;
2 逻辑运算超过3个&&、||、and及or时;
3 查询字符串参数的多个&之间
展开阅读全文