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

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

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

      重構學習2-消除過長參數

      查看本人文章索引請通過http://www.rzrgm.cn/seesea125/archive/2012/04/17/2453256.html

       

      動機:一個方法里的參數過長,過長的參數列導致方法很難使用,因為這些參數太長難以理解,而且調用者和被調用者都必須記住這些參數的用途,另一個原因是一旦需要更多數據,就可能要增加參數或者重載這個方法。所以消除過長參數往往能提高代碼的可讀性。

      方法:一、如果參數的值是通過調用某個函數的結果得來的,則去掉該參數,讓接受該參數的函數直接調用該函數。

      二、如果這些參數是來自同一實體對象,則傳遞這個實體對象過去即可,如果這個實體不存在,那就先創建一個。

      注意:如果被調用函數使用了 [來自另一個對象的很多項數據」,這可能意味該函數實際上應該被定義在「那些數據所屬的對象」中。這時候可以考慮移動方法。

      示例

      比如公司OA,有一個頁面顯示某天某個人打卡記錄是否正常,顯示的格式如下:

      當前日期 打卡人 上班打卡時間 下班打卡時間 是否正常上下班 描述
      2012-04-17 ZXZ 09:10 18:00 非正常 遲到10分鐘

      已知的數據值有“當前日期,打卡人,上班打卡時間,下班打卡時間”,根據已知的數據判斷“是否正常上下班,備注”,代碼如下:

          //顯示考勤記錄
          public void ShowCheckOnWorkAttendanceRecords()
          {
              string currentDate = DateTime.Now.ToString("yyyy-MM-dd");//當前日期
              string userID = "ZXZ";//打卡人
              DateTime workOnTime = Convert.ToDateTime("2012-04-17 09:10:00");//上班打卡時間
              DateTime workOffTime = Convert.ToDateTime("2012-04-17 18:00:00");//下班打卡時間
              //判斷是否正常上下班,并返回備注
              string description = "";
             bool isNormalWork = IsNormalWork(currentDate, userID, workOnTime, workOffTime, out description);
             //顯示內容調用isNormalWork 和description這兩個值
          }
          //判斷是否正常上下班,并返回備注
          public bool IsNormalWork(string currentDate, string userID, DateTime workOnTime, DateTime workOffTime, out string description)
          {
              //邏輯判斷的方法省略......
              //public bool calculate()......
              description = "遲到10分鐘";
              return true;
          }

      重構后的代碼如下:

      //首先建立一個實體存放參數里的字段以及把返回的內容也放入字段中
          public class CheckOnWorkAttendanceRecords
          {
              public string CurrentDate { get; set; }
              public string UserID { get; set; }
              public DateTime WorkOnTime { get; set; }
              public DateTime WorkOffTime { get; set; }
              public bool IsNormalWork { get; set; }
              public string Description { get; set; }
          }
      
          //顯示考勤記錄
          public void ShowCheckOnWorkAttendanceRecords()
          {
              //判斷是否正常上下班,并返回備注
              CheckOnWorkAttendanceRecords checkOnWorkAttendanceRecords = new CheckOnWorkAttendanceRecords();
              checkOnWorkAttendanceRecords.CurrentDate = DateTime.Now.ToString("yyyy-MM-dd");//當前日期
              checkOnWorkAttendanceRecords.UserID = "ZXZ";//打卡人
              checkOnWorkAttendanceRecords.WorkOnTime = Convert.ToDateTime("2012-04-17 09:10:00");//上班打卡時間
              checkOnWorkAttendanceRecords.WorkOffTime = Convert.ToDateTime("2012-04-17 18:00:00");//下班打卡時間
              IsNormalWork(checkOnWorkAttendanceRecords);
              //顯示內容可以直接調用checkOnWorkAttendanceRecords對象里的內容即可
          }
          //判斷是否正常上下班,并返回備注
          public void IsNormalWork(CheckOnWorkAttendanceRecords checkOnWorkAttendanceRecords)
          {
              //邏輯判斷的方法省略......
              //public bool calculate()......
              checkOnWorkAttendanceRecords.Description = "遲到10分鐘";
          }

       

      重構后,代碼更清晰易懂,不用在每次看IsNormalWork方法時,去查詢和思考每個參數的內容,同時返回多個參數不用在OUT了,另外IsNormalWork應該屬于邏輯層的邏輯,因此接下來可以把這個方法移到邏輯層相應的類中。

      posted @ 2012-04-17 23:06  趙學智  閱讀(5340)  評論(5)    收藏  舉報
      主站蜘蛛池模板: 国产乱人伦AV在线麻豆A| 少妇人妻系列无码专区视频| 色欲综合久久中文字幕网| 中文精品无码中文字幕无码专区| 开心五月激情综合久久爱| 菠萝菠萝蜜午夜视频在线播放观看 | 男女高潮喷水在线观看| 国产在线拍揄自揄拍无码视频| 亚洲精品乱码久久久久久中文字幕| 国产精品成人久久电影| 色综合久久久久综合体桃花网| 无码 人妻 在线 视频| 久久综合伊人77777| 高中女无套中出17p| 97久久久亚洲综合久久| 最新国产精品拍自在线播放| 一区二区三区自拍偷拍视频| 日韩大片一区二区三区| 疯狂做受XXXX高潮国产| 国产蜜臀在线一区二区三区| 国产视频 视频一区二区| 日本三级理论久久人妻电影| 国产午夜成人久久无码一区二区| 国产一区二区在线有码| 精品久久精品久久精品九九| 国产日韩综合av在线| 开远市| 国产精品综合一区二区三区| 国产在线精品欧美日韩电影| 国产精品综合一区二区三区| 无码福利一区二区三区| 年日韩激情国产自偷亚洲| av色国产色拍| 久久影院综合精品| 日韩中文字幕免费在线观看| 欧美老人巨大XXXX做受视频| 福利一区二区视频在线| 无码av中文字幕久久专区| 久久人人97超碰爱香蕉| 国产成人剧情AV麻豆果冻| 成人精品老熟妇一区二区|