精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美高清视频| 国产亚洲久一区二区| 激情小说亚洲色图| 日韩欧美中文免费| 亚洲在线观看一区| 日本黄色一区二区三区| 奇米影视一区二区三区| 精品少妇v888av| 一区二区三区久久久久| 欧美成人一级| 欧美午夜片在线免费观看| 曰韩不卡视频| 欧美成熟毛茸茸| 国产一区二区精品久久99| 91国在线精品国内播放| 美女三级黄色片| 亚洲精品国产动漫| 日韩精品一区二区三区老鸭窝| 亚洲欧美另类动漫| 日本在线影院| 亚洲国产裸拍裸体视频在线观看乱了 | 日韩av一二三| 97国产在线视频| 欧美一区免费观看| 国语产色综合| 日韩高清a**址| 黑人无套内谢中国美女| 国产成人免费精品| 偷窥国产亚洲免费视频 | 亚洲美女视频在线免费观看| 久久午夜a级毛片| 成年人在线免费看片| 日韩大片在线免费观看| 亚洲国产91色在线| 极品人妻一区二区| 亚洲综合资源| 欧美色窝79yyyycom| 欧美精品色婷婷五月综合| 国精一区二区三区| 亚洲精品美腿丝袜| 日本久久高清视频| 欧美午夜电影一区二区三区| 国产精品日日摸夜夜摸av| 你懂的视频在线一区二区| 黄色aaa毛片| 国产91在线观看| av免费观看久久| 国产极品久久久| 国内精品国产三级国产a久久| 国产精品永久免费观看| 伊人久久亚洲综合| 蜜臀国产一区二区三区在线播放| 国产精品1234| 亚洲图片欧美在线| 久久精品国产一区二区三| 国产精品海角社区在线观看| 国产91精品看黄网站在线观看| 香蕉久久国产| 国产精品久久久久久久电影| 最新黄色网址在线观看| 麻豆久久一区二区| 国产欧洲精品视频| 国产精品爽爽久久久久久| 激情另类小说区图片区视频区| 国产综合福利在线| 国产夫绿帽单男3p精品视频| 国产盗摄一区二区三区| 国产精品一区二区免费看| 精品人妻一区二区三区含羞草| 国产乱码精品一区二区三区五月婷| 亚洲影院色无极综合| www日本在线| av电影在线观看不卡| 免费一区二区三区在在线视频| 国产在线观看精品一区| 国产精品久久免费看| 国产免费色视频| 日本三级韩国三级欧美三级| 天天操天天色综合| www.欧美日本| 欧美久久亚洲| 精品香蕉一区二区三区| 刘亦菲国产毛片bd| 一区视频在线| 国产精品日韩专区| www三级免费| 久久这里只精品最新地址| 一区二区日本伦理| 欧美午夜大胆人体| 色哟哟欧美精品| 污污的视频免费观看| jazzjazz国产精品久久| 亚洲欧洲一区二区三区久久| 久久中文免费视频| 在线综合亚洲| 国产男人精品视频| 色婷婷综合视频| 欧美高清在线精品一区| 欧美中日韩在线| 97精品国产综合久久久动漫日韩| 日韩午夜在线观看视频| 国内精品卡一卡二卡三| 亚洲无吗在线| 国产日韩欧美综合| 免费在线黄色网址| 一区二区日韩av| 三级a三级三级三级a十八发禁止| 国产成人高清精品免费5388| 色伦专区97中文字幕| 国产成人无码精品| 国产麻豆午夜三级精品| 日本免费高清一区二区| 成人影音在线| 91精品蜜臀在线一区尤物| 久久国产精品影院| 最新国产乱人伦偷精品免费网站| 国产精品视频地址| 欧美套图亚洲一区| 亚洲国产你懂的| 亚洲黄色片免费看| 精品国产精品国产偷麻豆| 97色在线视频| 午夜免费福利视频| 中文字幕一区二区三区精华液| 2022亚洲天堂| 国产成人一二| 欧美日韩aaaa| 99久久99久久久精品棕色圆| 国产精品久久一级| 亚洲欧美激情网| 久草成人资源| 欧美在线xxx| 天天舔天天干天天操| 亚洲午夜日本在线观看| 99精品视频免费版的特色功能| 成人无号精品一区二区三区| 国产精品aaa| 国产区视频在线播放| 色综合久久88色综合天天6| 大乳护士喂奶hd| 亚洲国产99| 国精产品一区二区| av中文资源在线资源免费观看| 日韩一区二区三免费高清| 成人免费精品动漫网站| 国内精品视频一区二区三区八戒| 一区二区三区四区五区视频| 国产日本久久| 久久精品亚洲94久久精品| 91禁在线观看| 亚洲欧洲av另类| 在线成人免费av| 亚洲无线视频| 国产精品国产亚洲精品看不卡15 | 黄片毛片在线看| 亚洲成a天堂v人片| 成人区人妻精品一区二| 亚洲另类视频| 欧美在线激情| 成人国产网站| 日韩日本欧美亚洲| www.97av| 精品日本高清在线播放| 免费中文字幕av| 日韩成人伦理电影在线观看| 一区二区不卡在线观看| 欧美午夜在线播放| 久久久久久国产精品| 青青青草原在线| 91官网在线观看| 日本美女黄色一级片| 国产精品一区专区| 精品少妇在线视频| 一本色道久久综合亚洲精品酒店 | 亚洲视频国产精品| 97超碰色婷婷| av在线免费一区| 日韩美女一区二区三区| 日韩视频在线观看一区| 国产精品视频第一区| 亚洲国产日韩在线一区| 亚洲女同同性videoxma| 亚洲欧美日韩精品在线| 成人资源在线播放| 人体精品一二三区| 麻豆视频在线免费观看| 亚洲成人xxx| 在线观看国产精品视频| 亚洲国产一区视频| 欧美丰满老妇熟乱xxxxyyy| 国产一区二区在线影院| 欧美日韩一道本| 久久婷婷蜜乳一本欲蜜臀| 国产精品久久久久久久免费大片| 浪潮色综合久久天堂 | 国产 日韩 欧美 成人| 国产亚洲欧美中文| 性一交一黄一片| 日韩成人午夜精品| 缅甸午夜性猛交xxxx| 97视频精品| 精品无码久久久久久久动漫| 日日夜夜亚洲精品| 日韩美女在线观看| 精精国产xxxx视频在线中文版| 亚洲一区av在线播放| 亚洲xxx在线| 欧美蜜桃一区二区三区| 久久夜色精品国产噜噜亚洲av| 一区视频在线播放| 一卡二卡三卡四卡| 成人avav在线| 91蝌蚪视频在线| 日韩电影在线免费看| 亚洲人成无码网站久久99热国产| 亚洲精品午夜av福利久久蜜桃| 欧美亚洲免费在线| 97久久亚洲| 成人激情免费在线| 色猫猫成人app| 欧美性受xxxx黑人猛交| 俄罗斯一级**毛片在线播放| 久久精品2019中文字幕| 国产女主播在线写真| 日韩精品视频在线| 欧美 日韩 国产 成人 在线| 538在线一区二区精品国产| 国产情侣呻吟对白高潮| 都市激情亚洲色图| 国产一级大片在线观看| 亚洲女女做受ⅹxx高潮| 超碰人人人人人人人| 久久亚洲精品小早川怜子| 一级欧美一级日韩片| 懂色中文一区二区在线播放| 91日韩精品视频| 精品中文字幕一区二区小辣椒| 国产成人无码av在线播放dvd| 亚洲女人av| 国产淫片av片久久久久久| 国产欧美精品| www.com毛片| 国产视频一区三区| 精品99在线视频| 亚洲欧美久久| 鲁一鲁一鲁一鲁一澡| 亚洲免费网站| 欧美黄色一级片视频| 日韩激情中文字幕| 99视频在线视频| 奇米色一区二区| av免费一区二区| 国产一区二三区| 久久久久久久久久久久国产精品| 国产91精品久久久久久久网曝门| 精品伦一区二区三区| 成人白浆超碰人人人人| 久久久午夜精品福利内容| 91香蕉视频在线| 免费在线观看你懂的| 国产日韩精品一区二区三区| 自拍偷拍第9页| 亚洲精品免费在线| 日本在线视频中文字幕| 欧美午夜久久久| 中文字幕在线日本| 欧美美女一区二区三区| 亚洲av永久无码国产精品久久| 亚洲成人黄色在线| 黄色免费在线播放| 久久韩国免费视频| a'aaa级片在线观看| 日韩免费av一区二区| 成人午夜在线| 成人精品水蜜桃| 亚洲动漫在线观看| 正在播放精油久久| 在线精品福利| 亚欧在线免费观看| 国产精品一区一区三区| 中出视频在线观看| 国产精品欧美久久久久一区二区| 青娱乐免费在线视频| 狠狠色噜噜狠狠狠狠97| 一级片视频免费| 亚洲成年网站在线观看| 懂色一区二区三区| 久久久亚洲国产| 2019年精品视频自拍| av噜噜色噜噜久久| 激情五月综合| 日韩精品在线观看av| 日本不卡视频在线观看| 精品人妻在线视频| 中文字幕一区二区在线播放| 国产大片aaa| 7777精品伊人久久久大香线蕉| 亚洲欧洲精品视频| 欧美成人高清视频| 欧美大片1688网站| 精品国产一区二区三区免费| 国产精品久久占久久| 欧美s码亚洲码精品m码| 国产乱对白刺激视频不卡| 五月婷六月丁香| 亚洲国产精品人人做人人爽| 一级片一区二区三区| 亚洲欧美在线一区| 伦理av在线| 91av免费看| 日韩1区2区| 日韩欧美精品在线观看视频| 国产99久久久国产精品| 婷婷激情四射网| 欧美午夜精品理论片a级按摩| 日本免费一区视频| 九九热精品视频在线播放| 国产毛片精品久久| 蜜桃视频在线观看成人| 亚洲无线一线二线三线区别av| 91小视频在线播放| 欧美国产精品中文字幕| 黄色在线免费观看| 亚洲成人久久久| 美女网站视频在线| 91九色露脸| 欧美成人69| 中文字幕亚洲影院| 国产精品麻豆欧美日韩ww| 黄色污污网站在线观看| 亚洲女成人图区| 日韩伦理在线一区| 韩国一区二区三区美女美女秀| 亚洲天堂成人| 成年女人免费视频| 亚洲午夜激情网站| 亚洲免费一级片| 欧美极品少妇xxxxⅹ喷水| 日韩精品三级| 久久av高潮av| 国产.精品.日韩.另类.中文.在线.播放| 51精品免费网站| 欧美一区三区二区| 日韩激情美女| 成人18视频| 激情亚洲网站| 国产精品麻豆入口| 精品国产91久久久| 青青草免费观看免费视频在线| 日本不卡高字幕在线2019| 久9久9色综合| www.com黄色片| 国产精品不卡一区二区三区| 91精品国产乱码久久久久| www.欧美精品| 亚洲网址在线观看| 人妻av中文系列| 久久久影院官网| 国产精品xxxxxx| 日韩中文字幕国产| 香蕉免费一区二区三区在线观看| 黄色大片中文字幕| 久久久国产一区二区三区四区小说| 中文字幕在线观看视频免费| 最近更新的2019中文字幕| 精品一区二区三区亚洲| 免费拍拍拍网站| 国产亚洲欧美激情| 91精品国产乱码久久久久| 欧美—级a级欧美特级ar全黄| 伊人精品一区| 亚洲怡红院在线| 亚洲一区二区三区不卡国产欧美| 日色在线视频| 国产日韩欧美中文| 亚洲黑丝一区二区| 日本精品在线观看视频| 91精品国产91热久久久做人人| 超碰资源在线| 日韩一区二区电影在线观看| 国产精品一区一区三区| 特级西西444www大精品视频免费看| 中文字幕日韩欧美| 粉嫩精品导航导航| 999精彩视频| 亚洲国产另类精品专区| 99精品老司机免费视频| 国产精品yjizz| 美女网站视频久久| 男人的天堂一区| 深夜精品寂寞黄网站在线观看| 粉嫩久久久久久久极品| 亚洲老女人av| 欧美日韩国产在线播放| 免费高清完整在线观看| 久久99精品久久久久久青青日本 | eeuss影院在线播放| 成人羞羞视频免费| 日本大胆欧美人术艺术动态| 国产一二三四在线|