开发规范
团队开发的三点原则:
1,规范性:即书写规范、命名规范、注释规范,一旦定好,团队成员就必须严格执行
2,单一性:即面向对象的单一原则,每个功能都应该单独作为一个功能模块独立,尽量不要存在耦合性
3,简洁性:保持代码结构的简洁,可读性
1、书写规范:
1,编码统一为UTF-8
2,空格,方法参数,赋值运算符之间一定要空格隔开,而不是挤在一起,例如
int result = a + b; //正确方式,而不是int result=a+b;
3,换行的使用
多个方法之间一定要空行
同一个方法内的两个逻辑段之间也要空行
方法内的变量声明,应该空行
常量、变量之间
4,使用范围型的枚举、或静态常量来定义,而不是直接字面量写死
/*
* 枚举方式 - 登录类型
*/
typedef enum{
LoginTypeAccount, //账号-密码
LoginTypeMobile, //手机验证码
LoginTypeQQ, //qq登录
LoginTypeWeChat //微信登录
} LoginType;
/*
* 常量方式 - 登录类型
*/
extern NSInteger const LoginTypeAccount;
extern NSInteger const LoginTypeMobile;
extern NSInteger const LoginTypeQQ;
extern NSInteger const LoginTypeWeChat;
NSInteger const LoginTypeAccount = 1;
NSInteger const LoginTypeMobile = 2;
NSInteger const LoginTypeQQ = 3;
NSInteger const LoginTypeWeChat = 3;
5,在分支判断中,如果存在多种复杂逻辑处理,内部代码应单独封装成一个函数,作为一个独立功能
switch(loginType){
case LOGIN_TYPE_PASSWORD:
loginByPassword();
break;
case LOGIN_TYPE_SmsCode:
loginBySmsCode();
break;
case LOGIN_TYPE_QQ:
loginByQq();
break;
}
6,对于颜色、字符串、URL应写到配置文件中,方便统一管理
2、命名规范:
1,类、接口:帕斯卡命名法、首字母大写,例如XxxViewController、XxxActivity、XxxUtil
2,函数:采用驼峰命名法,即首字母小写
3,常量命名:全大写,并按_分割
4,资源文件命名:全小写,并按_分割
5,控件的命名:控件缩写+功能描述,例如
btnLogin、btnRegister、labelUserName、listViewXxx、tableViewXxx、checkBoxXxx、radioXxx等等
6,layout文件命名:
activity_模块.xml
fragment_模块.xml
dialog_模块.xml
item_list_模块.xml
item_frid_模块.xml
7,string文件命名
title_xxx //页面标题
btn_xxx //按钮文字
label_xxx //标签文字
tab_xxx //选项卡文字
dialog_xxx //对话框文字
menu_xxx //菜单文字
hint_xxx //提示文字
8,drawable文件命名,前缀组件功能命名
shape_btn_green_round.xml
selector_btn_green.xml
9,图片命名:类型_功能
bg_login
icon_login_lock
icon_tabbar_me
3、注释规范:
1,类、接口、文件一定要用文档注释写明此类的用途、作者、日期信息
/**
* 作为所有Activity的基类
* @Copyright (c) 2016 zjt Inc. All rights reserved.
* @Author zjt
* @DateTime 2016-4-10
*/
public class BaseActivity extends FragmentActivity {
}
// BaseViewController.h
//
// Created by zjt on 16/2/22.
// Copyright © 2016年 zjt. All rights reserved.
/*
* 所有视图控制器的基类
*/
@interface BaseViewController : UIViewController
@end
2,方法、函数都应用文档注释,并说明参数的意义
/**
* 密码登录
*
* @param phone 手机号
* @param password 密码
* @param callBack 回调函数
*/
+(void) loginForPassword:(NSString *) phone :(NSString *) password:(HttpRequestCallBack) callBack;
/**
* 登录
*
* @param loginName 登录名
* @param password 密码
* @param callback 回调
*/
public void login(String loginName, String password, HttpCallback callBack);