中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

代碼重構怎么做?
來源:易賢網 閱讀:906 次 日期:2015-03-13 13:38:01
溫馨提示:易賢網小編為您整理了“代碼重構怎么做?”,方便廣大網友查閱!

這幾天,接手一個同事的代碼,關于微信接口開發的,那一堆的 if,看得哥蛋痛了,這個毛病也是很多新手容易犯的,所以特地把這次重構寫出來。

下面來我們看看這個代碼的問題所在,if else 里面的代碼塊邏輯,不好改,使得它的重用性為 0,并且難以閱讀。當然,如果 if 只有一兩個,或者3個,這樣寫是問題不大的。

但是如果多了,這種代碼便會讓維護變得困難起來。

if (strMsgType == "text")

{

textContentClient = rootElement.SelectSingleNode("Content").InnerText;

strResult = SetMsgType_Text(strClientName, textContentClient, db, strServerName, Identity);

System.Diagnostics.Trace.WriteLine(strResult);

return Content(strResult);

}

else if (strMsgType == "event")

{

string eventType = rootElement.SelectSingleNode("Event").InnerText.ToLower();

if (eventType == "subscribe")

{

string keyCode = "";

if (rootElement.SelectSingleNode("EventKey") != null)

keyCode = rootElement.SelectSingleNode("EventKey").InnerText.ToLower();

strResult = FormatEventSubscribe(keyCode);

RecordReplyMessage();

return Content(strResult);

}

else if (eventType == "scan")

{

string keyCode = rootElement.SelectSingleNode("EventKey").InnerText.ToLower();

var outLetName = "歡迎關注";

var outletDB = ShoppingContext.CreateInstance(Identity);

var outLetModel = outletDB.Outlets.FirstOrDefault(o => o.SceneId == Int32.Parse(keyCode));

if (outLetModel != null)

outLetName += outLetModel.Name;

return Content(GetTextTemp(strClientName, strServerName, outLetName));

}

else if (eventType == "click")

{

string keyCode = rootElement.SelectSingleNode("EventKey").InnerText.ToLower();

strResult = FomatMenuMessage(keyCode);

return Content(strResult);

}

else if (eventType == "unsubscribe")

{

var subIds = db.ReplyRecords.Where(r => r.FromOpenId == this.ClientId.ToString() && r.EMessType == EEventType.Subscribe.ToString() && r.KeyWord != null).Select(o => o.KeyWord).ToArray();

var unSubIds = db.ReplyRecords.Where(r => r.FromOpenId == this.ClientId.ToString() && r.EMessType == EEventType.Unsubscribe.ToString() && r.KeyWord != null).Select(o => o.KeyWord).ToArray();

var SencesId = "";

foreach (var k in subIds)

{

if (!unSubIds.Contains(k))

{

this.ReplyModel.KeyWord = k;

break;

}

}

this.ReplyModel.EMessType = EEventType.Unsubscribe.ToString();

RecordReplyMessage();

}

}

else if (strMsgType.ToLower() == "location")

{

string strLocation_X = rootElement.SelectSingleNode("Location_X").InnerText;

string strLocation_Y = rootElement.SelectSingleNode("Location_Y").InnerText;

strResult = FormatOutLetLBS(double.Parse(strLocation_X), double.Parse(strLocation_Y), 10);

//strResult = FormatTextMessage(strLocation_X + "|" + strLocation_Y);

return Content(strResult);

}

else if (strMsgType.ToLower() == "image")

{

string strImgUrl = rootElement.SelectSingleNode("PicUrl").InnerText;

}

一種比較好的處理方法就是把語句塊內的代碼抽出來,寫成函數,如下面所示:

public class MessageProcesser

{

public ReplyMessage Process(string xml)

{

var msg = PostMessage.FromXml(xml);

switch (msg.MsgType)

{

case Models.PostMessageType.Event:

var eventType = ((EventMessage)msg).Event;

switch (eventType)

{

case EventType.Click:

return ProcessClickEvent((ClickEvent)msg);

case EventType.Location:

return ProcessLocationEvent((LocationEvent)msg);

case EventType.Scan:

return ProcessScanEvent((ScanEvent)msg);

case EventType.Subscribe:

return ProcessSubscribeEvent((SubscribeEvent)msg);

case EventType.Unsubscribe:

return ProcessUnsubscribeEvent((UnsubscribeEvent)msg);

}

break;

case Models.PostMessageType.Image:

return ProcessImageMessage((ImageMessage)msg);

case Models.PostMessageType.Link:

return ProcessLinkMessage((LinkMessage)msg);

case Models.PostMessageType.Location:

return ProcessLocationMessage((LocationMessage)msg);

case Models.PostMessageType.Text:

return ProcessTextMessage((TextMessage)msg);

case Models.PostMessageType.Video:

return ProcessVideoMessage((VideoMessage)msg);

case Models.PostMessageType.Voice:

return ProcessVoiceMessage((VoiceMessage)msg);

}

return null;

}

protected virtual ReplyMessage ProcessClickEvent(ClickEvent msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage ProcessLocationEvent(LocationEvent msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage ProcessScanEvent(ScanEvent msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage ProcessSubscribeEvent(SubscribeEvent msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage ProcessUnsubscribeEvent(UnsubscribeEvent msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage ProcessImageMessage(ImageMessage msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage ProcessLinkMessage(LinkMessage msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage ProcessLocationMessage(LocationMessage msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage ProcessTextMessage(TextMessage msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage ProcessVideoMessage(VideoMessage msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage ProcessVoiceMessage(VoiceMessage msg)

{

return DefaultProcess(msg);

}

protected virtual ReplyMessage DefaultProcess(PostMessage msg)

{

var reply = new TextReply(msg);

if (msg.MsgType == PostMessageType.Event)

{

reply.Content = string.Format("{0} event is not processed.", ((EventMessage)msg).Event);

}

else

{

reply.Content = string.Format("{0} message is not processed.", msg.MsgType);

}

return reply;

}

}

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:代碼重構怎么做?
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
99xxxx成人网| 亚洲欧美在线观看| 在线视频日韩| 欧美精品三级| 在线视频一区观看| 国产区欧美区日韩区| 久久久久国色av免费看影院 | 欧美岛国激情| 日韩一区二区精品在线观看| 国产精品国内视频| 久久精品国产99| 亚洲国产日韩欧美| 欧美网站在线观看| 久久成人国产| 99精品免费视频| 国产中文一区二区| 欧美三区在线| 毛片av中文字幕一区二区| 99av国产精品欲麻豆| 国产日本欧美一区二区| 欧美另类videos死尸| 久久国产日本精品| 夜夜嗨av色一区二区不卡| 一本色道婷婷久久欧美| 国产精品五月天| 欧美国内亚洲| 久久久国产91| 午夜视频一区在线观看| 99精品福利视频| 在线成人性视频| 国产精品自拍一区| 欧美日韩八区| 欧美国产精品v| 久久精品国产99国产精品| 亚洲视频欧美视频| 亚洲美女精品一区| 亚洲国产aⅴ天堂久久| 国产欧美日韩三区| 欧美色道久久88综合亚洲精品| 久久一区二区三区超碰国产精品| 亚洲综合清纯丝袜自拍| 99视频在线观看一区三区| 亚洲国产精品电影| 在线观看av不卡| 国内精品一区二区三区| 国产农村妇女精品| 国产精品一区免费视频| 国产精品成人在线观看| 欧美另类99xxxxx| 欧美理论在线| 欧美日韩成人网| 欧美日韩精品高清| 欧美日韩一二三四五区| 亚洲大胆美女视频| 国产综合欧美在线看| 国产精品一区一区三区| 国产乱码精品一区二区三区五月婷 | 亚洲国产欧美一区二区三区丁香婷| 国产免费亚洲高清| 国产日韩综合| 国产主播一区二区| 影音欧美亚洲| 亚洲人被黑人高潮完整版| 亚洲精品免费观看| 亚洲视频在线免费观看| 亚洲欧美一区二区激情| 欧美有码视频| 免费成人高清视频| 欧美日韩喷水| 国产精品外国| 亚洲国产精品电影| 在线一区欧美| 午夜精品亚洲| 开心色5月久久精品| 狠狠色狠狠色综合日日小说| 国产婷婷精品| 揄拍成人国产精品视频| 亚洲精品久久久久久久久久久| 亚洲精品综合在线| 午夜精品一区二区三区电影天堂 | 免费亚洲电影| 欧美日韩国产影片| 国产精品久久午夜| 一区二区亚洲欧洲国产日韩| 一本色道久久综合一区| 久久精品二区三区| 欧美日韩情趣电影| 在线观看av不卡| 亚洲中字在线| 欧美成人精品不卡视频在线观看| 欧美视频在线观看一区| 国内精品久久久久影院 日本资源| 亚洲经典一区| 午夜在线电影亚洲一区| 欧美大片在线看免费观看| 国产乱子伦一区二区三区国色天香| 激情视频亚洲| 亚洲欧美日韩在线| 欧美精品日本| 激情综合色丁香一区二区| 中国av一区| 欧美国产日产韩国视频| 国产麻豆午夜三级精品| 99精品国产99久久久久久福利| 久久久91精品国产| 国产精品日本欧美一区二区三区| 91久久香蕉国产日韩欧美9色| 午夜精品亚洲| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 亚洲人成久久| 久久精品亚洲国产奇米99| 国产精品精品视频| 最新日韩精品| 久久一二三区| 国产精品99久久久久久久女警| 久久都是精品| 国产精品乱子久久久久| 最新日韩在线| 欧美jjzz| 亚洲激情一区二区| 久久视频免费观看| 国产婷婷一区二区| 亚洲欧美日韩综合一区| 欧美特黄一级大片| 亚洲视频专区在线| 欧美丝袜一区二区三区| 一片黄亚洲嫩模| 欧美日韩一区二区免费在线观看| 亚洲日本乱码在线观看| 欧美成人亚洲| 日韩一二三在线视频播| 欧美精品亚洲精品| 亚洲精品在线一区二区| 免费人成精品欧美精品| 亚洲电影免费观看高清| 噜噜噜在线观看免费视频日韩| 伊人激情综合| 欧美成人网在线| 一区二区三区精品视频| 欧美亚州一区二区三区| 亚洲婷婷综合色高清在线| 国产精品国产a级| 午夜精品久久久| 韩国在线一区| 老**午夜毛片一区二区三区| 激情久久久久| 欧美高清自拍一区| 一区电影在线观看| 国产精品一区二区在线观看网站 | 久久成人18免费网站| 国产欧美大片| 免费观看在线综合| 日韩一区二区高清| 国产精品久久久久久久久久ktv| 亚洲一区尤物| 精品电影在线观看| 激情亚洲网站| 亚洲综合电影| 欧美在线视频a| 一区视频在线播放| 亚洲免费观看在线视频| 猛男gaygay欧美视频| 欧美一区二区福利在线| 国产婷婷色一区二区三区在线| 久久亚洲精选| 99综合在线| 国产精品网站一区| 久久久福利视频| 99国产精品一区| 国产日韩欧美91| 欧美日本国产| 久久精品国产亚洲精品| 日韩亚洲精品视频| 亚洲国产综合在线看不卡| 欧美日韩国产一区二区三区| 欧美一区二区三区精品电影| 亚洲日本aⅴ片在线观看香蕉| 国产精品免费网站在线观看| 久久一区二区三区超碰国产精品| 亚洲视频免费观看| 亚洲第一成人在线| 国产麻豆日韩欧美久久| 欧美日韩国产综合新一区| 久久综合一区| 久久成人免费视频| 亚洲一级片在线观看| 91久久一区二区| 韩国自拍一区| 国产日韩在线看| 国产精品国产三级国产普通话99| 欧美不卡在线视频| 久久久亚洲精品一区二区三区 | 免费观看成人www动漫视频| 亚洲视频专区在线| 亚洲人成网站777色婷婷| 国产日韩在线视频| 国产精品一区二区久久| 国产精品jizz在线观看美国| 欧美精品成人91久久久久久久| 久久女同互慰一区二区三区|