欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
.Net平臺開(kāi)發(fā)的技術(shù)規范與實(shí)踐精華總結

.Net平臺開(kāi)發(fā)的技術(shù)規范與實(shí)踐精華總結

以下是本人對.Net平臺開(kāi)發(fā)實(shí)踐的一些點(diǎn)滴總結。這里的技術(shù)規范主要是開(kāi)發(fā)過(guò)程的代碼規范、數據庫設計規范、Com.Net互操作規范;實(shí)踐精華是對技術(shù)實(shí)踐過(guò)程中的部分總結。

一、代碼規范

良好的代碼風(fēng)格來(lái)自于同一的代碼規范。風(fēng)格良好的代碼不僅具備可讀性和可維護性,同時(shí)也給人行云流水、賞心悅目之快感。

Microsoft公司統計,基于微軟平臺的開(kāi)發(fā)中,有70-80%的印度工程師在完成同類(lèi)算法或者模塊時(shí),使用的代碼基本一致;而相同的調查中只有20%的中國工程師們是基本一致的。這說(shuō)明我們的代碼生產(chǎn)過(guò)程亟待規范。

實(shí)義命名

類(lèi)型、變量、常量、方法等標識符一律采用對應的英文實(shí)義;如果涉及到兩個(gè)獨立的實(shí)義單詞,則中間用下劃線(xiàn)間隔或者單詞首字母大寫(xiě)(兩種方式都可以);如果標識符的長(cháng)度超過(guò)了30個(gè)字母,則基本上以英文單詞發(fā)音的重讀音節取選出三個(gè)字母,如Repeaterrpt,Managementmgt。

大小寫(xiě)規則

目前一般有兩種大小寫(xiě)規則:

Pascal大小寫(xiě)形式,所有單詞第一個(gè)字母大寫(xiě),其他字母小寫(xiě)。

Camel大小寫(xiě)形式,除了第一個(gè)單詞,所有單詞第一個(gè)字母大寫(xiě),其他字母小寫(xiě)。

n         類(lèi)名使用Pascal大小寫(xiě)形式

public class HelloWorld(或者Hello_World,以下同,不再贅述)

{

 ...

}

n         方法使用Pascal大小寫(xiě)形式

public class HelloWorld()

{

 void SayHello(string name)

 {

  ...

 }

}

n         變量和方法參數使用Camel 大小寫(xiě)形式

public class HelloWorld()

{

 int totalCount = 0;

 void SayHello(string name)

 {

  string fullMessage = "Hello " + name;

  ...

 }

}

n         不要使用匈牙利方法來(lái)命名變量

以前,多數程序員喜歡把數據類(lèi)型作為變量名的前綴而m_作為成員變量的前綴。例如: string m_sName;int nAge;

然而,這種方式在.NET編碼規范中是不推薦的。所有變量都用Camel 大小寫(xiě)形式,而不是用數據類(lèi)型和m_來(lái)作前綴。

name,address,salary等代替nam,addr,sal。

別使用單個(gè)字母的變量象i,n,x 等。使用 index,temp等。用于循環(huán)迭代的變量例外:

如果變量只用于迭代計數,沒(méi)有在循環(huán)的其他地方出現,允許用單個(gè)字母的變量命名,而不是另外取實(shí)義名。

文件名要和類(lèi)名匹配,例如,對于類(lèi)HelloWorld,相應的文件名應為helloworld.cs。

縮進(jìn)和間隔

n         縮進(jìn)用TAB,不用 SPACES。

n         注釋需和代碼對齊。

n         遵循VS2005的自動(dòng)對齊規則,不要人為的調整。

n         用一個(gè)空行來(lái)分開(kāi)代碼的邏輯分組。

n         在一個(gè)類(lèi)中,各個(gè)方法的實(shí)現體必須用空行間隔,大括弧“{}”需獨立一行。

n         在每個(gè)運算符和括號的前后都空一格。如:

  If  ( showResult == true )

  {

   for  (  int i = 0; i < 10; i++ )

   {

    //

   }

  }

而不是:

  if(showResult==true)

  {

   for(int i= 0;i<10;i++)

   {

    //

   }

  }

良好的編程習慣

n         避免使用大文件。如果一個(gè)文件里的代碼超過(guò)300400行,必須考慮將代碼分開(kāi)到不同類(lèi)中。

n         避免寫(xiě)太長(cháng)的方法。一個(gè)典型的方法代碼在130行之間。如果一個(gè)方法發(fā)代碼超過(guò)30行,應該考慮將其分解為不同的方法。

n         方法名需能看出它作什么。別使用會(huì )引起誤解的名字。如果名字一目了然,就無(wú)需用文檔來(lái)解釋方法的功能了。

n         一個(gè)方法只完成一個(gè)任務(wù)。不要把多個(gè)任務(wù)組合到一個(gè)方法中,即使那些任務(wù)非常小。

n         使用C# 的特有類(lèi)型,而不是System命名空間中定義的別名類(lèi)型。如:

              int age;

              string name;

              object contactInfo;

       而不是:

              Int16 age;

              String name;

              Object contactInfo;

這么做是基于如下兩點(diǎn)原因:(1)規范性和一致性;(2)便于跨語(yǔ)言平臺的移植。

n         別在程序中使用固定數值,用常量代替。別用字符串常數,盡量用資源文件。

n         避免使用很多成員變量,聲明局部變量,并傳遞給方法。

n         不要在方法間共享成員變量,如果在幾個(gè)方法間共享一個(gè)成員變量,那就很難知道是哪個(gè)方法在什么時(shí)候修改了它的值。必要時(shí)使用enum,別用數字或字符串來(lái)指示離散值。

n         別把成員變量聲明為 public protected。都聲明為private 而使用 public/protected Properties。

n         不在代碼中使用具體的路徑和驅動(dòng)器名,使用相對路徑,并使路徑可編程。永遠別設想你的代碼是在"C:"盤(pán)運行。你不會(huì )知道,一些用戶(hù)在網(wǎng)絡(luò )或"Z:"盤(pán)運行程序。

n         應用程序啟動(dòng)時(shí)作些“自檢”并確保所需文件和附件在指定的位置。必要時(shí)檢查數據庫連接,出現任何問(wèn)題給用戶(hù)一個(gè)友好的提示。

n         如果需要的配置文件找不到,應用程序需能自己創(chuàng )建使用默認值。如果在配置文件中發(fā)現錯誤值,應用程序要拋出錯誤,給出提示消息告訴用戶(hù)正確值。錯誤消息需能幫助用戶(hù)解決問(wèn)題。

注釋

n         別每行代碼,每個(gè)聲明的變量都做注釋。在需要的地方注釋。

n         可讀性強的代碼需要很少的注釋?zhuān)绻械淖兞亢头椒ǖ拿己苡幸饬x,會(huì )使代碼可讀性很強并無(wú)需太多注釋。行數不多的注釋會(huì )使代碼看起來(lái)優(yōu)雅。

n         如果因為某種原因使用了復雜艱澀的原理,必須為程序配備良好的文檔和詳細的注釋。

n         對注釋做拼寫(xiě)檢查,保證語(yǔ)法和標點(diǎn)符號的正確使用。

 

二、數據庫設計規范

表格分類(lèi)與命名

n         數據表的分類(lèi)

u       系統表   支撐業(yè)務(wù)模型的數據表,如流程模型、系統管理相關(guān)表。

u       業(yè)務(wù)表   產(chǎn)品提供的針對業(yè)務(wù)的通用功能模塊相關(guān)表,如通用業(yè)務(wù)查詢(xún)等。

u       用戶(hù)表   用戶(hù)二次開(kāi)發(fā)使用的與具體業(yè)務(wù)相關(guān)的數據表。

n         數據表的命名

u       所有表格命名一律以字母“T”開(kāi)頭(Table),并且用實(shí)義單詞以下劃線(xiàn)“_”間隔。

u       系統表   系統表前綴為:TSYS_

u       業(yè)務(wù)表前綴為:TBIZ_

u       用戶(hù)表由用戶(hù)自行定義,但是建議不要與系統表和業(yè)務(wù)表的命名規則重復。

n         字段的命名

       字段的命名規則參照代碼標識符的命名規則,但是注意避開(kāi)數據庫的保留字。比如不要采用這樣的字段名:index,field,password,id,Oracle,SQL等等。

       對于涉及到技術(shù)核心的系統表,為了防止剖析,建議采用類(lèi)似“F1,F2,F3……Fn”的方式命名。但是不要采用“F0,因為這個(gè)名稱(chēng)在某些數據庫中不被允許,比如Interbase。

索引的建立

n         索引是一把雙刃劍,索引將提高查詢(xún)的效率,但是卻降低了insert/delete/update 的效率。

n         通常情況下,對數據的編輯頻度和時(shí)限要求遠遠低于對數據庫的查詢(xún)要求,因此對于記錄很多且頻繁查詢(xún)的數據表,必須建立索引。

n         大多數數據庫為主鍵字段自動(dòng)創(chuàng )建索引,注意為外鍵創(chuàng )建索引。

n         不要索引大字段,這樣作會(huì )讓索引占用太多的存儲空間。

n         盡量不要索引頻繁編輯的小型表。

n         identify字段不要作為表的主鍵與其它表關(guān)聯(lián),這將會(huì )影響到該表的數據遷移。如果考慮支持多數據庫,建議主鍵采用程序生成的唯一值。

n         如果一個(gè)大型表需要頻繁的做insert/delete/update操作,同時(shí)也需要做高并發(fā)量的查詢(xún),那么建議根據數據的訪(fǎng)問(wèn)頻度對表作拆分,而后建立索引。

過(guò)程與函數

數據庫廠(chǎng)商為了凸現自身的優(yōu)勢,都提供了豐富且個(gè)性化的過(guò)程與函數。

為了提升產(chǎn)品的伸縮性和數據無(wú)關(guān)性,請不要使用與特定數據庫相關(guān)的過(guò)程與函數,也不推薦采用Store Procedure,建議使用應用服務(wù)器的中間層業(yè)務(wù)對象。

字段/域的定義

n         盡量避免使用Blob,如果一定要用,請不要索引blob,并且不要定義多個(gè)blob。

n         不要使用日期字段,改用字符串char(19)替代,如:2008-12-09 12:22:08。

n         對于確定長(cháng)度的串,請固定字段類(lèi)型的長(cháng)度,如char80),不要采用varchar。

n         對于值類(lèi)型字段,請使用對應的數據庫值類(lèi)型,而不要用字符串。

三、Com.Net互操作規范

.NET 技術(shù)已經(jīng)成為微軟平臺的主流,但是在Win32時(shí)代開(kāi)發(fā)了很多COM、DCOM組件,由于在開(kāi)發(fā)COM組件時(shí)投入了大量的人力、財力,如何在.NET環(huán)境下重用這些COM組件就顯得更有意義。

.NET支持運行時(shí)通過(guò)COM、COM+、本地WinAPI調用與未托管代碼的雙向互操作性,要實(shí)現互操作性,必須首先引入.NET Framework System.Runtime.InteropServices命名空間。

C#的語(yǔ)法為:

using System.Runtime.InteropServices;

1.NET訪(fǎng)問(wèn)API

.NET允許C#訪(fǎng)問(wèn)未托管的DLL的函數。如要調用Windows User32.dllMessageBox函數

int MessageBox(HWND hwnd,LPCTSTR lpText, LPCTSTR lpCaption,UINT uType)

可以聲明一個(gè)具有DLLImport屬性的static extern方法:

using System.Runtime.InteropServices;

[DllImport(“user32.dll”)]

static ertern int MessageBox(int hwnd,string text,string caption,int type);

然后在代碼里面直接調用就可以了。這里要注意在調用返回字符串的API中使用StringBuilder對象。

2.NET訪(fǎng)問(wèn)COM組件

.NET調用COM組件比較容易,只要使用tlbimp.exe產(chǎn)生COM的裝配形式的WarpClass,然后在.NET項目中調用即可。

注意COM的類(lèi)型信息通過(guò)Type Library文件描述,.NET裝配件是自描述的。Tlbimp的作用是從COM組件及其類(lèi)型信息中產(chǎn)生自描述的裝配件。

1.編寫(xiě)Com組件

編譯生成一個(gè)ComAccount.dll。

2. 產(chǎn)生.NET可訪(fǎng)問(wèn)的包裝類(lèi)(assembly),使用TlbImp.exe產(chǎn)生.NET裝配件。

TlbImp /outNetAccount.dll ComAccount.dll

3.在.NET代碼中訪(fǎng)問(wèn)

.NET代碼只需引用NetAccount.dll,就可以像訪(fǎng)問(wèn).NET的裝配件一樣訪(fǎng)問(wèn)COM組件。

四、異常處理

異常處理的原則

n         在應用程序級(線(xiàn)程級)錯誤處理器中處理所有的一般異常。遇到“意外的一般性錯誤”時(shí),此刻錯誤處理器應該捕捉異常,給用戶(hù)提示消息,在應用程序關(guān)閉或用戶(hù)選擇“忽略并繼續”之前記錄錯誤信息。

n         不必每個(gè)方法都用try-catch,當特定的異??赡馨l(fā)生時(shí)才使用。比如,當寫(xiě)文件時(shí),處理異常FileIOException。

n         別寫(xiě)太大的 try-catch 模塊。如果需要,為每個(gè)執行的任務(wù)編寫(xiě)單獨的 try-catch 模塊。這將有助于找出哪一段代碼產(chǎn)生異常,并給用戶(hù)發(fā)出特定的錯誤消息。

n         如果應用程序需要,可以編寫(xiě)自己的異常類(lèi)。自定義異常不應從基類(lèi)SystemException派生,而要繼承于IApplicationException。

n         在開(kāi)發(fā)階段,不必在所有方法中捕捉一般異常??桃獾姆趴v異常,將幫助在開(kāi)發(fā)周期發(fā)現大多數的錯誤。

異常處理的提示

n         不要捕捉了異常卻什么也不做,看起來(lái)系統似乎在正常運行。如果這樣隱藏了一個(gè)異常,將永遠不知道異常到底是否發(fā)生,為什么發(fā)生。

n         發(fā)生異常時(shí),給出友好的消息給用戶(hù)。但要精確記錄錯誤的所有可能細節,包括發(fā)生的時(shí)間,和相關(guān)方法,類(lèi)名等。

n         永遠別用像“應用程序出錯”,“發(fā)現一個(gè)錯誤”等錯誤提示消息,而應給出類(lèi)似“更新數據庫失敗,請確保登陸id和密碼正確。”之類(lèi)的具體消息。

n         顯示錯誤消息時(shí),還應提示用戶(hù)如何解決問(wèn)題。如:“更新數據庫失敗,請確保登陸id和密碼正確。”,而不是僅僅說(shuō)“更新數據庫失敗”。

n         顯示給用戶(hù)的消息要簡(jiǎn)短而友好。但要把所有可能的信息都記錄下來(lái),以助診斷問(wèn)題。

異常處理的代碼實(shí)例

推薦如下異常處理模式:

void ReadFromFile ( string fileName )

 {

  try

  {

   // 讀文件.

  }

  catch (FileIOException ex)

  {

   // 記載異常日志

   // 重拋具有針對性的異常信息

   throw;

  }

 }

 

不推薦如下的異常處理模式:

void ReadFromFile ( string fileName )

 {

  try

  {

   // 讀文件

  }

  catch (Exception ex)

  {

   // 捕捉一般異常將讓我們永遠不知道到底是文件錯誤還是其他錯誤

   // 隱藏異常將我們永遠不知道有錯誤發(fā)生。

   return ""; 

  }

 }

 

五、對象實(shí)例的申請與釋放

.Net平臺的垃圾回收機制,可以自動(dòng)的dispose不再引用的對象實(shí)例,所以很多開(kāi)發(fā)人員并不主動(dòng)釋放申請的對象資源。事實(shí)上,在對象的生命周期結束之前是不會(huì )被釋放的。

但是,很多時(shí)候當對象處于生命周期之內時(shí),我們不再使用它,以便釋放資源提升系統效率。因此,主動(dòng)釋放申請的資源顯得很有必要。

永遠不要把力所能及的事情交給操作系統,及時(shí)釋放不再使用的資源是一個(gè)好習慣。

六、數據庫訪(fǎng)問(wèn)

數據庫訪(fǎng)問(wèn)永遠是系統的瓶頸,選擇高效、穩健的數據庫訪(fǎng)問(wèn)模式是產(chǎn)品性能的基礎保證。

n         永遠不要假設你的應用系統構建與某個(gè)數據庫之上,因此必須有統一的、透明的數據庫訪(fǎng)問(wèn)機制。

n         采用ADO.Net訪(fǎng)問(wèn)數據庫                基于效率和穩定性的考量,采用微軟平臺原生的數據庫訪(fǎng)問(wèn)模式ADO.Net。使用ADO.Net可以通過(guò)OLEDBODBC兩種模式訪(fǎng)問(wèn)數據庫,我們建議使用數據庫廠(chǎng)商提供的OLEDB模式,這種模式繞過(guò)了ODBC,使得數據庫的游標性能大大提升,效率更佳。

n         不使用第三方的數據持久層              使用類(lèi)似于Nhibernate之類(lèi)的第三方數據持久層工具雖然可以提高開(kāi)發(fā)的效率,但是卻降低了系統的性能和彈性。性能對于產(chǎn)品而言,遠遠比開(kāi)發(fā)效率重要的多,況且基于VS2005的開(kāi)發(fā),效率不是問(wèn)題。請記?。旱谌降墓ぞ哂肋h不能成為你的產(chǎn)品核心技術(shù);數據訪(fǎng)問(wèn)機制是系統的效率瓶頸,對

n         使用自主產(chǎn)權的數據對象                 直接采用ADO.Net封裝最底層的數據訪(fǎng)問(wèn)方法:插入、刪除和更新,以及事務(wù)管理等;客戶(hù)端和服務(wù)器端采用相同的數據訪(fǎng)問(wèn)機制,并設立連接緩沖池提升數據訪(fǎng)問(wèn)效率。

七、分布式事務(wù)管理

對于多層分布式應用而言,數據庫事務(wù)呈現出“遠程、分布”的特色,導致事務(wù)難以管理。

對于Ado.Net而言,事務(wù)綁定了數據庫連接,因此必須在數據訪(fǎng)問(wèn)對象中對每一個(gè)數據庫連接管理各自的事務(wù)或嵌套事務(wù)。如果要訪(fǎng)問(wèn)數據庫,服務(wù)器上的數據訪(fǎng)問(wèn)對象將自動(dòng)分配一個(gè)特定的連接,根據該連接ID執行數據操作;無(wú)論該事務(wù)分布于多少個(gè)遠程客戶(hù)端進(jìn)程,服務(wù)器數據對象只需要鎖定連接ID即可輕松進(jìn)行事務(wù)管理。

八、智能客戶(hù)端

    智能客戶(hù)端是易于部署和管理的客戶(hù)端應用程序,它綜合了瘦客戶(hù)端和胖客戶(hù)端的優(yōu)點(diǎn),通過(guò)統籌使用本地資源和到分布式數據資源的智能連接,提供快速響應的和豐富的交互式體驗。

智能客戶(hù)端分為Windows Form,Office Client,Mobile Client三種類(lèi)型,具有如下特點(diǎn):

n         利用本地資源

n         利用網(wǎng)絡(luò )資源

n         支持偶爾連接的用戶(hù)

n         提供智能安裝和更新

n         提供客戶(hù)端設備靈活性

    .NET 框架基類(lèi)庫內嵌了支持智能客戶(hù)端的豐富程序集,通過(guò)使用公共語(yǔ)言運行庫 (CLR),可以利用任何受到 .NET 支持的語(yǔ)言來(lái)開(kāi)發(fā)智能客戶(hù)端。

智能客戶(hù)端是瘦客戶(hù)段的強大替代品,也是微軟推薦的客戶(hù)端模式。盡量使用智能客戶(hù)端而不要使用瀏覽器。如果可以,請把你的客戶(hù)端系統構建在Office平臺上,如Outlook。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
.Net開(kāi)發(fā)面試題,筆試題
看看如何透過(guò)JavaScript調用C#函數 - 51CTO.COM
ASP.NET如何利用Jmail實(shí)現發(fā)送郵件功能
ASP.NET Ajax調用WCF服務(wù)的代碼示例
一份面試題
ASP.net中網(wǎng)站訪(fǎng)問(wèn)量統計方法
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久