github如何贡献代码

1、请先fork本项目,在你自己的仓库里创建一个副本。

2、进入到你的workspace,执行以下命令下载项目,并且你需要给你的开发工具安装lombok插件,强烈建议使用idea作为你的开发工具。

git clone git@github.com:EveryoneJavaBlog/everyone-java-blog.git

3、进入到clone好的everyone-java-blog目录里,执行以下命令,将你的副本地址加入到你的远端仓库中。

git remote add remote [你fork的地址,比如:git@github.com:your_username/everyone-java-blog.git]

4、进行你想要进行的任何代码修改。

5、提交之前,请先执行以下命令与主库的代码保持同步。在这个过程中,你可能需要处理冲突。(PS:该过程必须要经常做,时刻让本地的代码与主库代码保持一致,这样做有助于减少冲突。)

git pull origin master

6、当你处理完冲突,并在本地测试完毕以后,请执行以下命令先提交到自己fork的副本仓库。

git push remote master

7、在github上面创建一个Pull Request,将你的代码提交到主库。

8、重复4-7步即可持续贡献你的代码。

代码规范

请务必遵守规范进行编码,否则你提交的Pull Request将会被拒绝。

1、命名规范

Java类名、局域变量、类变量名、方法名:必须采用标准驼峰命名,类名首字母大写,其余首字母小写,禁止简写。示例:Connection【类名】,connection【变量名】,getConnection【方法名】

包名:由小写字母和点组成,禁止简写。示例:com.zuoxiaolong.blog.open.api.controller

常量名:大写字母与下划线组成,禁止简写。示例:CONNECTION_TIMEOUT,DEFAULT_SIZE

数据库表名,字段名:小写字母加下划线组成。最多长度30个字母,允许适当使用简写。示例:user_blog,comment_time

除java文件以外的任何文件,包括xml,jsp,properties等:由小写字母和横线组成。示例:user-profile.jsp,article-edit.jsp,application-context.xml,web-config.properties

2、Java文件规范

以下是一个Java文件示例,需要特别强调以下两点,你可以通过设置你的类模板来做到。

1、必须将Apache开源协议内容加入到文件首部。

2、必须写上@author和@since注释。

/*
 * Copyright 2002-2016 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.zuoxiaolong.blog.open.api.controller;

import lombok.Getter;
import lombok.Setter;

import java.util.Date;

/**
 * 该类代表一个bean对象.
 *
 * @author Xiaolong Zuo
 * @since 1.0.0
 */

@Getter
@Setter
public class Bean {

    private String name;

    private Date data;

}

3、JSP文件规范

以下是一个JSP文件示例,需要特别强调以下两点,你可以通过设置你的类模板来做到。

1、必须将Apache开源协议内容加入到文件首部。

2、必须写上User和Time注释。

<%--

    Copyright 2002-2016 the original author or authors.

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    
--%>
<%--
  User: Xiaolong Zuo
  Time: 16/5/8 18:22
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>大家的Java博客</title>

    <!-- Bootstrap -->
    <link href="${cacheUrl}/bootstrap/css/bootstrap.min.css" rel="stylesheet">

</head>
<body>
<h1>你好,世界!</h1>

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="${cacheUrl}/jquery/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="${cacheUrl}/bootstrap/js/bootstrap.min.js"></script>
</body>
</html>

4、注释规范

类必须有注释

方法必须有注释

如果该类是一个数据库model,则每个字段必须有注释

以下为一个简单的示例。
/*
 * Copyright 2002-2016 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.zuoxiaolong.blog.open.api.controller;

/**
 * 该类封装了关于string操作的工具方法
 *
 * @author Xiaolong Zuo
 * @since 1.0.0
 */
public interface StringUtils {

    /**
     * 判断一个字符串是否为空
     *
     * @param s 需要检查的字符串对象
     * @return 如果s为null或空字符串返回true,否则返回false.
     */
    static boolean isEmpty(String s) {
        return s == null || s.trim().length() == 0;
    }

}

提交代码需要注意的问题

下面是本人在review pull request时发现的一些问题,请贡献代码的同学务必记得,要避免以下问题出现。
  • 请严格按照以上代码规范检查自己提交的代码
  • 避免提交不该提交的代码,例如构建生成的文件。
  • 类当中切勿带有main函数,如果需要测试,放到test下使用junit进行测试
  • 一定类型的类放在一定的包下,具体的规则如下

数据库model:放在blog-model下的com.zuoxiaolong.blog.model.persistent包内

传给前端的值对象:放在blog-model下的com.zuoxiaolong.blog.model.dto包内

数据库的DAO类:放在blog-dao下的com.zuoxiaolong.blog.mapper包内

业务逻辑service:接口放在blog-service下的com.zuoxiaolong.blog.service包内,实现类放在com.zuoxiaolong.blog.service.impl包内

工具类:放在blog-common下的com.zuoxiaolong.blog.common.utils包内

web框架通用的类:放在blog-common的com.zuoxiaolong.blog.common.web包内

blog-{module}下的controller:放在blog-{module}下的com.zuoxiaolong.blog.{module}.controller包内,其中module为admin、api、cache、web其中一个

本文原创,商业转载请联系作者获得授权,非商业转载请注明出处。

评论

发送评论 编辑评论


                        

待分类分类热门文章

标签热门文章排行

☛免责声明 ☛本站使用教程
Theme Argon With Ry-Plus By 清欢
我的第16366位朋友,历经92498次回眸才与你相遇