代码的坏味道:控制结构嵌套太深
2012-03-06 09:43
302 查看
[b]重构前的代码[/b]
[b]重构后的代码[/b]
def newPrj(self,db,userId,prjName,password,privacy,intro='',status='active'): s = '' flag = False prjId=0 try: t = db.transaction() if privacy == 'public' and len(password) < 1: return '{"result":"error","message":"公开访问并且不设置密码,任何人都可以加入您的项目"}' folderId,deep = tn.newFolder(db,prjName,userId,0,0) if folderId != 0: prjId = db.insert('Project',folderId=folderId,userId=userId,projectName=prjName, password=password,privacy=privacy,intro=intro,status=status, createTime=str(datetime.datetime.today()),revision=util.new_revision(db,userId)) db.update("Category",where="catId=$folderId",projectId=prjId,deep=-1,vars=locals()) import json from role import RoleMgr roleMgr = RoleMgr() s = roleMgr.newRole(db,"项目用户",prjId) dict = json.JSONDecoder().decode(s) if dict['result'] == 'ok': roleId = int(dict['roleId']) if roleMgr.bindPermission(db,roleId,folderId,read=1,write=0) == True: flag = True s = '{"result":"ok","prjId": "%d"}' %(int(prjId)) else: s = '{"result":"error","message":"预置项目角色权限失败"}' else: s = '{"result":"error","message":"预置项目角色失败"}' else: s = '{"result":"error","message":"存在同名文件夹"}' if flag == True: t.commit() else: t.rollback() return s except: t.rollback()
[b]重构后的代码[/b]
def newPrj(db,userId,projectName,password,privacy,intro,status='active'): try: t = db.transaction() projectName = projectName.lstrip().rstrip() if not _checkName(projectName): t.rollback() return (False,"项目名不合法") folderId,deep = tn.newFolder(db,projectName,userId,0,0) if folderId == 0: t.rollback() return (False,"创建项目根目录失败") projectId = _insert(db,projectName,folderId,userId,password,privacy,intro,status) if projectId == 0: t.rollback() return (False,"创建项目失败") if folder.setRootFolder(db,folderId,projectId) == False: t.rollback() return (False,"设置目录失败") if _preSetRole(db,userId,folderId,projectId) == False: t.rollback() return (False,"创建默认角色失败") if _preSetFolder(db,userId,folderId) == False: t.rollback() return (False,"创建项目目录失败") t.commit() return (True,projectId) except: t.rollback() raise
相关文章推荐
- 一种消除代码冗余的控制结构
- MySQL游标和控制结构代码学习
- 第22节 C语言结构体之结构体嵌套、结构体指针与结构体数组的代码实现
- 第三章 php操作符与控制结构代码
- Beginning C# Objects从概念到代码——1.11 循环和其他控制结构流程(一)
- Beginning C# Objects从概念到代码——1.11 循环和其他控制结构流程(二)
- 代码大全第二版读书笔记 第四部分-语句 十七、不常见的控制结构
- 【代码大全】第17章 不常见的控制结构
- 计算机专业考研控制结构伪代码
- [scala--代码风格指南]--控制结构
- 考研计算机基础:构造算法与自上而下逐步完善:实例研究3(嵌套控制结构)
- 代码大全学习-20-不常见的控制结构(Unusual Control Structures)
- 实践项目——循环控制结构流程图 代码解
- 代码流程控制结构和日常生活
- C语言初步-第31讲:循环控制结构及流程图(循环的嵌套流程图)
- 第三章 php操作符与控制结构代码
- 嵌套的控制结构、其他控制语句
- linux基础(十六)----linux编程基础----linux条件控制语句----多层嵌套控制结构
- linux基础(十六)----linux编程基础----linux条件控制语句----多层嵌套控制结构
- linux——Shell的控制结构(附shell编写代码和运行结果)