精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

代碼重構實例:消除冗余代碼

開發 架構
這里我們會給出一個WEB開發項目的代碼實例,采用的框架是webpy,語言是Python。后面會給大家看到重構之后的代碼樣例。

我們的Web項目提供了若干個基于HTTP協議的POST接口,用于給第三方的用戶寫入數據,為了驗證寫入數據者的身份,這樣的接口肯定會要求對方傳遞身份標識,接口得到標識以后會驗證寫入者的標識,正確就執行請求,錯誤就返回失敗信息,由于是基于同樣的檢測身份的機制,每個接口都做了同樣的事情,體現在代碼里就有大量的冗余代碼,如果要消除冗余代碼,我可以把冗余代碼寫成一個函數,在每一個接口里調用,這樣的話,也會有大量重復的調用語句,感覺還是不完美,于是思考之后還是借助OO來做這個事情,需要說明的是,我們的語言是python,web項目采用的框架是webpy。

 
重構之前的代碼
 
class Apply:
    def POST(self):
        try:
            wi = web.input()
            token = wi.token
            projectId = wi.projectId
            serverToken = getServerToken(db,token)
            if serverToken == None:
                return '{"result":"error","message":"token is error"}'
            
            if checkExpires(serverToken):
                return '{"result":"error","message":"token is expires"}'
            
            userId = serverToken.userId
            result = create.joinProject(userId,int(projectId))
            if result[0] == True:
                return '{"result":"ok","message":"ok"}'
            else:
                return '{"result":"error","message":"%s"}' %(result[1])
        except:
            if DEBUG:
                raise
            return '{"result":"error","message":""}'
    
class AddFolder:
    def POST(self):
        try:
            wi = web.input()
            token = wi.token
            serverToken = getServerToken(db,token)
            if serverToken == None:
                return '{"result":"error","message":"token is error"}'
            if checkExpires(serverToken):
                return '{"result":"error","message":"token is expires"}'
            
            userId = serverToken.userId
            folderName = wi.folderName
            pFolderId = int(wi.pFolderId) if hasattr(wi,"pFolderId") else 0
            projectId = util.unhash17(int(wi.projectId)) if hasattr(wi,"projectId") else 0
            
            folderId,deep,msg = tn.newFolder(db,folderName,userId,pFolderId,0,projectId)
            if folderId > 0:
                return '{"result":"ok","message":"%s","folderId":"%s","deep":"%s"}' %(msg,folderId,deep)
            else:
                return '{"result":"error","message":"%s","folderId":"%s","deep":"%s"}' %(msg,folderId,deep) 
        except:
            if DEBUG:
                raise
            return '{"result":"error","message":""}'    
 
我從代碼里挑了兩個API來展現代碼冗余的情況,這兩個API里做了很多一樣的事情,例如使用用戶傳過來的token(身份標識)去系統查詢(getServerToken調用)一旦不匹配告訴用戶token is error,然后繼續檢查token是否超時,最后,整個代碼是包含在try-catch塊中,一旦有意外的事情(例如BUG)發生,需要返回錯誤信息給用戶,只有每個API中間一塊的處理代碼是不一樣的,這還是兩個API,實際上整個功能模塊至少有十幾個API,而且還會繼續增加,那么這種情況下,API越多則冗余代碼越多,并且一旦需要修改就很痛苦,例如,每個catch塊原來就是return出錯誤信息,結果后來要求給模塊增加調試狀態,在打開調試的時候返回異常信息用于調試,上線時異常時則只能返回規矩的JSON字符串給用戶
 
重構以后
 
class OpenApiBase:
    def __init__(self):
        self.funPOST = self.POST
        self.POST = self.post
    
    def post(self):
        try:
            wi =  web.input()
            token = wi.token
            self.serverToken = getServerToken(db,token)
            
            web.debug(str(self.serverToken))
            
            if self.serverToken == False:
                return '{"result":"error","message":"token is error"}'
 
            if checkExpires(self.serverToken):
                return '{"result":"error","message":"token is expires"}'
 
            #執行每個子類具體的代碼
            return self.funPOST()
        except:
            if DEBUG:
                raise
            return '{"result":"error","message":""}'
 
class Apply(OpenApiBase):#繼承OpenApiBase
    def POST(self):
        wi = web.input()
        projectId = wi.projectId
        
        userId = self.serverToken.userId
        result = create.joinProject(userId,int(projectId))
        if result[0] == True:
            return '{"result":"ok","message":"ok"}'
        else:
            return '{"result":"error","message":"%s"}' %(result[1])
    
class AddFolder(OpenApiBase):#繼承OpenApiBase
    def POST(self):
        wi = web.input()
        
        userId = self.serverToken.userId
        folderName = wi.folderName
        pFolderId = int(wi.pFolderId) if hasattr(wi,"pFolderId") else 0
        projectId = util.unhash17(int(wi.projectId)) if hasattr(wi,"projectId") else 0
        
        folderId,deep,msg = tn.newFolder(db,folderName,userId,pFolderId,0,projectId)
        if folderId > 0:
            return '{"result":"ok","message":"%s","folderId":"%s","deep":"%s"}' %(msg,folderId,deep)
        else:
            return '{"result":"error","message":"%s","folderId":"%s","deep":"%s"}' %(msg,folderId,deep) 
 
重構以后,每個子類的POST函數只做自己應該處理的事情,對于身份的檢測全部交給父類完成,一旦沒通過身份檢測,子類POST里的代碼根本就不會被執行
責任編輯:彭凡 來源: 博客園
相關推薦

2013-09-05 09:50:11

C++代碼優化

2020-11-10 08:54:55

Lombok

2024-06-18 18:36:03

2018-08-24 21:25:02

編程語言代碼重構GitHub

2011-09-05 10:30:51

重構代碼庫業務模型

2021-08-03 08:13:48

重構API代碼

2022-12-26 00:02:24

重構代碼軟件

2019-04-03 08:10:17

代碼架構信息

2010-04-13 08:49:08

JavaLombokJavabean

2024-09-05 10:17:34

2022-08-02 08:07:24

單元測試代碼重構

2022-07-04 07:37:51

模板模式重構

2013-10-21 17:54:00

代碼重構修改

2022-08-01 23:45:23

代碼識別項目

2024-02-22 10:27:00

Python開發

2024-08-06 12:35:42

C#代碼重構

2009-09-23 10:28:49

使用Hibernate

2025-09-10 08:23:11

代碼重構技巧

2015-08-11 09:39:25

重構提高代碼質量

2019-02-18 16:21:47

華為代碼重構
點贊
收藏

51CTO技術棧公眾號

国产探花在线播放| 日韩美女爱爱视频| 91精品国产乱码久久久| 亚洲成av人电影| 欧美www视频| 欧美丰满熟妇bbbbbb百度| av在线女优影院| 国产精品系列在线播放| 欧美在线视频观看| 三级影片在线看| 九九久久成人| 日韩你懂的在线播放| 日韩欧美在线播放视频| av超碰免费在线| 久久先锋影音av| 99蜜桃在线观看免费视频网站| 在线观看免费av片| 中文字幕一区二区三区久久网站| 亚洲男人av在线| 亚洲综合123| 亚洲天堂资源| 亚洲午夜激情网站| 一本一道久久a久久综合精品 | 国产精品av一区| 在线观看一二三区| 中文日韩在线| 欧美激情一区二区三级高清视频| 亚洲aaa视频| 亚洲网站三级| 成人搞黄视频| 欧美日韩精品一区二区三区四区| 人妻av无码专区| 思思99re6国产在线播放| av午夜一区麻豆| 114国产精品久久免费观看| 日韩精品成人免费观看视频| 精品成人在线| 久久久久久久久久久91| 日本精品在线免费观看| 不卡在线一区二区| 国产午夜精品视频| 强伦人妻一区二区三区| 老牛精品亚洲成av人片| 久久久久久久久久久久久久久99 | 国产成+人+综合+亚洲欧美| 激情成人中文字幕| 免费在线观看视频a| 欧美1—12sexvideos| 亚洲免费成人av| 中文字幕欧美人与畜| 免费黄网在线观看| 亚洲欧美一区二区在线观看| 杨幂一区欧美专区| 天天综合视频在线观看| 国产精品人妖ts系列视频| 天天人人精品| 欧美另类极品| 亚洲女与黑人做爰| 日本一级黄视频| 久久电影网站| 精品久久久久久亚洲精品| 日韩精品视频一区二区在线观看| 樱桃视频成人在线观看| 动漫精品一区二区| 四虎永久在线精品无码视频| av免费在线一区| 欧美影视一区在线| 8x8x成人免费视频| 日韩欧美高清一区二区三区| 亚洲成人999| a级大片在线观看| 欧美亚洲精品在线| 久久婷婷国产麻豆91天堂| 青青青在线视频| 亚洲日本久久| 国产精品视频一区国模私拍| 国产精品自拍电影| 成人精品视频一区二区三区| 欧美18视频| 91porn在线观看| 亚洲综合视频网| 国产乱子夫妻xx黑人xyx真爽| 日产精品一区| 欧美一个色资源| 日批在线观看视频| 日韩综合一区| 国外成人在线视频| 中文在线字幕av| 高清成人在线观看| 日韩精品第一页| 婷婷色在线资源| 色综合天天综合网天天狠天天| 男女污污的视频| 日韩有吗在线观看| 亚洲天堂av网| www.av视频| 日本成人超碰在线观看| 国产精品xxxx| 在线观看麻豆| 亚洲成av人综合在线观看| 精品久久久噜噜噜噜久久图片| 国产精品2区| 亚洲成人资源网| 黄色三级视频在线| 成人av综合网| 久久精品久久久久久| 久久久免费高清视频| 国产精品影视在线观看| 日韩精品久久久| 爱看av在线| 欧美高清dvd| 中文字幕人妻一区二区三区在线视频| 亚洲综合激情在线| 国产精品久久一| 香蕉视频网站在线| 亚洲免费观看高清完整版在线观看熊 | 任你躁av一区二区三区| 欧美国产一区二区三区激情无套| 555www成人网| 99热这里只有精品9| 国产精品污www在线观看| 国产肥臀一区二区福利视频| 韩国三级成人在线| 日韩一中文字幕| 手机在线看片1024| 91免费视频网址| 少妇一晚三次一区二区三区| 国产精品日韩精品在线播放| 中国日韩欧美久久久久久久久| av中文在线播放| 成人性生交大片免费看视频在线 | 国产午夜福利一区| 久久久久.com| 欧美高清视频一区二区三区在线观看 | 亚洲国产精品成人综合色在线婷婷 | 欧美一区二区三区四区五区| 少妇高潮惨叫久久久久| 日韩 欧美一区二区三区| 日本在线视频不卡| 99久久久国产精品免费调教网站| 亚洲欧美国产视频| yjizz国产| 久久综合九色综合97婷婷| av高清在线免费观看| 嗯用力啊快一点好舒服小柔久久| 7878成人国产在线观看| 自拍偷拍你懂的| 日本成人中文字幕| 最新欧美日韩亚洲| 精品一区二区三区四区五区| 草民午夜欧美限制a级福利片| 国产精品视频久久久久久| 中文字幕久久午夜不卡| 自拍偷拍21p| 午夜精品毛片| 99视频国产精品免费观看| 丁香花视频在线观看| 精品日韩欧美一区二区| 日韩乱码一区二区| 久久久一区二区三区| 91香蕉视频污版| 欧美aaaaaaaaaaaa| 亚洲永久免费观看| 182在线视频观看| 日韩欧美在线观看视频| 美女洗澡无遮挡| 久久99精品国产.久久久久 | 久久久久久久久免费视频| 宅男噜噜噜66一区二区66| 看片网站在线观看| eeuss国产一区二区三区| 免费裸体美女网站| 国产精品久久久久久久| 国产成人亚洲欧美| 成人av免费电影网站| 综合国产在线视频| www黄色网址| 日韩欧美在线观看| 日本午夜在线观看| 成人黄色av| 国产日韩在线视频| 亚洲91av| 亚洲精品在线视频| 亚洲综合网av| 一区二区三区不卡视频| av网站免费在线播放| 青青草国产成人av片免费| 中文字幕中文字幕在线中一区高清| 中文字幕久久精品一区二区| 欧美亚洲国产视频| 毛片在线播放a| 日韩精品视频在线观看免费| 亚洲无码精品国产| 午夜精品久久久久久久蜜桃app| 久久久久久亚洲中文字幕无码| 精品一区二区免费视频| 大j8黑人w巨大888a片| 欧美第十八页| 激情小说网站亚洲综合网 | 日韩av久操| 国产精品综合久久久久久| 成人一区视频| 欧美亚洲视频在线观看| 91精品国产91久久久久久青草| 亚洲精品乱码久久久久久金桔影视| 糖心vlog精品一区二区| 香蕉影视欧美成人| 黄色a级片在线观看| 国产欧美日韩视频在线观看| 一区二区三区四区影院| 蜜臀91精品一区二区三区| 黄色一级片在线看| 亚洲免费二区| 神马影院午夜我不卡| 精品国产一区二区三区不卡蜜臂 | 久久精品人人爽人人爽| 折磨小男生性器羞耻的故事| 精品一区二区三区不卡 | 亚洲一区二区精品| 高清乱码毛片入口| 91麻豆精品国产91久久久使用方法 | 中文视频一区| 在线观看亚洲视频啊啊啊啊| 国产亚洲一卡2卡3卡4卡新区| 国产亚洲自拍偷拍| 日本一区影院| 亚洲综合日韩中文字幕v在线| 久久国产三级| 国产福利精品在线| 亚洲伦乱视频| 国产不卡av在线免费观看| 麻豆国产在线| 51色欧美片视频在线观看| 2018av在线| 国内自拍欧美激情| 1区2区3区在线| 91高清在线免费观看| 1234区中文字幕在线观看| 欧美极品少妇xxxxⅹ喷水 | 2019中文字幕在线| 色综合桃花网| 5278欧美一区二区三区| 欧美aa一级| 日本一区二区三区在线播放| 最近高清中文在线字幕在线观看1| 97av在线影院| 午夜影院一区| 国产精品99久久久久久人| 欧美日韩视频免费观看| 国产精品久久久久久影视| 日本国产欧美| 成人av免费在线观看| 亚洲热在线视频| 韩国欧美一区二区| japan高清日本乱xxxxx| 成人午夜又粗又硬又大| 在线xxxxx| 99re在线视频这里只有精品| 成人手机在线免费视频| 久久奇米777| 免费一级特黄3大片视频| 国产精品乱人伦| 日本福利片在线观看| 亚洲成a人v欧美综合天堂下载| 亚洲日本韩国在线| 色综合久久88色综合天天免费| 亚洲精品国产欧美在线观看| 欧美日韩精品高清| 成人1区2区3区| 亚洲精品乱码久久久久久金桔影视 | 欧美成人福利| 操一操视频一区| 亚洲盗摄视频| 午夜啪啪免费视频| 亚洲国产精品一区制服丝袜| 国产激情在线观看视频| 国产乱妇无码大片在线观看| 欧产日产国产精品98| 日本一区二区三级电影在线观看 | 一区二区三区在线| 午夜精品久久久久久久无码| 美女视频免费一区| 风韵丰满熟妇啪啪区老熟熟女| 91视频一区二区三区| 国精产品一区一区| 亚洲福利国产精品| 亚洲精品国产精品乱码视色| 日韩一区二区三| 邻居大乳一区二区三区| 久久精品在线视频| 亚洲同志男男gay1069网站| 91美女福利视频高清| 西瓜成人精品人成网站| 26uuu另类亚洲欧美日本老年| 精品日韩视频| 粉嫩av四季av绯色av第一区| 国产毛片一区二区三区 | 蜜乳av另类精品一区二区| 中文字幕第一页在线视频| 91麻豆免费在线观看| 最新一区二区三区| 色吊一区二区三区| 色一情一乱一区二区三区| 日韩在线www| 玛雅亚洲电影| 国产精品免费一区二区三区| 99re6这里只有精品| 国产xxxxx在线观看| 国产福利一区二区三区视频| 国精产品视频一二二区| 都市激情亚洲色图| 欧美视频在线观看一区二区三区| 日韩中文在线观看| 韩国成人动漫| 国产一区再线| 好看的亚洲午夜视频在线| 国产精品区在线| 国产日韩欧美a| 国产91精品一区| 亚洲成人aaa| 久久av色综合| 91免费国产视频| 四季av一区二区凹凸精品| 免费看污黄网站| www国产成人免费观看视频 深夜成人网| 黄色在线观看免费| 6080日韩午夜伦伦午夜伦| 91网页在线观看| 国产精品成人观看视频国产奇米| 国产精品字幕| 免费看污久久久| 香蕉视频成人在线观看| 波多野结衣先锋影音| 午夜电影一区二区| 人妻精品一区一区三区蜜桃91| 色综合久久悠悠| 国内精品视频| 99中文字幕在线观看| 黑人巨大精品欧美一区| 日本少妇aaa| 91精品中文字幕一区二区三区 | 九九热99久久久国产盗摄| 白嫩亚洲一区二区三区| 久久国产精品免费观看| 国产精品亚洲成人| 精品无码黑人又粗又大又长| 精品日韩99亚洲| 成人影院在线视频| 美女三级99| 日韩精品一二区| 国产三级在线观看完整版| 欧美日韩综合一区| 米奇777四色精品人人爽| 91久久精品国产91性色| 欧美黄色大片网站| 又色又爽又黄18网站| 午夜日韩在线电影| 精品福利视频导航大全| 国产精品视频久| 91精品天堂福利在线观看| 日本r级电影在线观看| 亚洲一区av在线| 外国精品视频在线观看 | 国产黄色三级网站| 色嗨嗨av一区二区三区| 自拍视频在线| 91传媒在线免费观看| 国产欧美一级| 免费一级黄色录像| 91精品国产综合久久久久久| 久久不射影院| 视频在线精品一区| 国产精品夜夜嗨| 91av在线免费视频| 色哟哟亚洲精品一区二区| 国产视频网站一区二区三区| a级黄色一级片| 极品少妇一区二区三区精品视频| 一区二区三区四区五区| 亚洲成色999久久网站| 精品亚洲美女网站| 成人国产在线看| 久久综合色之久久综合| 97精品人妻一区二区三区| 久久久久久国产免费| 欧州一区二区| 完美搭档在线观看| 欧美日韩国产一区| heyzo高清中文字幕在线| 亚洲精品久久区二区三区蜜桃臀 | 99热在线国产| 日本亚洲最大的色成网站www| 免看一级a毛片一片成人不卡| 亚洲日韩第一页| 91蜜桃臀久久一区二区| 15—17女人毛片| 欧美日韩人人澡狠狠躁视频| 免费网站黄在线观看| 欧美少妇一区| 成人性色生活片|