最近参与的项目开发被告知需要遵循代码编写守则,对自己有很大的启发,便同大家分享下~
前端
Vue组件
- 页面命名大驼峰(PageOne)
- 组件命名小驼峰(componentOne)
- 弹出框以modal开头小驼峰(modalTypeChoice)
- 使用tab缩进(两个空格)
- 类名等使用双引号
JavaScript
- 变量名小驼峰
- 方法名大驼峰
- 句末不加分号
- +, -, * 等运算符前后加空格
- for, if 等条件判断语句后带空格
for (var i = 0; i < len; i++) {
var num = 1 + 2;
}
- 比较时使用三等号
- 字符串使用单引号
- 使用tab缩进(两个空格)
- 变量使用前必须定义
- 行末不能带空格
- 使用v-for时,必须绑定index和key
- 函数名后加空格,括号后也加空格
function FunctionName () {
// input something there
}
Stylus
- 类命名使用中划线(this-is-a-class)
- 使用缩进来表示层级关系(tab=两个空格)
- 不带冒号
- 不带分号
- 不带花括号
.status
margin-top 100px
display inline-block
.status-item
text-align left
margin-top 20px
span
display inline-block
&.color
width 20px
height 15px
前端代码格式化处理:(项目根目录下)
./node_modules/.bin/eslint /文件目录/文件名 –fix
后端
一、Api接口
必须 遵照 RESTful 接口规范,规范相关文章阅读:
- 理解 RESTful 架构: http://www.ruanyifeng.com/blog/2011/09/restful.html
- RESTful API 规范(详细版):https://i6448038.github.io/2017/06/28/rest-接口规范/
- Github API 参考: https://developer.github.com/v3/
二、控制器
必须 优先使用 Restful 资源控制器.
必须 使用资源的复数形式,如:
类名:PhotosController
文件名:PhotosController.php
保持短小精炼
必须 保持控制器文件代码行数最小化,还有可读性。
- 不应该 为「方法」书写注释,这要求方法取名要足够合理,不需要过多注释;
- 应该 为一些复杂的逻辑代码块书写注释,主要介绍产品逻辑 – 为什么要这么做。;
- 不应该 在控制器中书写「私有方法」,控制器里 应该 只存放「路由动作方法」;
- 绝不 遗留「死方法」,就是没有用到的方法,控制器里的所有方法,都应该被使用到,否则应该删除;
- 绝不 在控制器里批量注释掉代码,无用的逻辑代码就必须清除掉。
三、数据模型
所有的数据模型文件,都 必须 存放在:app/Models/ 文件夹中。
命名空间
namespace App\Models;
所有的 Eloquent 数据模型 都 必须 继承统一的基类 App/Models/Model,此基类存放位置为 /app/Models/Model.php
命名规范
数据模型相关的命名规范:
- 数据模型类名 必须 为「单数」, 如:App\Models\Photo
- 类文件名 必须 为「单数」,如:app/Models/Photo.php
- 数据库表名字 必须 为「复数」,多个单词情况下使用「Snake Case」 如:photos, my_photos
- 数据库表迁移名字 必须 为「复数」,如:2014_08_08_234417_create_photos_table.php
- 数据填充文件名 必须 为「复数」,如:PhotosTableSeeder.php
- 数据库字段名 必须 为「Snake Case」,如:view_count, is_vip
- 数据库表主键 必须 为「id」
- 数据库表外键 必须 为「resource_id」,如:user_id, post_id
- 数据模型变量 必须 为「resource_id」,如:$user_id, $post_id
关于 SQL 文件
- 绝不 使用命令行或者 PHPMyAdmin 直接创建索引或表。必须 使用 数据库迁移 去创建表结构,并提交版本控制器中;
- 绝不 为了共享对数据库更改就直接导出 SQL,所有修改都 必须 使用 数据库迁移 ,并提交版本控制器中;
- 绝不 直接向数据库手动写入伪造的测试数据。必须 使用 数据填充 来插入假数据,并提交版本控制器中。
全局作用域
Laravel 的 Model 全局作用域 允许我们为给定模型的所有查询添加默认的条件约束。
所有的全局作用域都 必须 统一使用 闭包定义全局作用域,如下:
/**
* 数据模型的启动方法
*
* @return void
*/
protected static function boot()
{
parent::boot();
static::addGlobalScope('age', function(Builder $builder) {
$builder->where('age', '>', 200);
});
}
四、代码规范
必须 遵循 PRS 规范
- 规范介绍(主要看PRS-1和PRS-2):https://laravel-china.org/docs/psr
- PHP_CodeSniffer编码规范检查工具的安装和使用:https://qq52o.me/2458.html
通过命令检查及自动格式化
- phpcs /文件目录/文件名.php
- phpcbf /文件目录/文件名.php
Git 代码提交
基本要求
项目远程仓库仅有 master 和 dev 两个分支。
- master 分支是发布版本的最新代码
- dev 分支是开发版本的最新代码
团队成员代码开发步骤要求:
必须 先将最新 dev 分支拉取到本地
必须 由最新 dev 分支为母版,创建本地开发分支
功能开发完成并通过自测后,必须 将本地开发分支合并到 dev 分支上,再进行提交
本地开发分支不允许提交到远程仓库
每个开发需求/缺陷,都必须单独创建本地开发分支,杜绝一个分支开发多个需求/缺陷
代码提交 commit 书写规范:
commit 文案由三部分组成:
- emoji
- 需求/缺陷编号 (在 teambition 上查看,每个需求/缺陷都有唯一编号)
- 简单描述
例:
git commit -m “?[SCRUM-342]: an example”
常用 emoji 及其含义一栏
emoji代码 含义
? 初次提交
✨ 引入新功能
? 更新 UI 和样式文件
? 工作进行中
? 修复bug
? 代码重构
? 修改配置文件
✅ 增加测试