第四次团队作业——系统设计
队名: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、数据库设计 ![](http://images2015.cnblogs.com/blog/1030636/201610/1030636-20161030171753578-785715455.png) ![](http://images2015.cnblogs.com/blog/1030636/201610/1030636-20161030171759421-851250381.png) ![](http://images2015.cnblogs.com/blog/1030636/201610/1030636-20161030171803812-1754909300.png) E-R图: ![](http://images2015.cnblogs.com/blog/1030636/201610/1030636-20161030171817328-583680822.png)
##分工及比例:
学号 | 分工 | 比例 |
---|---|---|
408 | 完善需求规格说明书、数据库设计 | 18% |
409 | 界面设计 | 18% |
410 | 数据库设计 | 15.5% |
428 | 文档整理 | 15.5% |
429 | 体系结构设计、编码规范整理 | 16% |
431 | 完善需求规格说明书 | 17% |