Skip to content

Commit d17b60c

Browse files
committed
init
1 parent 14e1047 commit d17b60c

File tree

4 files changed

+180
-5
lines changed

4 files changed

+180
-5
lines changed

.DS_Store

12 KB
Binary file not shown.

README.md

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,51 @@
1-
# simple-android-opensource-framework
2-
## 概述
3-
simple android opensource framework repository
1+
# Android著名开源库的简版实现
42

3+
## 简述
4+
该项目通过分析并实现Android平台知名开源框架的简单版本来提升自我,并达到深入理解各大开源库的核心原理的目的。稳定、强大的开源库一般都较为复杂,比如Universal-ImageLoader,因此简版开源库不需要完全按照原版来实现,只需要把核心架构、原理实现,并且做到可运用到实际项目中即可。在实现开源库简版的同时,作者需要写一系列文章来剖析它的实现原理以及为什么要这么设计,在提升自我的同时将框架的设计与实现、领悟分享给他人,希望大家在提升自我的同时对行业做出一些贡献。
55

6-
## 开发规范
6+
如果你对面向对象不是很了解,那么在开始之前先学习一下[面向对象的六大原则](https://github.com/simple-android-framework-exchange/android_design_patterns_analysis/oop-principles/oop-principles.md)是非常有必要的。
77

88

9-
## 如何参与
9+
## 库的所属种类
10+
| 开源库类型 | 文件夹 |
11+
| ------------- |:-------------:|
12+
| 网络请求相关 | [network](network) |
13+
| 数据库 | [orm](orm) |
14+
| 图片加载 | [imageloader](imageloader) |
15+
| view | [view](view) |
16+
| 注入框架 | [inject](inject) |
17+
| 兼容库 | [compatibility](compatibility) |
18+
| 其他 | [others](others) |
19+
20+
21+
22+
## 开发规范简述
23+
[code-style.md](code-style.md)
24+
1025

26+
## 如何参与
27+
1. 通过git将本库clone到本地;
28+
2. 首先将自己要实现的库、完成时间(包括设计与实现的第一篇概括性文章的完成)等填写到任务表中;
29+
3. 代码实现开源库的简版,这个简版库需要可用;
30+
4. 创建一个demo到该库的目录下,例如你要完成的库是Volley,那么你的demo的路径则为Volley/demo;
31+
5. 将文章的图片统一放到库名/images目录下,例如Volley/images;
32+
6. 按照[template.md](template.md)完成库的基本介绍,并且在后续的文章中对库进行详细分析。如果没有后续文章那么建议在该介绍文件中对库的核心实现、设计进行详细分析。
33+
7. 完成之后提交,并且push到该仓库当中。
1134

35+
**<font color="red">注意,在开发过程中不要修改不属于自己的文件,避免在协作时产生冲突。</font>**
1236

1337
## 任务表
38+
| 开源框架名称 | 作者 | 预计完成时间 |
39+
| ------------- |:-------------:|
40+
| Volley | [bboyfeiyu](https://github.com/bboyfeiyu) | 2015.3.5 |
41+
42+
43+
## 已完成框架列表
44+
| 开源框架 | 文件夹 | 完成时间 |
45+
| ------------- |:-------------:|
46+
| | | |
47+
48+
1449

1550

1651

code-style.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# 编码规范
2+
3+
为了保持大家的代码一致性,进行一些代码格式的规范。
4+
5+
* 代码缩进使用4个空格,不是Tab键。
6+
* 统一使用UTF-8编码,避免乱码问题。
7+
* 类的命名规范: 如果是Android SDK提供的Android应用组成部分,那么类名应该是类的作用的英文全称或者缩写+ Android SDK基类的名字。
8+
9+
例子:
10+
Activity类名字应该是 类似 MainActivity, NaviActivity (Navigation, 导航缩写Navi), TextActivity, BookActivity
11+
12+
Service类名字缩写应该是类似 DownloadService,
13+
每个类完成后应该有作者姓名和联系方式的注释,对自己的代码负责。如
14+
15+
```
16+
/**
17+
* 类的介绍
18+
*/
19+
public class DataBack {
20+
// ...
21+
}
22+
```
23+
24+
* 变量命名
25+
变量的命名均要能够代表它的意义,即命名的字解释性。看如下示例:
26+
27+
public变量的以小写字母开头,例如:
28+
```
29+
public String userName ;
30+
```
31+
其他访问权限的变量的格式为 : m+能够代表变量意义的字母, 例如 :
32+
```
33+
private String mUserName ;
34+
```
35+
36+
* 函数命名
37+
函数的命名均要能够代表它的意义,即命名的字解释性。例如 :
38+
39+
```
40+
public void saveUserInfoToDB(User user) {
41+
// code
42+
}
43+
```
44+
上面的函数一看基本上知道是保存用户信息到数据库中,即命名的字解释性。
45+
46+
* 大括号的排列
47+
在java中两个大括号的正确格式如下 :
48+
49+
```
50+
if ( condition ) {
51+
// code
52+
} else if ( condition ) {
53+
//
54+
}
55+
56+
```
57+
即两个括号并不对齐排列。
58+
59+
* 空格问题
60+
在条件判断、操作数、操作符之间都要添加空格,使得语句更为清晰。例如 :
61+
62+
```
63+
int result = 10 + 23 - 100 / 4 ;
64+
65+
```
66+
错误的形式为 :
67+
68+
```
69+
int result=10+23-100/4 ;
70+
71+
```
72+
73+
* 空行问题
74+
在函数之间需要添加一个空行,例如:
75+
76+
```
77+
78+
private void setUserName(String aName) {
79+
//
80+
}
81+
82+
private void setUserAge(int aAge) {
83+
//
84+
}
85+
```
86+
87+
* 注释
88+
在类、函数、变量前面尽量加上相关的注释,当然如果你觉得你的命名具有足够的自解释性那可以免掉一些注释。但是建议在类的开头、重要的函数之前写一些介绍性、原理性注释。

template.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
Android设计模式源码解析之${模式名}
2+
====================================
3+
> 本文为 [Android 设计模式源码解析](https://github.com/simple-android-framework/android_design_patterns_analysis) 中 ${模式名} 分析
4+
> Android系统版本: ${系统版本号,例如 4.2.1}
5+
> 分析者:[${分析者}](${分析者 Github 地址}),分析状态:未完成,校对者:[Mr.Simple](https://github.com/bboyfeiyu),校对状态:未开始
6+
7+
8+
建议大家看下 [Volley](../volley/README.md)[UIL](../universal-image-loader/README.md)[Dagger](../dagger/README.md)[Event Bus](../event-bus/README.md) 的分析,了解分析该到什么程度,以及类似流程图和总体设计该怎么做。
9+
10+
`复制一份到自己的项目文件夹下,然后根据自己项目替换掉 ${} 内容,删掉本行及上面两行。`
11+
12+
## 1. 功能介绍
13+
功能介绍,包括功能或优点等
14+
15+
16+
## 2. 总体设计
17+
整个库分为哪些模块及模块之间的调用关系。
18+
- 如大多数图片缓存会分为 Loader 和 Processer 等模块。
19+
- 可使用 [Google Drawing](https://docs.google.com/drawings)[Visio](http://products.office.com/en-us/visio/flowchart-software)[StarUML](http://staruml.io/) 等工具完成,其他工具推荐??
20+
- 非所有项目必须,不需要的请先在群里反馈。
21+
22+
23+
## 3. 流程图
24+
主要功能流程图
25+
26+
- 如 Retrofit、Volley 的请求处理流程,Android-Universal-Image-Loader 的图片处理流程图
27+
- 可使用 [Google Drawing](https://docs.google.com/drawings)[Visio](http://products.office.com/en-us/visio/flowchart-software)[StarUML](http://staruml.io/) 等工具完成,其他工具推荐??
28+
- 非所有项目必须,不需要的请先在群里反馈
29+
30+
31+
32+
33+
## 4. 详细设计
34+
### 4.1 核心类详细介绍
35+
36+
类及其主要函数功能介绍、核心功能流程图,流程图可使用 [Google Drawing](https://docs.google.com/drawings)[Visio](http://products.office.com/en-us/visio/flowchart-software)[StarUML](http://staruml.io/)
37+
38+
39+
### 4.2 类关系图
40+
类关系图,类的继承、组合关系图,可是用 [StarUML](http://staruml.io/) 工具。
41+
42+
43+
44+
45+
##5. 杂谈
46+
该项目存在的问题、可优化点及类似功能项目对比等,非所有项目必须。
47+
48+
49+
50+
51+
`写完相关内容之后到开发群告知管理员,管理员安排相关人员进行审核,审核通过之后即可。`
52+

0 commit comments

Comments
 (0)