代碼壞的味道20:純稚的資料類 (Data Class)

  所謂的Data Class是指:它們擁有一些欄位,以及用於訪問這些欄位的函數,除此之外一無長物。這樣的類只是不會說話的資料容器,它們幾乎一定被其他類過分細瑣的操控著。這些類早期可能擁有public欄位,果真如此你應該在別人注意到它們之前,立刻運用 Encapsulated Field (封裝欄位)將它們封裝起來。如果這些類含容器類的欄位,你應該檢查它們是不是得到了恰當的封裝;如果沒有,就運用 Encapsulated Collection

代碼的壞味道01:重複代碼(Duplicated Code)

  如果你在一個以上的地點看到相同的程式結構,那麼可以肯定:設法將它們和而為一,程式會變得更好。   同一個類的2個函數含有相同的運算式,這時可以採用Extract Method (提煉函數)提煉出重複的代碼,然後讓這2個地點都調用被提煉出來的那段代碼。   2個互為兄弟的子類內含相同運算式,只需對2個類都是用Extract Method (提煉函數),然後對被提煉出來的函數是用Pull Up Method

重構手法05:Introduce Explaining Variable (引入解釋性變數)

 你有一個複雜的運算式。將該複雜運算式(或其中一部分)的結果放進一個臨時變數,以此變數名稱來解釋運算式用途。if (Platform.ToUpperCass().indexOf("MAC") > -1 && (Browser.ToUpperCass().indexOf("Ie") > -1) && WasInitalized() )            {                //do something           

代碼壞的味道16:中間人 (Middle Man)

  對象的基本特徵之一就是封裝:對外部世界隱藏其內部細節。封裝往往伴隨委託。比如說你問你主管是否有時間參加一個會議,他就把這個訊息“委託”給他的記事簿,然後才能回答你。你沒必要知道這位主管到底使用傳統記事簿或電子記事簿或秘書來記錄自己的約會。         但是人們可能過度運用委託。你也許會看到某個類有一半的函數都委託給其他類,這樣就是過度運用。這時應該使用 Remove Middle Man (移除中間人),直接和真正負責的對象打交道。如果不幹實事的函數只有少數幾個,可以運用 Inline

加深認識與理解ADO.NET

ADO.NET有兩個基本的部分:DataSet和Managed

虛擬硬碟

前些時間看到有人在說用虛擬硬碟建立資料庫,存放檔案等等,就到網上找了有關這方面的知識。概念  所謂虛擬硬碟就是用記憶體中虛擬出一個或者多個磁碟的技術。   記憶體的速度要比硬碟快得多,就要利用這一點,在記憶體中虛擬出一個或多個硬碟就可以加快磁碟的資料交換速度,從而提高電腦的運行速度。  從上面我們可以看出:所謂“虛擬”有二:其一所謂“虛擬”首先是假的,其次是能夠起到所虛擬硬碟的功能。虛擬硬碟的目的無非是為了速度犧牲一些容量。 虛擬硬碟主要作用  1.增加訪問速度

系統減輕資料峰值辦法(MSMQ)

在做一個證券系統,伺服器接收的資料量特別頻繁,也是為了系統的可擴充性,系統設計如下:接收資料-->MSMQ隊列-->處理業務-->MSMQ隊列-->返回資訊,通過介面把資料接收存放到MSMQ實現。MSMQ可以應用到很多地方,現在把思路放出來,給各位朋友參考參考,或許已經過時了,但總希望能有人需要吧!首先引用命名空間:  using System.Messaging;        private static bool InsertData(string mqName,

重構手法01:Extract Method (提煉函數)

你有一段代碼可以被組織在一起並獨立出來。將這段代碼放進一個獨立函數,並讓函數名稱解釋該函數的用途。       void PrintOwing(double amount)        {            PrintBanner();            //print details            Console.WriteLine("name:"+_name);            Console.WriteLine("amount:"+_amount);       

細說參考型別string StringBuilder class的特點

string是參考型別,但它也有一些實值型別的特徵。 string傳值還是傳引用,C#的string聲明是一個String類,當然是傳引用。不過,之所以有這個疑惑,多數是因為這個情況: string a = "aaa"; string b = a; b = "bbb"; 這時候輸出結果,結果發現a的值還沒有變,分析一下: string a = "aaa"; // a-->new String("aaa") string b = a; // b-->a, 傳引用 b = "bbb";

實現頁面提交時顯示”正在處理..”

我們只要在aspx頁面上加一個DIV一個button就可以來實現就可以達到目的, DIV設定如下:Code highlighting produced by Actipro CodeHighlighter

web控制項開發系列(四) 自訂控制項屬性(下)

控制項在WEB開發時經常要用到,雖然有部分已經存在工具箱裡,但有時總需要根據自己的要求,開發一些合適自己的控制項。接上一節,已經說過了控制項的屬性, 例如,我們需要一組屬性的集合時,這時我們需要用到的就是複雜屬性了,簡單的屬性滿足不了我們的要求,例如:大家熟悉的字型資訊設定那欄。下面為大家介紹一下實現的幾種代碼與注意細節一、連字號形式的複雜屬性標記<asp:Button ID="Button1" runat="server" Font-Bold="True"

WinForm控制項自動提示你定義相似的項值

在很多時候,WinForm也需要像WebForm那樣,輸入部分內容時,會自動顯示相關或相似的更多內容,百度與google都使用這樣的方法.這樣方便很多使用者更簡單使用你設計的系統.在winform設計中,你只需要使用他們的AutoCompleteMode,AutoCompleteSource二個方法.下面是樣本:首先建立一個項目,在Form1上拉入一個TextBox,與ComboBox控制項.進去代碼介面,在Form1_load事件中寫進下面代碼:Code highlighting

物件導向編程設計模式–簡單原廠模式講解(曆史上最簡單明白的例子)

工作之餘,在看資料過程中發現一個極易理解的簡單原廠模式的例子,自己親自試練一番,感覺對這個設計模式不熟悉的朋友,一看馬上就知道是什麼回事了。簡單原廠模式根據提供給它的資料,返回幾個可能類中的一個類的執行個體。通常它返的類都有一個共同的你類和共同的方法,但每個方法執行的任務不同,而且根據不同的資料進行了最佳化。簡單原廠模式是屬於建立型模式,又叫做靜態Factory 方法(Static Factory Method)模式,但不屬於23種GOF設計模式之一。下面進行一個程式碼範例:       

string.Compare使用筆記

Compare 有多個重載函數,列出最簡單的一個。public static int Compare (string strA, string strB)傳回值* 小於零,strA 小於 strB;* 零,strA 等於 strB;* 大於零,strA 大於

.NET3.0 .NET3.5 擴充方法的介紹與使用

今天在看到有人提出方法中用過this的問題, 然後感覺自己也需要在這裡作個記錄. 順便提一下其用法與細節,注意:在2.0下面使用會出現引用錯誤.因為這個是3.0後的產物擴充方法的作用: 可以直接對.netFrame類庫進行擴充,減少代碼量.使用時應注意的問題: 1、所在類的類名在用做擴充方法的時候無效2、擴充方法必須是在靜態類中的靜態方法,靜態方法的格式有特殊要求 3、擴充方法也可以當作普通的靜態方法使用

web控制項開發系列(-) 基礎介紹

控制項在WEB開發時經常要用到,雖然有部分已經存在工具箱裡,但有時總需要根據自己的要求,開發一些合適自己的控制項。web控制項開發已經成為WEB程式員必備的知識。有過WEB開發的朋友都知道,建立一個WEB項目,Default頁面顯示的資訊,好多人都會有Page_Load事件中進行處理,這就對了。這個是Page頁面的生命週期,控制項也一樣有自己的生命週期。當你瞭解生命週期後,就不奇怪,為什麼有部分代碼要寫在Page_Load事件中了。生命週期大概有如下幾個:·執行個體化(Instantiate)控

DataGridView行的標題

 datagridView的Rows裡面有個HeaderCell可以通過value來設定列名文字,但是一排序後,文字就清空了. 所以這種辦法是不行的.下面我介紹一種新的辦法..就是datagridview產生行時,在列名那寫進文字,這樣排序完成後也不會改變原來的數值 private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e){SolidBrush B = new

使用IFormatProvider打造自己個性格式化方法

C#中提供了好多格式化數字或字串的方法,但在項目開發中,有很多自己需要的格式無法實現,那就需要我們去定義IFormatProvider,其實很簡單,只需繼承二個介面,然後實現二個方法就可以了。ICustomFormatter介面中實現Format方法:string Format (string format,Object arg,IFormatProvider formatProvider)IFormatProvider介面中實現GetFormat方法:object

sideBar控制項的使用方法

最近私下幫朋友做了個類似QQ一樣的聊天工具,(只是類似,功能少了N多),其中那個分組面板就是了sideBar這個控制項,但查了好久,網上都沒有詳細的介紹,在這裡簡單介紹一下吧!下載方法:到百度或google上面用sideBar.dll搜一下就可以下載了第一步就是在工具箱裡面把這個控制項添加進來,工具箱上添加一個選項卡,點擊右鍵,添加項,再選到剛才下載到的DLL檔案。下面介紹一下這個控制項的屬性imageList 

利用Assembly動態載入程式集

在程式開發中,經常需要調用到外部的DLL,所以需要反射技術,動態載入程式集,方便調用.例如我們建立一個這樣的類:CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->namespace User{    public class ShowName    {        public ShowName()            : this("")

總頁數: 61357 1 .... 7044 7045 7046 7047 7048 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.