#网校开发规范
9、逻辑分支的边界值处理,不可遗漏
10、提高提交代码时的自检粒度,做到一bug一提交、一功能一提交,提交时检查文件是否匹配;当日未能完成的任务,提交到各自的分支上;
11、上线当周要求,每位开发尽力做到每日无bug遗留;归属于产品的bug,及时确定方案
学员或者老师要下载资源(存储在oss或者七牛)时,禁止将资源下载到本地,然后将资源回传到客户端;
应调用对应的API生成下载链接,然后让客户端302到下载链接上。
String url = FileQNUtils.download(key);
// 当url链接增加 attname后,浏览器会强制下载,且文件名为参数指定的值
url += "&attname=" + StringUtil.URLEncoder(fileName);
return "redirect:" + url;
// 调用,此方法会生成私有下载链接,默认有效期1个小时,同样浏览器会强制执行下载,即使是图片也不会再浏览器中打开
String url = com.yuxin.wx.utils.FileUtil.generatePresignedUrl(key,fileName);
return "redirect:" + url;
1,日志输出应使用slf4j api,不要使用log4j,logging,logback 等api logName 可以是模块名,或者类名
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private Logger log = LoggerFactory.getLogger(logName);
2,日志级别,应根据需要,如 log.info("进入方法了");
这种日志,应该使用debug级别,生产默认级别是info,不会输出debug
3,日志输出,错误示例 log.debug("用户的ID为" + id);
这种情况java会进行字符串+的操作,产生多个对象,且在服务端info级别时,这个字符串+的操作依然会执行;
应使用 log.debug("用户的id为{}", id);
4,错误日志输出,错误示例 log.error("发生异常了", e.getMessage());
这种情况不会打印出exception详细信息,如空指针异常,此种情况只会打印出来 NullpointerException;且 输出的内容无意义;
应使用log.error("functionName发生异常 companyId={},xxxx={}", companyId,id ,e);
最后一个参数必须是 抛出来的异常对象