1.对于关键函数、变量的注释
2.对于指针(包括智能指针)的判空
3.对于编程格式的统一、风格的一致
4.对于数据库的操作 尽量在一个接口或者少量的接口中完成,避免因为数据库字段的改变而去大量的修改接口,加大了工作量
BOOL CICDBOperate::UpdateRoleInfoToDB(CSysRoleInfo *roleInfo)
{
BOOL bRes = FALSE;
do
{
if (NULL == roleInfo)
break;
auto pDbUtility = CreateDBCounect();
if (!pDbUtility)
break;
CString sSql(_T(""));
switch (roleInfo->GetState())
{
case OBJECT_ADD: // 添加
sSql.Format(_T("insert into SYS_ROLE(ROLE_ID,ROLE_NAME,DESCRIPTION) values('%s','%s','%s')"),
roleInfo->GetRoleID(), roleInfo->GetRoleName(), roleInfo->GetRemark());
pDbUtility->ExecuteQuery(sSql);
break;
case OBJECT_DEL: // 删除
sSql.Format(_T("delete from SYS_ROLE_PERMISSION where ROLE_ID = '%s'"), roleInfo->GetRoleID()); // 删除权限角色关系
pDbUtility->ExecuteQuery(sSql);
sSql.Format(_T("delete from SYS_USER_ROLE where ROLE_ID = '%s'"), roleInfo->GetRoleID()); // 删除用户角色关系
pDbUtility->ExecuteQuery(sSql);
sSql.Format(_T("delete from SYS_ROLE where ROLE_ID = '%s'"), roleInfo->GetRoleID()); // 删除角色
pDbUtility->ExecuteQuery(sSql);
break;
case OBJECT_UPDATE: // 更新
sSql.Format(_T("update SYS_ROLE set ROLE_ID='%s', ROLE_NAME='%s', DESCRIPTION='%s' where ROLE_ID='%s'"),
roleInfo->GetRoleID(), roleInfo->GetRoleName(), roleInfo->GetRemark(), roleInfo->GetRoleID());
pDbUtility->ExecuteQuery(sSql);
break;
}
bRes = TRUE;
} while (FALSE);
return bRes;
}
5.尽量不传值,传递指针或是引用,防止因为浅拷贝导致的野指针问题。
即:当值传递的为结构体、类等结构时,若其中包含指针,则只能完成浅拷贝,即指针也是拷贝值,而当此次值传递的作用域结束,指针销毁,此时指针为野指针,若外部再次用到此指针,则会发生中断错误
6.数据库操作可以不需要返回表,而传递数据结构并将数据结构返回即可
7.对于数据库的操作尽量不要让数据多次频繁的连断、连断