add review log

This commit is contained in:
liwenjie 2018-09-30 22:39:43 +08:00
parent c4ea55ca7d
commit df16112b08
2 changed files with 99 additions and 0 deletions

1
.gitignore vendored
View File

@ -102,3 +102,4 @@ node_modules
# query results
*.info
/.vs

98
docs/Review/Review.md Normal file
View File

@ -0,0 +1,98 @@
#gStore代码Review记录
##gStore0.7.1.dev(2018-09-30)
###总结
1. 目前李荆和苏勋斌安排的任务基本完成逻辑正确可以提交到dev版本
2. 存在的主要问题
1. 代码注释较少,如
else if(type == "change_psw")
{
pthread_rwlock_wrlock(&users_map_lock);
std::map<std::string, struct User *>::iterator iter;
iter = users.find(username2);
if(iter == users.end())
{
string error = "username not exist, change password failed.";
string resJson = CreateJson(916, error, 0);
*response << "HTTP/1.1 200 OK\r\nContent-Type: application/json" << "\r\n\r\n" << resJson;
pthread_rwlock_unlock(&users_map_lock);
return false;
}
else
{
iter->second->setPassword(password2);
}
pthread_rwlock_unlock(&users_map_lock);
}
如此处就应该叫上必要的代码
2. 缺少必要的try catch异常捕获及处理代码
else if(type == "change_psw")
{
pthread_rwlock_wrlock(&users_map_lock);
std::map<std::string, struct User *>::iterator iter;
iter = users.find(username2);
if(iter == users.end())
{
string error = "username not exist, change password failed.";
string resJson = CreateJson(916, error, 0);
*response << "HTTP/1.1 200 OK\r\nContent-Type: application/json" << "\r\n\r\n" << resJson;
pthread_rwlock_unlock(&users_map_lock);
return false;
}
else
{
iter->second->setPassword(password2);
}
pthread_rwlock_unlock(&users_map_lock);
}
此处代码如果抛异常的话,那么`pthread_rwlock_unlock`是否可以执行?如果不能执行的话,是否会导致锁不能解锁?
###李荆的代码Rewiew情况
1. 错误代码维护
>基本没有问题,有如下可以改进的地方
>>1. 所有操作的`success`都应该是一个code因为用户只需要关注是否成功成功了的话至于`msg`可以由客户自己去组织,当然也可以我们提供,举个例子
json.put("errorcode",0);
json.put("errormsg","load database successful")
>>2 可以将错误代码表做成md文件放在项目文件里面方便使用者查询
2.JSON封装
>目前采用的是boost的json相关方法当然是可以但我们需要考虑的是目前gStore对boost的依赖太强个人感觉而boost又是一个重量级的库安装文件达1G以上这样的话系统耦合度太高不利于将来的拓展我推荐采用腾讯的开源[RapidJSON](http://rapidjson.org "RapidJSON官网"),可以访问[GitHub](https://github.com/Tencent/rapidjson/ "GitHub")目前号称是性能最高的c++JSON库类似于Java的JSON库[fastJSON](https://github.com/alibaba/fastjson "fastJSON github")
3.密码安全
>目前由于修改的user的password是以`map`的方式存储在内存中当ghttp重启之后password又会还原所以需要整改邹老师意见是在数据库中创建一个`system.db`数据库,用于保存系统信息和参数数据,此方案可行
###苏勋斌代码Review情况
1. ghttp不带参数启动
>设置了默认值,代码逻辑不存在问题
2.ghttp关闭
>增加了`shutdown`指令且在ghttp的servlet里面提供了stop接口供外部接口调用使用了外部接口的远程关闭ghttp功能
3.ghttp数据库状态维护
>新增或重构了`stop``shop``drop``checkpoint``checkall`等接口,基本满足需求,当需要增加相关接口描述,建议在[API.md](..\API.md)增加相关描述