<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      寫出優雅簡明代碼的論題集 -- Csharp(C#)篇[1]

      最近和一些朋友討論如何寫出優雅的代碼,我們都很喜歡C#,所以以C#為例。主要一共有三位程序員在一起討論,為簡單起見我用ABC代表我們三個人。

      有時候我們會針對一些代碼進行討論,有時候我們會提出一些觀點,有時候我們會一起學習網上一些現有的博客,為了便于大家引用,我給每一個論題都編上號。

      在很多情況下,我們的意見統一,那么我會給大家呈現我們的結論;但是有些情況我們有分歧。

      你可以加入我們的討論,我非常也希望能夠獲知你的意見,讓我們一起茁壯成長!

      好吧,讓我們今天就開始。

      論題一:函數越小越好!

      象鼠

      相信絕大部分程序員會認同這一點,維護一個超過100行的函數會讓人抓狂。

      我記得我以前修改過一個用cobol寫的程序,一個文件超過10萬行,我為了進行一個極其小的修改花了3天的時間,而且最后自己也不知道會不會造成什么嚴重的后果。-- 這已經過去8年了,希望那段代碼運行良好。

      到底理想狀態下,我們的函數應該不大于多少行?我們三個人的答案是:

      A: 10 行

      B: 15 行

      C: 20 行

      論題二:用 Linq 簡化代碼

      Linq有時可以幫助我們寫出一些非常“人性”的語句。

      下面的這個函數是用于在數據庫中插入新的評論:

       

      其中foreach這一部分可以簡化為

       


      在這一點上,我們存在分歧,A認為沒有必要進行簡化,因為原來的已經很明確了;但B認為簡化后的代碼可讀性更強,看上去更加直接。

      希望每個人都已經知道C#的這個用法了,直接上一些代碼:

      3.1

      原始代碼:

       

      修改后:

       

      3.2

      原始代碼:

       
      修改后:
       

      論題四:運用 ?:和??

      據說,有些公司會拿這個來測試入門的程序員:

      4.1

      原始代碼:

       

      修改后:

       

      4.2

      原始代碼:

       

      修改后:
       
      還可以更簡單,變成:
       

      論題五: 運用AS

      原始代碼:

       

      修改后:

       

      論題六: 運用 using

      using首次出現是在visual studio 2005 中,在這以前,很多程序員暈倒在了釋放資源的邏輯中。

      使用using語句實際上生成的IL代碼中是一個try, finally代碼塊,在finally代碼塊里釋放資源。

      原始代碼:
       

      這是一段非常丑陋的代碼,我們完全迷失在dispose群中,什么時候要調用哪個dispose啊? 天哪? 如果我們用 finally, 可以將代碼寫為:

       

      public IEnumerable<Order> GetOrders()

      {

          SqlConnection con = null;

          SqlCommand cmd = null;

          SqlDataReader rs = null;

          var orders = new List<Order>();

          try

          {

              con = new SqlConnection("some connection string");

              cmd = new SqlCommand("select * from orders", con);

              rs = cmd.ExecuteReader();

              while (rs.Read())

              {

                  // ...

              }

          }

          finally

          {

              rs.Dispose();

              cmd.Dispose();

              con.Dispose();

          }

          return orders;

      }

      看看using到底給我們帶來了什么:

       
       
      好多了,對嗎? 完全不用再用那一堆的try/finally 代碼了,也不用使用一堆的null,為了使代碼更輕巧,讓我們再做小小修改:
       

      未完待繼…
      相關閱讀:
      posted @ 2011-02-12 07:31  擁有的都是恩典  閱讀(11382)  評論(99)    收藏  舉報
      主站蜘蛛池模板: 久久一卡二卡三卡四卡| 国产播放91色在线观看| 亚洲中文字幕无码日韩精品| 色综合久久夜色精品国产| 亚洲高清WWW色好看美女| 国产在线精品第一区二区| 玩弄少妇人妻| 国产成人精品视频国产| 忘忧草在线社区www中国中文| 国产欧美日韩另类在线专区| 日本高清一区免费中文视频| 人妻精品久久久无码区色视| 精品国产高清中文字幕| 日韩一区二区三区女优丝袜| 国产一二三区在线| 日夜啪啪一区二区三区| 精品人妻一区二区| 国产超碰无码最新上传| 亚洲AV无码秘?蜜桃蘑菇| 国内精品自在拍精选| 亚洲第一综合天堂另类专| 偷拍久久大胆的黄片视频| 日本视频一两二两三区| 少妇激情a∨一区二区三区| 亚洲人成小说网站色在线| 老熟女高潮一区二区三区| 国产成人无码AV片在线观看不卡| 水蜜桃av无码| 日韩中文字幕高清有码| 精品人妻系列无码一区二区三区 | 国产偷人妻精品一区二区在线| 国产视色精品亚洲一区二区| 91人妻熟妇在线视频| 日韩一区二区三区无码a片| 国产超高清麻豆精品传媒麻豆精品| 国产精品无码av天天爽播放器| 91精品国产老熟女在线| 日日摸夜夜添狠狠添欧美| 起碰免费公开97在线视频| 午夜福利国产盗摄久久性| 四虎永久在线精品无码视频|