第四次团队作业——系统设计
队名:Aruba
项目名称:松鼠摘——一个简单实用的“文字”存储工具
队员:
1、完善《需求规格说明书》
经过上周老师现场的提问,我们也发现了软件中一个细节的地方我们没有考虑清楚、意见不一。
·经过讨论之后,确定下来文摘的存储以一级目录的方式直接存储;
·添加了性能需求部分的内容;
《cento_V1.1.pdf》
##2、代码风格规范 **“代码风格的原则是:简明,易读,无二义性。”** **“命名规范统一尤为重要。”** **“在命名规范的统一下,在加上注释,这样日后维护会高效快捷好多。”**
参考资料:《构建之法》
《Android 命名规范 (提高代码可以读性)》
1、基本代码风格
1.1、缩进
“4个空格,在Visual Studio和其他的一些编辑工具中都可以定义Tab键扩展成为几个空格键。不用Tab键的理由是,Tab键在不同的情况下会显示不同的长度,严重干扰阅读体验。”
1.2、行宽
100字符
1.3、括号
“在复杂的条件表达式中,用括号清楚地表示逻辑优先级。”
1.4、断行与空白的{ }行
为使代码结构更清晰易读,多使用断行与空白{ }行让代码块之间得以清晰区分
例:
if (condition)
{
DoSomething();
}
else
{
DoSomethingElse();
}
1.5、不把多条语句放在一行上。
a =1; b =2;
if (fFoo) Bar();
更严格地说,不把多个变量定义在一行上。
Foo foo1, foo2;
1.6、命名(命名规范详见2.3)
“要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。”
1.7、大小写
当变量名由多个单词组成,用大小写区分这些不同单词。
一个通用的做法是:所有的 类型/类/接口名 都用Pascal形式,所有的 变量 都用Camel形式。
Pascal(类型/类/接口名)——所有单词的第一个字母都大写。
如:MyFirstName、MyLastName、Readable。每一个单字的首字母都采用大写字母的命名格式。
Camel(变量名/方法名)——第一个单词全部小写,随后单词随Pascal形式。
如:myFirstName、myLastName、getMyName()。
1.8、注释
- 注释(包括所有源代码)应该只用ASCII字符,不用中文或其他特殊字符!
- 复杂的注释放在函数头,很多函数头的注释都用来解释参数的类型等,如果程序正文已经能够说明参数的类型in/out,就不要重复!注释也要随着程序的修改而不断更新
- 注释是为了解释程序做什么(What),为什么这样做(Why),以及要特别注意的地方
2、命名规范
参考文章:http://www.cnblogs.com/zhangs1986/p/3776807.html
2.1、标识符命名法
参见1.7
2.2、英文缩写规则
英文缩写原则:
1 较短的单词可通过去掉“元音”形成缩写
2 较长的单词可取单词的头几个字母形成缩写
3 此外还有一些约定成俗的英文单词缩写
常见英文单词缩写:
| 名称 | 缩写 |
|---|---|
| icon | ic (主要用在app的图标) |
| color | cl(主要用于颜色值) |
| divider | di(主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线) |
| selector | sl(主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector) |
| average | avg |
| background | Bg(主要用于布局和子布局的背景) |
| buffer | buf |
| control | ctrl |
| delete | del |
| document | doc |
| error | err |
| escape | esc |
| increment | inc |
| infomation | info |
| initial | init |
| image | img |
| Internationalization | I18N(首末字符i和n,18为中间的字符数)是“国际化”的简称 |
| length | len |
| library | lib |
| message | msg |
| password- | pwd |
| position | pos |
| server | srv |
| string | str |
| temp | tmp |
| window | wnd(win) |
程序中使用单词缩写原则:不要用缩写,除非该缩写是约定俗成的。
2.3、命名规范
2.3.1、包(packages):
采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xx(队名或个人),三级包名根据应用进行命名,四级包名为模块名或层级名。
| 包名 | 此包中包含 |
|---|---|
| com.xx.应用名称缩写.activities | 页面用到的Activity类 (activities层级名用户界面层) |
| com.xx.应用名称缩写.base | 页面中每个Activity类共享的可以写成一个i额BaseActivity类 (基础共享的类) |
| com.xx.应用名称缩写.adapter | 页面用到的Adapter类 (适配器的类) |
| com.xx.应用名称缩写.tools | 此包中包含:公共工具方法类(tools模块名) |
| com.xx.应用名称缩写.bean(或 com.xx.应用名称缩写.unity ) | 此包中包含:元素类 |
| com.xx.应用名称缩写.db | 数据库操作类 |
| com.xx.应用名称缩写.view(或 com.xx.应用名称缩写.ui ) | 自定义的View类等 |
| com.xx.应用名称缩写.service | Service服务 |
| com.xx.应用名称缩写.broadcast | Broadcast服务 |
2.3.2、类(classes):
- Pascal(类型/类/函数名)——所有单词的第一个字母都大写。
如:MyFirstName、MyLastName、RenderPage()。每一个单字的首字母都采用大写字母的命名格式。 - 尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
| 类 | 描述 | 例如 |
|---|---|---|
| activity 类 | Aty或者Activity为后缀标识 | 欢迎页面类WelcomeAty或者WelcomeActivity |
| Adapter类 | Adp或者Adapte 为后缀标识 | 新闻详情适配器NewtDetailAdp或则直接 NewDetailAdapter |
| 解析类 | Hlr为后缀标识 | 首页解析类HomePosterHlr |
| 公共方法类 | Tools或Manager为后缀标识 | 线程池管理类:ThreadPoolManager 日志工具类:LogTools |
| 数据库类 | 以DBHelper后缀标识 | 新闻数据库:NewDBHelper |
| Service类 | 以Service为后缀标识 | 时间服务TimeService |
| BroadcastReceive类 | 以Broadcast为后缀标识 | 时间通知TimeBroadcast |
| ContentProvider | 以Provider为后缀标识 | |
| 直接写的共享基础类 | 以Base开头 | BaseActivity,BaseFragment |
2.3.3、接口(interfaces):
命名规则同类(2.3.2),多以able或ible结尾,如interface Runnable ;
interface Accessible
2.3.4、方法(methods):
Camel(变量名/方法名)——第一个单词全部小写,随后单词随Pascal形式。
例如:onCreate(),run()
| 方法 | 说明 |
|---|---|
| initXX() | 初始化相关方法,使用init为前缀标识,如初始化布局initView() |
| isXX() | checkXX()方法返回值为boolean型的请使用is或check为前缀标识 |
| getXX() | 返回某个值的方法,使用get为前缀标识 |
| processXX() | 对数据进行处理的方法,尽量使用process为前缀标识 |
| displayXX() | 弹出提示框和提示信息,使用display为前缀标识 |
| saveXX() | 与保存数据相关的,使用sav为e前缀标识 |
| resetXX() | 对数据重组的,使用reset前缀标识 |
| clearXX() | 清除数据相关的 |
| removeXXX() | 清除数据相关的 |
| drawXXX() | 绘制数据或效果相关的,使用draw前缀标识 |
2.3.5、变量(variables):
- Camel(变量名/方法名)——第一个单词全部小写,随后单词随Pascal形式。
- 类中控件名称必须与xml布局id保持一致。
用统一的量词通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。
量词列表:量词后缀说明
First 一组变量中的第一个
Last 一组变量中的最后一个
Next 一组变量中的下一个变量
Prev 一组变量中的上一个
Cur 一组变量中的当前变量
2.3.6、常量(Constants):
全部大写,采用下划线命名法。
例如:MIN_WIDTH
2.3.7、资源文件(图片drawable文件夹下):
全部小写,采用下划线命名法,加前缀区分
命名模式:activity名称逻辑名称/common逻辑名称
如果有多种形态如按钮等除外如btn_xx.xml(selector)
| 名称 | 功能 |
|---|---|
| btn_xx | 按钮图片使用btn_整体效果(selector) |
| btn_xx_normal | 按钮图片使用btn_正常情况效果 |
| btn_xx_press | 按钮图片使用btn_点击时候效果 |
| bg_head | 背景图片使用bg_功能_说明 |
| def_search_cell | 默认图片使用def_功能_说明 |
| icon_more_help | 图标图片使用icon_功能_说明 |
| seg_list_line | 具有分隔特征的图片使用seg_功能_说明 |
| sel_ok | 选择图标使用sel_功能_说明 |
命名后缀:
| 后缀 | 说明 |
|---|---|
| unit | 在使用xml的tilemode来配图片时,element图片使用此后缀 |
| nor | 图片的状态,代表普通状态 |
| hl | 图片的状态,代表高亮状态 |
| press | 图片的状态,代表按下状态 |
| select | 图片的状态,代表其所占的view被选中 |
| unselect | 图片的状态,代表其所占的view没有被选中 |
2.3.8、资源布局文件(XML文件(layout布局文件)):
全部小写,采用下划线命名法
2.3.9、动画文件(anim文件夹下):
全部小写,采用下划线命名法,加前缀区分
前面为动画的类型,后面为方向
| 动画命名例子 | 规范写法 |
|---|---|
| fade_in | 淡入 |
| fade_out | 淡出 |
| push_down_in | 从下方推入 |
| push_down_out | 从下方推出 |
| push_left | 推像左方 |
| slide_in_from_top | 从头部滑动进入 |
| zoom_enter | 变形进入 |
| slide_in | 滑动进入 |
| shrink_to_middle | 中间缩小 |
2.3.10、资源ID(resourcesid):
- 大小写规范与方法名一致,采用Camel命名法。
- 命名规范为“资源控件的缩写名”+“变量名”。
注意:页面控件名称应该和控件id名保持一致
strings.xml,colors.xml等中的id命名:
命名模式:activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称
strings.xml中,使用activity名称注释,将文件内容区分开来
2.3.11、layout中的id命名
命名模式为:view缩写_模块名称_view的逻辑名称
view的缩写详情如下:
| 控件 | 缩写 |
|---|---|
| LayoutView | lv |
| RelativeView | rv |
| TextView | tv |
| Button | btn |
| ImageButton | imgBtn |
| ImageView | mgView或iv |
| CheckBox | chk |
| RadioButton | rdoBtn |
| analogClock | anaClk |
| DigtalClock | dgtClk |
| DatePicker | dtPk |
| EditText | edtTxt |
| TimePicker | tmPk |
| toggleButton | tglBtn |
| ProgressBar | proBar |
| SeekBar | skBar |
| AutoCompleteTextView | autoTxt |
| ZoomControls | zmCtl |
| VideoView | vdoVi |
| WdbView | webVi |
| RantingBar | ratBar |
| Tab | tab |
| Spinner | spn |
| Chronometer | cmt |
| ScollView | sclVi |
| TextSwitch | txtSwt |
| ImageSwitch | imgSwt |
| listView | lVi 或lv |
| ExpandableList | epdLt |
| MapView | mapVi |
作者:欢醉
【一个码农的日常】 1号群: 437802986(已满) 2号群: 340250479
出处:http://www.cnblogs.com/zhangs1986/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
##3、数据库设计    E-R图: 
##分工及比例:
| 学号 | 分工 | 比例 |
|---|---|---|
| 408 | 完善需求规格说明书、数据库设计 | 18% |
| 409 | 界面设计 | 18% |
| 410 | 数据库设计 | 15.5% |
| 428 | 文档整理 | 15.5% |
| 429 | 体系结构设计、编码规范整理 | 16% |
| 431 | 完善需求规格说明书 | 17% |

浙公网安备 33010602011771号