国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

使.NET命名空間符合標(biāo)準(zhǔn)

2024-07-10 12:59:43
字體:
供稿:網(wǎng)友
命名空間可以幫你組織企業(yè)的.net源代碼,但要做到這一點(diǎn),必須要有可靠的計(jì)劃。
by jonathan goodyear, mcsd, mcp, cls
還記得在com中為企業(yè)組織源代碼有多難嗎?典型情況下,你在命名時(shí)只可以用兩個(gè)級(jí)別(level):項(xiàng)目名稱和類名稱。你的progid通常是以下面的形式顯示的: xyzcompanyaccounting.payroll



顯然,這種方法并不理想。如果可以更細(xì)地劃分命名空間標(biāo)識(shí)符就更好了。例如,在.net中,progid可以表示成: xyzcompany.accounting.payroll




在這個(gè)例子中,兩者的差別并不大,但當(dāng)你在定義層次更多的項(xiàng)目時(shí),它們的差別就會(huì)很明顯了。

實(shí)際上,.net framework可以讓你創(chuàng)建更深層嵌套的命名空間,這種功能會(huì)使編程工作更順利(或更糟)。要運(yùn)用深層嵌套的命名空間需要我們更仔細(xì)地做計(jì)劃,并需要企業(yè)各開發(fā)小組的配合。本文提供了一些有用的建議,講述了如何以命名空間的形式來組織源代碼,以及如何在visual sourcesafe(vss)項(xiàng)目中組織企業(yè)的.net源代碼。

構(gòu)建你的命名空間
作為出發(fā)點(diǎn),你為一個(gè)源代碼單元分配的每個(gè)命名空間都應(yīng)該以公司標(biāo)識(shí)符開頭,這是很有用的。例如,在前面的例子中,我是以“xyzcompany”開頭的。命名空間的下一部分取決于代碼的目的范圍。如果你的代碼是包含商業(yè)邏輯的一個(gè)特定項(xiàng)目,那么命名空間的下一部分就應(yīng)該是你的項(xiàng)目的名稱(例子中的“accounting”)。接下來是細(xì)分你的項(xiàng)目(例子中的“payroll”)。因此,你的特定項(xiàng)目的命名空間就應(yīng)該是: xyzcompany.accounting.payroll



然后,你可以在xyzcompany.accounting.payroll命名空間中為手頭更具體的任務(wù)來定制類。通過在更細(xì)的基礎(chǔ)上劃分商業(yè)邏輯命名空間,你就可以在vss中將代碼分成更具體的項(xiàng)目單元(我在后面會(huì)更詳細(xì)地對(duì)此加以講述)。

asp.net web項(xiàng)目和web services項(xiàng)目是特定項(xiàng)目命名空間的特殊的例子。對(duì)于asp.net web項(xiàng)目來說,一個(gè)很好的命名標(biāo)準(zhǔn)就是companyname.projectname.website。同樣,web services項(xiàng)目的一個(gè)很好的命名標(biāo)準(zhǔn)就是companyname.projectname.webservices。

根據(jù)該語法,用于xyzcompany的帳目網(wǎng)站和web services的命名空間就會(huì)是: xyzcompany.accounting.website
xyzcompany.accounting.webservices




你運(yùn)用的命名空間方案可以根據(jù)源代碼的目的范圍改變。如果你打算讓代碼跨企業(yè)共享,那么在命名空間中就不要放項(xiàng)目的名稱。我還建議你不要?jiǎng)?chuàng)建自己的命名標(biāo)準(zhǔn)。作為替代,你應(yīng)該遵循microsoft已經(jīng)為.net framework建立的標(biāo)準(zhǔn)。例如,如果xyzcompany的開發(fā)人員要構(gòu)建一個(gè)企業(yè)類庫來將數(shù)據(jù)訪問封裝到sql server中,那么他們應(yīng)該用下面的命名空間: xyzcompany.data.sqlclient



該命名空間模擬了.net framework中的system.data.sqlclient命名空間結(jié)構(gòu)。同樣,如果xyzcompany的開發(fā)人員要構(gòu)建一個(gè)類庫來封裝他們自定義的事件日志(event logging),那么下面的命名空間就會(huì)很適合: xyzcompany.diagnostics



在你的命名空間中創(chuàng)建唯一的類名總是很好的。通過這種方法,當(dāng)有必要讓你的代碼同時(shí)運(yùn)用.net framework命名空間和特定企業(yè)的命名空間時(shí),就不會(huì)出現(xiàn)類名沖突的現(xiàn)象。例如,你應(yīng)該將自定義的事件日志類命名為eventlogger或xyzeventlog,而不是eventlog。我更喜歡用前面提到的建議,因?yàn)樵谝粋€(gè)完全形式的(fully-qualified)類名中不只一次地列出公司名稱會(huì)很啰唆。

出于幾個(gè)原因,以這種格式構(gòu)建你的命名空間是很重要的。首先,通過建立一個(gè)公司名形式的根命名空間,我們?cè)谝院筚徺I第三方產(chǎn)品時(shí)就避免了可能出現(xiàn)的命名空間沖突現(xiàn)象。第二,通過采用與.net framework一樣的命名空間結(jié)構(gòu),你就可以讓開發(fā)人員更容易地在企業(yè)底層架構(gòu)中找到為他們所需要的功能提供了支持的類。microsoft的類編目系統(tǒng)可能并不完善,但是讓開發(fā)人員去學(xué)習(xí)另外一個(gè)特定于你的企業(yè)的編目系統(tǒng)并沒有意義。第三,通過為企業(yè)構(gòu)建命名空間層次,你就可以很容易地用一個(gè)文件生成工具(如ndoc)為整個(gè)類庫編譯一個(gè)單獨(dú)的msdn形式的文件了。

構(gòu)建你的項(xiàng)目
在構(gòu)建好命名空間格式后,我們就可以考慮如何在vss中構(gòu)建項(xiàng)目了。我建議在你的vss樹狀目錄結(jié)構(gòu)的頂層中運(yùn)用兩個(gè)項(xiàng)目節(jié)點(diǎn): xyz enterprise .net class library
xyz project .net class library





圖1. 命名你的項(xiàng)目節(jié)點(diǎn)
這兩個(gè)項(xiàng)目節(jié)點(diǎn)可以讓你創(chuàng)建兩個(gè)單獨(dú)的文件(一個(gè)用于特定項(xiàng)目代碼,另一個(gè)用于企業(yè)代碼)。在每個(gè)頂層節(jié)點(diǎn)下,以公司名的形式創(chuàng)建一個(gè)項(xiàng)目節(jié)點(diǎn)(本例中的xyzcompany)。這就是你的根命名空間。至于vss項(xiàng)目樹狀目錄結(jié)構(gòu)的其它部分,我們可以復(fù)制你已經(jīng)創(chuàng)建的命名空間結(jié)構(gòu),用文件夾來替代命名空間中的圓點(diǎn)(.),這同java中各層次的類的顯示形式是類似的:在代碼中以圓點(diǎn)顯示、在classpath系統(tǒng)環(huán)境變量中用文件夾顯示(見圖1)。記住,我們總是需要用完全形式的、完整的命名空間名稱來命名你的項(xiàng)目文件。

提到命名標(biāo)準(zhǔn),我建議你遵循microsoft已經(jīng)建立的一些類名后綴。例如,屬性類都應(yīng)該是以單詞“attribute”結(jié)尾的,異常類都應(yīng)該以“exception”結(jié)尾。這就是說,你在決定為準(zhǔn)備構(gòu)建的類命名時(shí),先要確定它屬于哪種類型的類,并查看.net framework類庫,看看是否已經(jīng)有命名標(biāo)準(zhǔn)了。如果有,就遵循該命名標(biāo)準(zhǔn)。

我所講述的命名空間結(jié)構(gòu)只是為了幫你組織企業(yè)的.net源代碼。對(duì)于大多數(shù)公司來說,.net還是項(xiàng)很新的技術(shù),所以現(xiàn)在運(yùn)用一個(gè)組織好的編目系統(tǒng)正是時(shí)候。通過本文,我們就會(huì)意識(shí)到為你的命名空間建立一個(gè)標(biāo)準(zhǔn)的命名結(jié)構(gòu)的重要性。否則,你的.net代碼就會(huì)是個(gè)混亂的、深層嵌套的progid代碼庫,你在運(yùn)用它時(shí),就會(huì)很費(fèi)勁。
中國最大的web開發(fā)資源網(wǎng)站及技術(shù)社區(qū),
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 吉首市| 邯郸县| 唐海县| 宝山区| 眉山市| 绥滨县| 鄱阳县| 岢岚县| 乐东| 铅山县| 洞口县| 大连市| 柳江县| 开阳县| 广安市| 桃江县| 雷山县| 工布江达县| 北流市| 郴州市| 本溪| 佛山市| 乌拉特中旗| 渭源县| 临武县| 大连市| 大荔县| 伊宁市| 南充市| 左云县| 胶州市| 洪江市| 青铜峡市| 扶绥县| 忻州市| 宿州市| 五寨县| 望奎县| 永寿县| 阳原县| 襄城县|