想要正常运行此项目请关闭social节点 # cocoscreator 2.0 合作开发规范 ## 命名规范 ### 1. 项目名称 采用全部小写+下划线方式 >eg : su_story_origin ### 2. 编辑器内节点、文件夹名、文件名命名规范 采用首字母大写驼峰命名 >eg:PreStartPage、GameController、Scripts、CardPrefab ### 3. 脚本中 1. 函数命名:采用首字母小写驼峰命名,必须能完整描述作用,用**动词**开头 >eg : onGameOver、getGameData、updatePlayerPosition 2. 变量命名:采用首字母小写驼峰命名,必须能完整描述作用,用**修饰词**开头 3. 常量命名:采用全大写的命名,且单词以_(下划线)分割 >eg : MONSTER_MAX_NUM=10 4. (私有)专有属性:采用首字母小写驼峰命名,必须在名称前加_(下划线) >eg : ``` javascript init(controller){ this._controller=controller } ``` ## 常用git操作 项目使用git托管代码 特别注意:开始编码前和上传代码前务必先`git pull`从远程代码库拉取最新代码。 git常用命令 `git add .`将修改增加的代码提交暂存处 `git commit -m 'commit message'`提交暂存处代码到本地版本库 `git commit -am 'commit message'`将上面两个操作合并为一个(只限文本修改) `git push`提交本地代码到远程分支 `git branch`查看当前git分支 `git checkout branchName`切换当前分支到branchName分支 `git pull`拉取远程分支内容更新本地分支 ## 脚本规范 ### 1. 入口文件尽量不要包括具体的逻辑 - 入口文件指 `controller` 和 `游戏系统控制器` 文件,它们是整个游戏的入口或者单个整块的游戏系统的入口。 - `controller` 尽量**不要**包含具体的逻辑,它们的主要职责是描述游戏大体的框架,以及指派具体工作给其他组件。 - 若加入新的组件,先思考是某个组件的子组件还是全局组件,不要把子组件放在 `controller` 中。 - 全局组件请`require`在`controller`中,其他组件若想使用全局组件时,获取`controller`即可使用全局组件。 ### 2. 代码简洁 - 单个脚本文件代码量(包括注释),不许超过250行。 ### 2. 开放接口,封闭实现 - 面向对象编程的一个原则称为**开放-封闭原则**,简称**OCP**(Open-Closed Principle)。 - 意即对扩展开放,对修改关闭。 - 别的同学在使用你写的组件时,应该只要知道你的组件有哪些接口、如何调用就好,而无须关心你具体代码是怎么写的。 - 你写的每一个 class ,都应该时刻**为他人着想**,考虑他人如何调用你的组件最方便。宁可自己多写点代码,也不要把麻烦留给他人。 - 即使是只给自己用的 class,也应该尽力遵守这个**OCP**原则,这是程序员的基本功。 ### 3. 使用 JSDoc 规范添加注释 - [JSDoc 官方手册(英文)](http://usejsdoc.org/) - [JSDoc 中文参考手册](https://yuri4ever.github.io/jsdoc/) - 以 `/**` 开头(有两个星号),另起一行,然后每行以 ` * `(一个空格、一个星号、再一个空格)开头,最后一行以 ` */` (空格、星号、斜杠)结束 - 在每个 ts **文件开头**,**必须**添加文件注释。 - 必须项:`@file`(文件描述)`@author`(作者名字或昵称)`@date`(文件创建日期) - 可选项:`@description`(更详细的文件描述),此外还可以自由添加更多注释项(参考 JSDoc 手册)。 ```javascript /** * 主控制器 * @file 整个游戏的入口脚本 * @author uu * @date 2018/12/15 */ ``` - 在每个 function 和每个带有 `public` 或 `export` 光环的变量、方法、接口、函数等,开头**都必须**添加注释。 - 注释第一行写上描述。 - 必须项(若有参数): `@param {type} name - description`,参数类型和说明,每个参数一行。 - 必须项(若有返回值): `@returns {type} description`。 - 若是在别人创建的文件里添加 function,建议针对你的 function 单独加上 `@author` 留下你的大名(以及时间 `@date`)。 - 鼓励自由发挥添加更多注释,但请尽量地遵守 JSDoc 规范。 - 示例: ```javascript /** * 读取存档 * @param {string} id - 存档号 * @returns {string} 获得的存档 * @author uu * @date 2018/12/15 */ getLoadById(id){ //XXXXXXXX return {} }; ``` - class 可以不用添加注释,因为我们规定,每个文件应该只包含一个 class。请在文件开头使用 `@file` 和 `@description (可选)` 注释 class 的用途。 ## 视图层级(单场景) 1. canvas层 - 用于存放各个页面,并在canvas层上挂在page脚本控制各个页面的开关。 2. camera层 3. 脚本层 - 纯粹用于挂在脚本 4. UI层 - UI层应该与游戏场景层分开,并且有专门的脚本控制 ## 资源规范 ## 文件夹目录