Commit 18684b9a authored by 高洋's avatar 高洋

Track 10 files into repository.

- untracked assets/D4AO~YXMND{N)X5}WVPJ91Z.png
- untracked assets/Q@06402TWZG54}F{`I46[Z8.png
- untracked codeStyle.md
- untracked 前端组件/hlsCombobox.md
- untracked 前端组件/hlsDataSource
- untracked 前端组件/hlsDatePicker.md
- untracked 前端组件/hlsMaskedTextBox.md
- untracked 前端组件/hlsPage.md
- untracked 前端组件/README.md
- modified 融租易开发手册.md

Auto commit by GitBook Editor
parent 13b1713e
## 一、项目开发规范
1. 所有的项目文件必须采用UTF-8编码,IDEA及Eclipse需要手动设置项目编码以及编译编码。
- Eclipse中修改项目编码的方法参考:[Eclipse修改编码方法](http://jingyan.baidu.com/article/647f0115b0c9887f2148a822.html)
- IDEA中修改项目编码的方法参考:[IDEA修改编码方法](http://jingyan.baidu.com/article/948f5924e4de57d80ff5f998.html])
2. 提供他人使用的接口,原则上不允许修改**方法签名**,若是不再推荐使用,可以加**@ Deprecated**注解,同时提示新的接口名称。
3. **DTO**类中所有的字段,不允许设置**默认值**,且DTO必须**重写toString()方法**
4. 原则上不允许使用递归,部分情况可以使用尾递归。
5. 代码中不允许出现魔法值,即未定义的任何常量。 错误的用法不限于以下形式:
```java
if(user.getStatus() == 5){
// 5即为魔法值,应当避免使用
// do something
}
```
6. 在类中定义的常量、变量及方法,需要严格控制访问修饰符,提供自己使用的设为private,可以供别人使用的可以设为public、protected等。
7. 所有的覆写方法,必须加@Override注解,防止错误的拼写导致意外。
--- ---
## 二、命名规范
1. 所有的命名不允许使用**拼音或者拼音英文混合**方式,但部分公认的拼音允许使用,如**shanghai,beijing**等。
2. 所有的命名不允许使用**下划线_**或者**美元符$**作为起始或者结束。错误的情况有不限于以下几种:
- **_param**
- **$param**
- **param_**
- **param$**
- **_param$**
### 包命名规范
1. 包名一般为域名倒叙开头,后接项目名,再加上单数形式的名词(项目中一般使用模块代码),且全部为小写字母,如:
- 系统功能模块:**com.hand.hls.sys**
- 合同功能模块:**com.hand.hls.cont**
2. 在功能模块包中一般包含如下几种形式的包:
- 存放SpringMVC的控制层代码: **controllers**
- 存放该模块数据库实体对象: **dto**
- 存放该模块的部分组件: **components**
- 存放该模块的业务接口: **service**
- 存放改模块的业务实现类: **service.impl**
- 存放该模块的Mybatis数据库交互层代码: **mapper**
- 存放该模块的工具类代码: **utils**
- 存放自定义的异常类代码: **exception**
### 类命名规范
1. 一般类名采用Pascal命名法,所有单词的首字母大写,其余字母小写,单词与单词之间不使用**下划线_**分割,常见形式如:
- **HlsClassName**
- **HlsNormalClass**
2. 数据库实体类一般与数据表名称相同并改为Pascal命名规则,以**DTO**结尾,如:
- **SysUserDTO**
- **SysRoleDTO**
3. 抽象类命名使用**Abstract**开头,接口一般以 **I** 开头,Mybatis的mapper对象可不用 **I** 开头但必须使用**Mapper**结尾,如:
- **AbstractClass**
- **ILog**
- **SysUserMapper**
4. 业务逻辑层接口类使用 **I** 开头,且必须以**Service**结尾;业务的实现类在接口的基础上去掉开头的字母 **I**,最后加上**Impl**,如:
- **ISysUserService**
- **SysUserServiceImpl**
5. 自定义的异常类以**Exception**结尾,如:
- **UserNotFoundException**
- **UserDefineException**
6. 项目中的测试类一般以测试对象的类名开头,以**Test**结尾,如:
- **SysUserServiceImplTest**
7. 若是采用了设计模式的类,在命名时,可在最后添加设计模式的名称,如:
- 工厂模式: **LoggerFactory**
- 代理模式: **UserProxy**
- 适配器模式: **ArrayAdapter**
### 变量命名规范
1. 成员变量、局部变量都统一使用lowerCamelCase风格,必须遵从驼峰形式,即**首单词**字母都小写,后面单词的**首字母大写**。如
+ **hlsClassFieldName**
+ **hlsLocalParamName**
2. 数据库对象的成员变量中若是变量的类型为Boolean类型,则变量名不允许使用 **is**开头,错误的命名如下:
- **private Boolean isAdmin**
### 常量命名规范
1. 常量的命名一般所有单词都**大写**,各个单词之间使用下划线`_`分隔,如:
- **PI**
- **PROJECT_PATH**
2. 常量的命名尽量使用单词表达出常量的用途及含义,力求语义清晰,不用担心名字太长,如:
- 周期的第一天:**FIRST_DAY_OF_CYCLE**
- 用户允许的最大错误次数:**USER_ALLOWED_MAX_ERROR_COUNT**
### 方法命名规范
1. 方法的命名规则采用lowerCamelCase风格,方法名的首单词字母全部小写,其余单词首字母大写,如:
- **walkMyWay()**
- **doSomething()**
2. 对数据库进行查询的方法,一般以**select、find、query**开头,后面接查询的对象,若是查询结果为List集合,对象名可变为复数,如:
- `public SysUser selectSysUser()`
- `public List<SysRole> findSysRoles()`
3. 对数据进行数据插入的方法,一般以**insert**开头,后接插入的对象,若是允许批量插入对象,对象名可变为复数,如:
- `public int insertSysUser(SysUser user)`
- `public int insertSysRoles(List<SysRole> roles)`
4. 对数据库进行数据删除的方法,一般以**delete**开头,后接插入的对象,若是允许批量插入对象,对象名可变为复数,如:
- `public int deleteSysUser(SysUser user)`
- `public int deleteSysRoleByIds(List<Long> roleIds)`
5. 对数据库进行数据更新的方法,一般以**update**开头,后接插入的对象,若是允许批量插入对象,对象名可变为复数,如:
- `public SysRole updateSysRole(SysRole role)`
- `public int updateSysUsers(List<SysUser> users)`
\ No newline at end of file
# hlsCombobox标签
hlsCombobox 下拉列表组件
```xml
<h: hlsCombobox placeholder="hlsCombobox"
valuePrimitive="true"
dataTextField="text"
dataValueField="value"
bind="enabled: isEnabled, source: comboboxSource, value:data.productId"
style="width: 100%;"/>
```
### **主要属性**
| 属性名 | 类型 |
| --- | --- |
| animation | Boolean |
| autoBind | Boolean |
| autoWidth | Boolean |
| cascadeFrom | String |
| cascadeFromField | String |
| clearButton | Boolean |
| dataSource | DataSource |
| dataTextField | String |
| dataValueField | String |
| delay | Number |
| enable | Boolean |
| enforceMinLength | Boolean |
| filter | String |
| fixedGroupTemplate | String \| Function |
| footerTemplate | String \| Function |
| groupTemplate | String \| Function |
| height | Number |
| highlightFirst | Boolean |
| ignoreCase | Boolean |
| index | Number |
| minLength | Number |
| noDataTemplate | String \| Function |
| placeholder | String |
| suggest | Boolean |
| headerTemplate | String \| Function |
| template | String \| Function |
| text | String |
| value | String |
| valuePrimitive | Boolean |
| virtual | Boolean |
| change | Function |
| close | Function |
| dataBound | Function |
| filtering | Function |
| open | Function |
| select | Function |
| cascade | Function |
> 属性用法请参考KendoUI文档 [http:\/\/docs.telerik.com\/kendo-ui\/api\/javascript\/ui\/combobox](http://docs.telerik.com/kendo-ui/api/javascript/ui/combobox)
### **用法示例**
```javascript
//定义数据源DataSource
var dataSource= new kendo.data.DataSource({
data:["one","two"]
});
//下拉列表渲染函数
var itemTemplate = function (){
//...
}
//选中某一个列表选项后触发
function onComboboxChange(e){
var value = this.value();
// Use the value of the widget.
}
//以上两种函数定义方法皆可
```
```xml
<h: hlsCombobox id="hlsCombobox" dataSource="dataSource" clearButton="true" placeholder="test" enable="false" template="fn:itemTemplate" change="onComboboxChange"/>
```
> **提示:** 某些属性类型为**String \| Function** 时,表明它可以定义为字符串或者函数。因此当需要定义为Function时需要增加前缀**fn:**来区分\(例如函数template="fn:itemTemplate" \)
### **主要子节点**
* animation
* popup
* virtual
### **animation**
主要用来定义动画效果,例如打开关闭效果
* open 打开效果
* close 关闭效果
| 属性 | 类型 |
| --- | --- |
| effects | String |
| duration | Number |
```xml
<h: hlsCombobox id=" hlsCombobox ">
<h:animation>
<h:close effects="zoom:out" duration="300"/>
<h:open effects="zoom:in" duration="300"/>
</h:animation>
</h: hlsCombobox >
```
### **popup**
弹出窗口设置
| 属性 | 类型 |
| --- | --- |
| appendTo | String |
| origin | String |
| position | String |
```xml
<h: hlsCombobox id="combobox">
<h:popup appendTo="container" origin="top left" position="top left"/>
</h: hlsCombobox >
```
### **virtual**
动态加载相关设置
| 属性 | 类型 |
| --- | --- |
| itemHeight | Number |
| mapValueTo | String |
| valueMapper | Function |
```javascript
function valueMapper(){
$.ajax({
url: "http://demos.telerik.com/kendo-ui/service/Orders/ValueMapper",
type: "GET",
dataType: "jsonp",
data: convertValues(options.value),
success: function(data) {
//the **data** is either index or array of indices.
//Example:
// 10258 -> 10 (index in the Orders collection)
// [10258, 10261] -> [10, 14] (indices in the Orders collection)
options.success(data);
}
})
}
```
```xml
<h: hlsCombobox id="combobox">
<h:virtual itemHeight ="20" mapValueTo="index" valueMapper="valueMapper"/>
</h: hlsCombobox >
```
# hlsDatePicker标签
日期选择器
```xml
<h:hlsDatePicker id="hlsDatePicker
```
### **主要属性**
| 属性名 | 类型 |
| --- | --- |
| culture | String |
| depth | String |
| footer | String \| Function |
| format | String |
| max | String |
| min | String |
| start | String |
| value | String |
| name | String |
| bind | Function |
| required | Boolean |
| change | Function |
| close | Function |
| open | Function |
| placeholder | String |
> **提示:** 属性用法请参考kendoui API文档 [http:\/\/docs.telerik.com\/kendo-ui\/api\/javascript\/ui\/datepicker](http://docs.telerik.com/kendo-ui/api/javascript/ui/datepicker)
### **用法示例**
```javascript
//注意是写在script标签内的
var viewModel = kendo.observable({
data:{}
});
function open(){
//...
}
function footer(){
//...
}
```
```xml
<h:hlsDatePicker id="hlsDatePicker"
max="2016-10-14"
name="datepicker"
placeholder="datepicker"
bind="value:data.birthday"
required="true" open="open" footer="fn:footer"/>
```
#### **子标签**
| 属性名 | 类型 |
| --- | --- |
| animation | Object |
| month | Object |
| animation | 类型 |
| --- | --- |
| close | Object |
| open | Object |
```xml
<h:hlsDatePicker id="datePicker">
<h:animation>
<!--当属性仍然为一个对象时,继续添加子标签-->
<h:close effects="zoom:out" duration="300"/>
<h:open effects="zoom:in" duration="300"/>
</h:animation>
</h:hlsDatePicker
```
| month | 类型 |
| --- | --- |
| content | String |
| empty | String |
```xml
<h:hlsDatePicker id="hlsDatePicker">
<h:month content="<div></div>" empty="-"/>
</h:hlsDatePicker
```
> **提示**:
>
> * 遇到**object**类型 就向下添加子标签,当遇到普通类型时,就添加到当前的标签上。
## hlsMaskedTextBox
格式框
##### xml配置
```xml
<!--h:为命名空间,必须要加的;hlsMaskedTextBox为组件名;id可写可不写-->
<h:hlsMaskedTextBox id="hlsMaskedTextBox"/>
```
#### **一般属性**
> **提示:**
>
> * 属性用法请参考kendoui API文档的maskedTextBox:[http:\/\/docs.telerik.com\/kendo-ui\/api\/javascript\/ui\/maskedtextbox](http://docs.telerik.com/kendo-ui/api/javascript/ui/maskedtextbox)
| 属性名 | 类型 |
| --- | --- |
| clearPromptChar | Boolean |
| culture | String |
| mask | String |
| promptChar | String |
| unmaskOnPost | Boolean |
| value | String |
| change | Function |
| caseLetter | String |
| clearButton | Boolean |
| placeholder | String |
| bind | Function |
| required | Boolean |
用法示例:
```xml
<h:hlsMaskedTextBox id="hlsMaskedTextBox" required="true" placeholder="hlsMaskedTextBox"/>
```
> **提示:**
>
> * 上述所有属性直接添加在标签内即可,(**\[\*\***属性名\]**\*\* = "..."**)
#### **子标签**
| 属性名 | 类型 |
| --- | --- |
| rules | Object |
```javascript
function rules(){
//...
}
```
```xml
<h:hlsMaskedTextBox id="hlsMaskedTextBox">
<h:rules "~"="/[+-]/" "^"="fn:rules"/>
</h:hlsMaskedTextBox>
```
> **提示**:
>
> * 遇到**object**类型 就向下添加子标签,当遇到普通类型时,就添加到当前的标签上。
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
* II. 项目开发规范 * II. 项目开发规范
* 2.1 项目开发规范 * [2.1 项目开发规范](/codeStyle.md#%E4%B8%80%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83)
* 2.2 编码规范 * [2.2 编码规范](/codeStyle.md#%E4%BA%8C%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83)
* 2.3 Checkstyle * 2.3 Checkstyle
* III. 后端开发 * III. 后端开发
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment