重构前的代码

    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 jsonfrom 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()

重构后的代码

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

转载于:https://www.cnblogs.com/code-style/archive/2012/03/06/2381342.html

代码的坏味道:控制结构嵌套太深相关推荐

  1. 【重构之法】代码的坏味道

    代码的坏味道 坏味道意指代码中出现的可以被改进的地方.当你嗅到坏味道的时候,也就意味着重构的时机到了. 重构就是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修 ...

  2. 【重构】 代码的坏味道总结 Bad Smell (一) (重复代码 | 过长函数 | 过大的类 | 过长参数列 | 发散式变化 | 霰弹式修改)

    膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 . 代码的坏味道就意味着需要重构, 对代码的坏味道了然于心是重构的比要前提; . 作者 : 万境绝尘 转载请注明出 ...

  3. 重构-改善既有的代码设计-------代码的坏味道

    重构-改善既有的代码设计 代码的坏味道 神秘命名(Mysterious Name) 给函数.变量.模块和类命名时,要使它能清晰地表明自己的功能和用法,使得写下的代码直观明了. 常用重构手法为重命名,包 ...

  4. Refactoring之——代码的坏味道(一)过长方法

    1 代码的坏味道 重构一书中提到了22种代码的坏味道,大致可以分为几类. 识别代码的坏味道,有助于发现代码的潜在问题,从而可以有的放矢的修改现有代码,使之不断完善. 1.1 Bloaters(臭鲱,暂 ...

  5. 代码的坏味道与重构技术

    一.前言 本文大部分内容.图片来自Martin Flower的<Refactoring>一书以及refactoringguru网站(一个很棒的网站),之前在博客发表过,这次属于整理后重新发 ...

  6. Bad Smell (代码的坏味道)

    Bad Smell (代码的坏味道) 如果一段代码是不稳定或者有一些潜在问题的,那么代码往往会包含一些明显的痕迹. 正如食物要腐坏之前,经常会发出一些异味一样, 我们管这些痕迹叫做 "代码异 ...

  7. Word 域嵌套太深弹窗,更新域卡顿,解决办法

    1.问题描述 用Word编辑几百页或者上千页的文档时,因为资料来源和拷贝的关系,总会遇到各种有问题的文档块,一般更新目录页码或者题注序号时,最快的操作就是CTRL+A,然后F9,但是偶尔会遇到这样的文 ...

  8. 读书笔记之《重构》第三章—代码的坏味道

    第三章 代码的坏味道 这一章告诉我们,什么样的代码需要去重构,该用什么方法.寻找代码的坏味道,就是从代码中找出特定的结构,这些结构指出重构的可能性.寻找这些结构,需要学会判断,判断一个类里面有多少实例 ...

  9. 重构笔记——代码的坏味道(上)

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42041757 在重构入门篇中,简单地介绍了重构的定义.为何 ...

最新文章

  1. Dickey-Fuller检验+迪基-福勒检验
  2. idea教程--使用mave创建普通java项目
  3. 空调自控系统基础知识及应用
  4. pip install 时报错 ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问(已解决)
  5. 找到replication相关的作业和sql 语句
  6. 趣学Python之弹球游戏第三阶段--上下反弹
  7. SpringBoot学习之logback.xml 配置指定包或类输出至单独的日志文件中
  8. 小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验...
  9. ZCuPb10Sn10铸造锡青铜板ZCuPb10Sn10力学性能
  10. 制作app怎么连接服务器,App制作步骤、流程有哪些?
  11. 大一大学计算机期末考试题库,大学计算机基础 大一 考试必备题库
  12. MTK平台sip信令的查看和volte的故障
  13. win7显示u盘efi分区_win7下找不到u盘efi分区
  14. 补充STM32 PWM占空比,频率的计算及输入捕获细节到STM32库函数的掌握方法
  15. less css基础教程
  16. 计算机研究生期末汇报,研究生学期总结ppt.doc
  17. 流量贵?裂变营销或是低成本营销的最佳选择!
  18. clustMD r语言_R语言做聚类分析Kmeans时确定类的个数
  19. Wear OS手表应用开发教程之-滑动隐藏布局-SwipeDismissFrameLayout
  20. Python非线性回归

热门文章

  1. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器
  2. Redis的订阅发布功能对比RabbitMQ消息队列
  3. docker安装以及部署springboot项目
  4. Java基础提升高级API
  5. Struts2之前台表单传值到后台Action方法总结
  6. Spring源码学习路线
  7. 没有代码天赋的我,先退出了
  8. 《C++ primer》--第11章
  9. [PHP]基本排序(冒泡排序、快速排序、选择排序、插入排序、二分法排序)
  10. MICROSOFT REPORT VIEWER 2012之无法加载相关的dll