中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

將不確(que)定變為確(que)定~感謝異或,是你讓我徹底擺脫“否(fou)定式(shi)”

在這里,我需要感謝一下“異或”運算符,真的,謝謝你,^(xor),如果沒有它,也許我架構里總是離不開否定式,如果你看不懂我說的,那讓先看看這篇文章,事(shi)實(shi)上那篇(pian)文(wen)章沒有解決(jue)根(gen)本的(de)(de)否(fou)(fou)定式問題(ti),題(ti)目也只是對(dui)DefaultValue的(de)(de)一個(ge)學(xue)習(xi),這篇(pian)文(wen)章,我認(ren)為終于(yu)把“否(fou)(fou)定式“解決(jue)了(le),真的(de)(de)解決(jue)了(le)!

這(zhe)是我的架構代碼(ma),否定(ding)式的出現是為了(le)讓程序(xu)員(yuan)少寫代碼(ma)

 public interface IUnitOfWork
    {
        /// <summary>
        /// 將操作提交到數(shu)據庫(ku),
        /// </summary>
        void Save();
        /// <summary>
        /// 是(shi)否不提交到數據庫,這只(zhi)是(shi)在具體的repository類中(zhong)的SaveChanges方法里用到的
        /// 默(mo)認應該(gai)設置為false,即默(mo)認為提交到數據庫
        /// </summary>
        /// <returns></returns>
        bool IsNotSubmit { get; set; }
    }

當你的數據上下文實現IUnitOfWork接口后,不需要為IsNotSubmit 再(zai)賦值(zhi),你(ni)只(zhi)要實現(xian)一(yi)下(xia)getter,setter就可以了,但(dan)代碼看上(shang)去是不漂亮(liang)的,因(yin)為代碼的含義

是一(yi)種“否定(ding)式”,我(wo)(wo)們(men)一(yi)般(ban)會把它解(jie)釋(shi)為:沒有提交,而在程序中,我(wo)(wo)們(men)希望它是提交的,會這樣寫代(dai)碼

         if (!iUnitWork.IsNotSubmit)
            iUnitWork.Save();

意思是(shi)(shi)說(shuo),如果不(bu)是(shi)(shi)被不(bu)提交(jiao)(jiao)的(de)(即提交(jiao)(jiao)的(de)),就(jiu)保存動作(zuo),這個(ge)解釋對我們來說(shuo)是(shi)(shi)不(bu)容易(yi)理解的(de),我們一般叫它否定式的(de),為(wei)什(shen)么不(bu)用(yong)IsSubmit,因(yin)為(wei)bool類型默認值是(shi)(shi)false,如果你用(yong)issubmit,那就(jiu)是(shi)(shi)默認為(wei)“不(bu)提交(jiao)(jiao)”動作(zuo),而我需要的(de)是(shi)(shi)“默認提交(jiao)(jiao)”,而我又不(bu)希(xi)望每(mei)個(ge)上下文在(zai)實現時,都去把IsSubmit賦為(wei)true,因(yin)為(wei)這樣

程(cheng)序(xu)(xu)員(yuan)不(bu)干(gan)了,程(cheng)序(xu)(xu)本身也不(bu)漂亮,所以,我才用了isnotSubmi——這(zhe)是(shi)使用它(ta)的原因(yin)...

Xor的出現,讓我(wo)徹底擺脫“否定(ding)式”

異(yi)常(chang)的含義大家都知道,相(xiang)同為(wei)假,相(xiang)異(yi)為(wei)真,呵呵,但(dan)卻(que)沒有用(yong)在(zai)它需(xu)要的地方,這(zhe)是我們國人的通病,即只(zhi)知道這(zhe)個東(dong)西(xi),但(dan)卻(que)不知道如何用(yong)好它。

看我(wo)的代碼,使用xor,把isnotsubmit改為issubmit,呵(he)呵(he)

  public interface IUnitOfWork
    {
        /// <summary>
        /// 將操作提交到數據庫,
        /// </summary>
        void Save();
        /// <summary>
        /// 是否需要顯示進行提交(save())
        /// 默認為false,即(ji)在repository方法中自動完(wan)成提交,值為true時,表示(shi)需要顯示(shi)調用save()方法
        /// </summary>
        /// <returns></returns>
        bool IsSubmit { get;set; }

    }

注意看下面的(de)判斷,它是(shi)核心,事實上是(shi)程(cheng)序處理(li)的(de)一(yi)個(ge)小技巧(qiao)

 if (db.IsSubmit ^ true)//IsSubmit為true時,不自動執行save()方法
       db.Save();

我(wo)們(men)讓IsSubmit與true作一(yi)個異或運算,通(tong)過概念我(wo)們(men)如果,當issubmit為false時,條件才為真,而bool類(lei)型默(mo)認值(zhi)就是(shi)false,所(suo)以,咱們(men)的程序完美了,默(mo)認就提交了,而且我(wo)的屬性是(shi)IsSubmit ,而不是(shi)IsNotSubmit ,呵呵,終于擺脫“否定(ding)式(shi)”,呵呵!

再次感謝xor,感謝異(yi)或!

 

posted @ 2013-09-11 18:04  張占嶺  閱讀(852)  評論(2)    收藏  舉報