日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单声明一下。

發(fā)布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单声明一下。 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  在http://www.cnblogs.com/progame/archive/2004/06/27/19062.aspx的帖子中,反駁了我的觀點(diǎn),無可厚非,各人的觀點(diǎn)不同嘛。不過,我想說明一點(diǎn):我是搞快速開發(fā)的,是在保證工程質(zhì)量前提下進(jìn)行盡量的快速開發(fā),所以有一些觀點(diǎn)是涉及到一些技巧的,但也這些技巧與觀點(diǎn)均建立在面向?qū)ο蟮乃枷胫稀?br />  對于 progame的txtName.Text = Employee.Name & “”寫法,我沒有任何反對意見,這倒是一個不錯的寫法。

  不過,從純對象角度來說,“NULL并不表示這個屬性沒有,而是說這個屬性暫時“未知”,比如說員工表的出生日期字段,用default?1900-01-01?還是1990-01-01? 難道這種默認(rèn)值就不需要前臺程序判斷?”,如果是這樣理解屬性為空的概念也未嘗不可,但是這樣,在進(jìn)行業(yè)務(wù)建模時,就應(yīng)該將有Null值的屬性列采用虛類進(jìn)行描述,可以參考一下對象/關(guān)系映射--繼承模式中指出的One Inheritance Path One Table模式,在這里模式中,虛類是不能映射到表的,原因就是我們用的是關(guān)系型數(shù)據(jù)庫,而不是對象型數(shù)據(jù)庫,在關(guān)系型數(shù)據(jù)庫中,一般不會出現(xiàn)可變化的虛表,當(dāng)然也可以從其它手段進(jìn)行模擬,不過,這如同用C來寫對象化的編程一樣,畢竟要麻煩一些。
  上面說的員工表的出生日期字段,用1900-01-01還是1990-01-01,我認(rèn)為既然站在了對象的角度來看,就不應(yīng)該考慮作為對象的“員工的出生日期”的是1900-01-01還是1990-01-01,屬性本身是不應(yīng)有指定的數(shù)據(jù)格式,因?yàn)閷傩灾皇且粋€描述,像1990-01-01這類格式字段,本身也是作為“出生日期”的屬性信息而存儲于數(shù)據(jù)庫之中的。而且,默認(rèn)值似乎也不會影響到實(shí)際應(yīng)用程序中的操作,可能 progame老兄習(xí)慣于使用數(shù)據(jù)綁定操作進(jìn)行數(shù)據(jù)庫的操作,所以會遇到默認(rèn)值選擇什么比較好的問題。但請稍注意一下,屬性的默認(rèn)值,不一定是直接用于數(shù)據(jù)呈現(xiàn)而用的,它的作用是填充數(shù)據(jù)庫中屬性里殘缺的部分,在關(guān)系型數(shù)據(jù)庫與外部程序連接時,如果少了數(shù)據(jù)庫的默認(rèn)值,它在直接訪問時的邏輯上更大的情況不是表示出了不存在,而表示出了未知。

eg. 在員工表中,假設(shè),家庭住址為空,那么在此情況,如果應(yīng)用程序請求員工的家庭住址的值時,數(shù)據(jù)庫直接返回一個空標(biāo)識,這時,在應(yīng)用程序中,如果有一個對象接收到此空標(biāo)識時,這個空標(biāo)識作為object時,是null值,對象引用為空值,表達(dá)的直接邏輯就是不存在,而不應(yīng)該是未知。按我的思想,一般的情況下,你不應(yīng)該能夠進(jìn)行如下形式的聲明(偽代碼說明):
string str = null;
object o = (object)str;

上面的代碼對一個string類型的對象進(jìn)行裝箱操作,但實(shí)際上,對于object本身來說是一個引用型,當(dāng)對str進(jìn)行裝箱后,它實(shí)際上是對一個null進(jìn)行了裝箱操作,所以這是不應(yīng)該能夠?qū)崿F(xiàn)的代碼,但在.net的C#代碼中,為什么編譯能夠通過?
在CLR中,是如下的操作:
? .maxstack? 1
? .locals init ([0] string str,
?????????? [1] object o)
? IL_0000:? ldnull
? IL_0001:? stloc.0
? IL_0002:? ldloc.0
? IL_0003:? stloc.1

??????? 請注意上面的顏色標(biāo)識部分,([0] string str, [1] object o)發(fā)現(xiàn)了什么?對,[0]string str,0長度大小的string,這是CLR的自動轉(zhuǎn)換,并且,還可以看到[1] object o,這是外部進(jìn)行的裝箱,也就是說,這里并不是類型轉(zhuǎn)換,而是外部的一個包裝而已。這樣,應(yīng)用程序中實(shí)際執(zhí)行的代碼與數(shù)據(jù)庫中提交過來的數(shù)據(jù),實(shí)際上已經(jīng)被“污染”過了,這是無法實(shí)現(xiàn)高效的O/R映射的。因?yàn)樵陉P(guān)系數(shù)據(jù)庫中有數(shù)據(jù)類型的概念,其中分開了空值與0長度大小的概念,就關(guān)系型數(shù)據(jù)而言,空值確實(shí)是表示不存在,因?yàn)樗祷氐牟皇且粋€string的數(shù)據(jù)類型的空值,而返回的就是一個Null值。 
??????? 在必要的情況下,如果非得進(jìn)行空值操作,建議對數(shù)據(jù)庫的返回的空值,進(jìn)行泛型改造。

  在數(shù)據(jù)庫中,我覺得應(yīng)該設(shè)定默認(rèn)值的問題,并不是誰說了就誰是對了,當(dāng)然,我的觀點(diǎn)或理論上的理解也可能是錯誤的,如果能夠指正,我當(dāng)然也很高興,畢竟這也是一種進(jìn)步。

轉(zhuǎn)載于:https://www.cnblogs.com/William_Fire/archive/2004/06/28/19072.html

總結(jié)

以上是生活随笔為你收集整理的简单声明一下。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。