top
 0982.566.782
Thiet ke web hai phong chuyen nghiep
Thiết kế website, quảng cáo trực tuyến, xây dựng phần mềm, dịch vụ domain-hosting

Thiết kế web - Chuẩn viết mã lệnh cho ASP.NET (Phần 2) - Các kỹ thuật tối ưu mã

Ngày đăng: 22 - 08 - 2011

Chuẩn viết mã lệnh cho ASP.NET (Phần 2) - Các kỹ thuật tối ưu mã

Đăng bởi: Thiết kế web Hải Phòng - HPSOFT 

 

0.1 Cải tiến chất lượng mã

0.1.1 Sử dụng các Assembly

0.1.2 Sử dụng từ khoá sealed (C#) và NotOverridable (VB .NET)

  • Sử dụng từ khóa sealed (C#) hay NotOverridable (VB .NET) ở mức lớp và   

      mức phương thức khi thích hợp

 

  • Các lớp được đánh dấu bới từ khoá sealed (NotInheritable) là các lớp đóng   kín, không  cho phép các lớp khác kế thừa từ các lớp này – các phương thức trong các lớp này sẽ tự động được biên dịch và tối ưu trực tiếp thành dạng mã inline (vì không có các hàm  hay phương thức ảo (virtual))

 

0.1.3 Sử dụng các hàm ảo virtual (C#) và overidable (VB) ít nhất có thể

  • Khi các hàm được đánh dấu với từ khoá  virtual, để hỗ trợ chồng (override)  

      phương thức trong các lớp dẫn xuất, các trình biên dịch phải xây dựng một  

      bảng ảo (virtual table) chứa các địa chỉ hàm để xác định hàm cần gọi trong lúc 

      chạy -> Tiêu tốn bộ nhớ và thời gian chạy

 

  • Vì vậy ta chỉ sử dụng các hàm loại này khi có ràng buộc về yêu cầu thiết kế 

      chứ không nên lạm dụng

0.1.4 Chồng (override) các hàm Finalize & Dispose để quản lý tài nguyên

0.1.5 Sử dụng các khối Try-Cach-Finally để xử lý các ngoại lệ  (Exception)

0.1.6 Sử dụng lớp StringBuilder để tối ưu các thao tác cộng dồn trên xâu ký tự

Lóp StringBuilder được sử dụng để tối ưu cho các phép toán cộng dồn các xâu ký tự nhằm tối ưu sử dụng bộ nhớ, Ví dụ

 

Ta có mảng các xâu sau:

String[] strs = {“This”, “is”, “a”, “string”}

Để ghép các xâu trên thành một xâu tổng, ta thưòng làm như sau:

String result = “”;

for (int i = 0; i < strs.Length; i++)

                        result += strs[i];

            return result;

 

Để tối ưu hơn ta nên sử dụng StringBuilder như sau:

            StringBuilder result = new StringBuilder();

            for (int i = 0; i < strs.Length; i++)

                        result.Append(strs[i]);

            return result.ToString();

0.1.7 Chồng hàm Equals trên các kiểu giá trị bạn thiết kế

Các kiểu giá trị (ValueType) được cấp phát trên Ngăn xếp (Stack), khi gọi phương thức Equals trên các đối tượng kiểu này gây ra hệ thống phải chuyển đổi các kiểu giá trị thành kiểu tham chiếu (ReferenceType) – Hay theo .NET còn gọi chuyển đổi này là Boxing, Sau khi thực hiện chuyển đổi, Framework tiếp tục dùng kỹ thuật Reflection để gọi hàm Equals -> Mất thời gian. Bằng cách cung cấp một cơ chế thực thi tuỳ biến sẽ tối ưu được thời gian xử lý. Ví dụ lớp số phức sau:

 

public struct Complex

{

            private int real;     // Phần thực

            private int image; // Phần ảo

 

            public Complex(int real, int image)    

            {

                        this.real = real;

                        this.image = image;

}

 

// Chồng phưong thức Equals cho lớp số phức

public override bool Equals(object obj)

{

            if (! (obj is Complex))

                        return false;

 

            Complex comp = obj as Complex;

            if (com != null)

                        return (this.real == comp.real && this.image == comp.image)

 

            return false;

}

}

0.1.8 Chọn sử dụng các cấu trúc dữ liệu Collection:

1.ArrayList

ArrayList là danh sách được tổ chức dưới dạng mảng, cho phép truy cập nhanh

chóng dựa vào chỉ số của các phần tử trong danh sách

 

ArrayList thích hợp cho việc lưu trữ các phần tử theo cấu trúc tuyến tính, thay đổi liên tục về số lượng các phần tử, hỗ trợ cho các thao tác thêm (Add), Chèn (Insert), loại bỏ (Remove) các phần tử

 

ArrayList cũng đựợc tối ưu cho các phép toán tìm kiếm (Searching) trên các mảng đã được sắp xếp

 

Nên tránh sử dụng ArrayList để lưu trữ các xâu ký tự, hãy sử dụng StringCollection thay vì ArrayList

2.StringCollection

StringCollection cũng giống như ArrayList, tuy nhiên nó là các ArrayList được tối ưu cho các phần tử dữ liệu là các Xâu ký tự

 

3.Hashtable

HashTable là cấu trúc dữ liệu biểu diễn một tập các phần tử dữ liệu dạng cặp Key/Value, cho phép truy cập các phần tử dựa vào chỉ số hoặc khóa (key) của phần tử đó

 

HashTable được tối ưu cho việc lưu trữ một tập dữ liệu lớn, ít thay đổi về mặt số lượng (Vì xảy ra việc băm lại các giá trị khóa), khả năng truy xuất nhanh chóng

 

Dùng Hashtable khi ta có một tập dữ liệu lớn, ít thay đổi về mặt số lượng, và cần truy xuất thường xuyên

                       

4.NameValueCollection

NameValueCollection cũng được sử dụng giống như Hashtable, ngoại trừ là các phần tử cặp Key/Value đều là các dữ liệu kiểu Xâu ký tự

 

5.Stack

6.Queue

7.SortedList

Là Hashtable với các khóa (Key) đă được sắp xếp

8.ListDictionary

------------------------------------

 

Thông tin liên hệ:

CÔNG TY CỔ PHẦN GIẢI PHÁP PHẦN MỀM HẢI PHÒNG - HPSOFT




Chia sẻ
Share on Facebook


.: Các tin thiết kế web khác :.

thiet ke web Hai Phong123

Tư vấn thiết kế web
Thiet ke web Hai Phong ho tro
Tư vần thiết kế website, hỗ trợ trực tuyến

     Hotline: 0982.566.782

   Kinh Doanh     Thiet ke website Hai Phong yahoo   Thiết kế web Hải Phòng Skype     Email tu van thiet ke web




Khách hàng nói về chúng tôi
Công ty thiết kế web Hải Phòng

CEO Nguyễn Văn Công

Công ty TNHH TMDV Trường Hưng. Tel: 0936 847 357

CEO Hà Thị Thanh Xuân

Công ty TNHH Cửa Cuốn Đại Phúc. Tel: 0912.665.189

CEO Tạ Thị Hương

Công ty In Phi Long. Tel: 0936.434.222

CEO Nguyễn Tuấn Dũng

Chủ tịch hệ thống Yoga Vàng Việt Nam. Tel: 0968.25.6868