国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > C# > 正文

正確使用C#中的#region指令來進(jìn)行代碼的組織

2023-05-18 12:33:06
字體:
供稿:網(wǎng)友

本文旨在講解如何正確地使用#region指令,以更好地組織代碼。使用#region就是將一些有關(guān)聯(lián)的代碼組織在一起,然后折疊起來。這樣你就在一個(gè)函數(shù)中看不到很長(zhǎng)很長(zhǎng)的代碼段。例如:


 
  1. public void DoSomething()  
  2. {    
  3. bool shouldIDoSomething;     
  4. #region Decide if I should do something   
  5. if(needToDoSomething && haventDoneSomethingThisDay)  
  6. shouldIDoSomething = true;   
  7.  else    
  8. {  
  9. // do some other logic to decide and 
  10. set shouldIDoSomething to some value  
  11.   }    
  12. #endregion     
  13. if(shouldIDoSomething)    
  14. {done++;  }} 

當(dāng)然這段代碼很簡(jiǎn)單。在實(shí)際項(xiàng)目中,你可能看到上百行甚至更多的代碼在一個(gè)#region中。如果把它折疊起來。看起來就會(huì)很整潔。是吧?


 
  1. public void DoSomething()  
  2. {    
  3. bool shouldIDoSomething;     
  4. [Decide if I should do something]     
  5. if(shouldIDoSomething)    
  6. {done++;    
  7. }} 

我們只是把一些代碼和一些變量組合起來放在#region中。如果你在仔細(xì)想想,其實(shí)我們相當(dāng)與創(chuàng)建了一個(gè)新的函數(shù),只是將這些方法內(nèi)置到當(dāng)前方法中。一個(gè)函數(shù)只做單一的一件事情,這是Clean Code這本書的一個(gè)原則。為什么我們不把它提取為一個(gè)方法呢,這樣一來,一個(gè)函數(shù)就只做一件事情了。


 
  1. public void DoSomething(){    
  2. if(ShouldIDoSomething())   
  3.  {done++;  }}   
  4. private bool ShouldIDoSomething(){    
  5. if(needToDoSomething && haventDoneSomethingThisDay)  
  6. shouldIDoSomething = true;    
  7. else   
  8.  {  
  9. // do some other logic to decide   
  10. and set shouldIDoSomething to some value  }} 

這樣看起來就清楚很多,因?yàn)槲覀兘档土酥暗腄oSomething函數(shù)的復(fù)雜度。兩個(gè)函數(shù)可以分開測(cè)試,確保沒有邏輯錯(cuò)誤。
小段總結(jié)1:  #region 不適合在大方法中使用,當(dāng)你在一個(gè)方法中使用#region 的時(shí)候,停下來想想你剛剛寫了什么代碼?大多數(shù)時(shí)候,你可以將這些代碼段獨(dú)立成一個(gè)函數(shù)。

看看下面這段非常漂亮的代碼:


 
  1. #region Get Customer   
  2. public void GetCustomer(){    
  3. // code to get the customer}   
  4. #endregion   
  5. #region Save Customer   
  6. public void SaveCustomer(){    
  7. // code to save the customer}   
  8. #endregion 

將它折疊之后,變成下面這樣:


 
  1. [Get Customer] [Save Customer] 

這樣做很容易閱讀嗎?這樣做的目的是什么,我不明白?代碼折疊就會(huì)變得更好?我覺得這樣做只會(huì)讓代碼更難以閱讀,因?yàn)槟忝看我磖egion中的代碼,你都要展開一次。

小段總結(jié)2:不要因?yàn)槟隳埽憔褪褂?region 。

再看下面這個(gè)例子


 
  1. public class PriceCalculator{    
  2. public decimal CalculatePrice()    
  3. {decimal price = 100m;decimal discount = CalculateDiscount();  
  4. return price * (1m - discount));   
  5.  }     
  6. #region Discount Calculation     
  7. private void CalculateDiscount()    
  8. {decimal discount = 0m;   
  9. if(CanApplyDiscount())    
  10. discount = 0.05m;   
  11. return discount;   
  12.  }     
  13. private void CanApplyDiscount()  {  
  14. // some logic, other method calls  }     
  15. // some other discount calculation methods  ...     
  16. #endregion} 

如果你將這個(gè)例子和本文中的第一個(gè)例子做下比較,你可能會(huì)看到它們的共同點(diǎn)。他們是相同的,不過一個(gè)是在類中,一個(gè)是在函數(shù)中,層級(jí)不同而已。這里在提一個(gè)原則:?jiǎn)我宦氊?zé)原則,一個(gè)類應(yīng)該只有一個(gè)職責(zé)。看上面的類,你可以很容易看出它有兩個(gè)職責(zé):價(jià)ge計(jì)算和折扣計(jì)算。折扣計(jì)算的方法被放到一個(gè)#region中。同樣,可以將它們提取出來做為一個(gè)新類。

小段總結(jié)3:可以將一組相關(guān)的函數(shù)提取到一個(gè)職責(zé)單一的新類中。

那我們到底怎么使用 #region 呢。將東西用它來分組,它是非常有用的。在我寫的類中或多或少有幾個(gè)regions,用來對(duì)類中不同的結(jié)構(gòu)進(jìn)行分組。比如: fields, properties, methods, events, types等。如果你打開我寫的類文件,你會(huì)看到結(jié)構(gòu)如下:


 
  1. public class SomeClass{  
  2. [Events]  
  3. [Fields]  
  4. [Properties]   
  5. [Methods]} 

總的來說:我將region看成能控制閱讀源代碼的復(fù)雜度的一種方式。因?yàn)槟憧梢詫⒁恍┫嚓P(guān)的代碼放在一個(gè)區(qū)域(region)里面。但是,這不是隨便就創(chuàng)建的新的方法或者新類的借口。其實(shí)Region并不能消除復(fù)雜度,它只是在你閱讀代碼的時(shí)候,隱藏了部分代碼。你必須通過寫出小巧,清晰,重點(diǎn)突出的方法和類,才能控制代碼的復(fù)雜度。當(dāng)你做到這些的時(shí)候,你甚至?xí)l(fā)現(xiàn)region是不必要的。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产激情自拍| 国产一级在线观看| 欧美日韩国产亚洲沙发| 亚洲wwwwww| 欧美日韩综合高清一区二区| 任你操在线观看| 国产麻豆视频免费观看| 国产视频青青| 日本成a人片在线观看| 高清av中文在线字幕观看1| 亚洲成a人v欧美综合天堂麻豆| 一本大道五月香蕉| 免费影视观看网站入口| 中文字幕一区免费| 伊人狠狠av| 国产卡1卡2卡三卡在线| 精品一区二区三区在线成人| 老师我好爽再深一点的视频| 日本中文字幕在线2020| 精品卡1卡2卡三卡免费网站| 免费看的毛片| ·天天天天操| 国产美女在线一区二区三区| 在线观看免费黄色| 国产福利小视频在线观看| 尤物视频在线观看视频| 国产一级片网站| 国产自产视频| 免费99热在线观看| 亚洲人在线播放| 国产二区三区在线| 国产人成在线观看| 中文字幕日本在线| 国产女王在线**视频| 导航福利在线| 超碰97在线免费观看| 性网站在线看| 亚洲精品国自产拍在线观看| 中文一区在线观看| 精品福利影院| 国产一二区在线观看| 狠狠干五月天| 成网站在线观看人免费| 亚洲第一页在线播放| 一本久久精品| 阿v免费在线观看| 免费在线看v| 国产永久在线观看| 精品中文字幕不卡在线视频| 青草在线视频在线观看| 日本片在线看| 久久五月精品| 国产一级大片| 在线三级中文| 秋霞av在线| 老司机精品视频一区二区| 日本动漫同人动漫在线观看| 免费在线黄色av| 福利视频在线导航| 国产一区二区三区四区尤物| 国产黄色在线| www.色婷婷| 国产卡1卡2卡三卡在线| 国产黄色在线| 免费看黄视频网站| 国产成在线观看免费视频| 亚洲高清在线免费| 国产精品亚洲第五区在线| 国产羞羞视频| 天天艹天天操| 最近高清中文在线字幕在线观看| 精品一区二区三区在线成人| www.色婷婷| 国产福利视频在线| 黄色av免费在线| 国产成人福利| 国产免费av高清在线| 先锋av资源网| 91极品在线| 国产麻豆高清视频在线第一页| 国产变态拳头交视频一区二区| 久热免费在线视频| 在线视频色在线| 国产欧美日韩第一页| 免费精品国产自产拍在| 五月婷婷视频在线观看| www.香蕉视频在线观看| 2021av天天| 国产午夜在线| 黄色av网址在线免费观看| 9色在线视频网站| 国产精品人人爱一区二区白浆| 欧美日韩视频精品一区二区| av二区三区| 在线中文字幕视频观看| 国产精品伦一区二区三区级视频频 | 在线视频中文字幕| 国产一级黄色电影| 激情丁香在线| 国产免费永久在线观看| 黄色国产网站在线播放| 久久综合第一页| 超碰在线网站| 天堂在线免费视频| 国产毛片毛片毛片| 国产免费a∨片在线观看不卡| 久久av少妇| 久久五月精品| 好吊日视频在线观看| 福利在线国产| 国产一区二区三区福利| 91sp网站在线观看入口| 在线91av| 精品三级久久久久久久电影聊斋| 精品亚洲成a人片在线观看| 永久免费不卡在线观看黄网站| av日韩国产| 国产免费福利| 国产黄色一级电影| 亚洲视频精品在线观看| 可以免费看污视频的网站| 国产精品一区在线看| 国产精品区一区二| 亚洲一区二区三区在线观看网站| 女同一区二区免费aⅴ| 国产视频xxx| 精品176二区| 黄色片大全在线观看| 国产网友自拍电影在线| 中文在线有码| 中文字幕在线影视资源| 97人人在线| 国产蜜臀在线| 99久久国产视频| 中文字幕在线视频观看| 天天激情综合| 2018中文字幕在线观看| 国产在线www| 免费日本黄色| av天天在线| 国产盗摄一区二区| 国产美女免费观看| 在线国产1区| 国产三区在线观看| 久久精品无码一区二区日韩av| 99热99re6国产在线播放| 国产欧美日韩第一页| 狠狠操视频网站| 日本久久国产| 牛牛热在线视频| 免费a在线看| 日本成a人片在线观看| 91嫩草在线播放| 综合蜜桃精品| 国产精品一区牛牛影视| 久热国产在线视频| 黄色片视频在线观看| 超碰在线中文| 久久国产热视频| 免费在线看v| 欧美日韩一区二区三区在线播放| 在线色视频网| av在线官网| 免费久久网站| 国产美女视频一区二区三区| 福利资源在线久| 五月婷婷开心综合| 国产羞羞视频| 国产无遮挡又黄又爽免费网站 | 国产一级大片| 国产精品久久久久久久牛牛 | 国产黄色大片在线观看| 国产成人精品实拍在线| 精品视频一二三| a中文在线播放| 国产精品自拍亚洲| 国产高潮又爽又无遮挡又免费| 国产偷窥老熟盗摄视频| 国产成人天天5g影院| www.五月色.com| 国产污污在线观看| 中文资源在线官网| 开心快乐六月丁香婷婷| 国产精品蜜臀| 日本aⅴ写真网站免费| 成视频年人免费看黄网站| 国产一区二区三区福利| 992tv在线观看在线播放| sm国产在线调教视频| 最近最好的中文字幕2019免费| 伊人222成人综合网| 狠狠操狠狠色| 精品一区二区三区在线成人| 久热精品视频在线播放| 国产黄色免费网站| 国产美女在线看| 天堂在线国产| 国产高清视频在线播放| 国产中文字幕av| 亚洲精品影院在线|