HACKIS - Hacking Internet Security
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Search
 
 

Display results as :
 


Rechercher Advanced Search

Latest topics
» Tuyệt Kỹ Đong Giai Chân Kinh (tuyệt Kỹ cua trai)
Một vài điều cần lưu ý trong lập trình C# EmptyThu Aug 23, 2012 5:38 am by Admin

» Tuyệt kỹ cua giai
Một vài điều cần lưu ý trong lập trình C# EmptyThu Aug 23, 2012 5:36 am by Admin

» NETCAT.........
Một vài điều cần lưu ý trong lập trình C# EmptyMon Aug 13, 2012 6:35 am by Admin

» Bảo mật CSDL bằng phương pháp mã hóa.
Một vài điều cần lưu ý trong lập trình C# EmptyTue Apr 17, 2012 10:04 pm by Admin

» Hàm mã hóa MD5 bằng JavaScript
Một vài điều cần lưu ý trong lập trình C# EmptyTue Apr 17, 2012 10:03 pm by Admin

» Giá của món quà
Một vài điều cần lưu ý trong lập trình C# EmptyFri Apr 13, 2012 6:01 am by Admin

» Sẽ chỉ yêu ai?
Một vài điều cần lưu ý trong lập trình C# EmptyFri Apr 13, 2012 6:01 am by Admin

» Cách đọc bảng chữ cái!
Một vài điều cần lưu ý trong lập trình C# EmptyThu Apr 12, 2012 10:37 pm by Admin

» Gắn trojan, keylog, virus vào website, forum
Một vài điều cần lưu ý trong lập trình C# EmptyTue Apr 10, 2012 1:14 am by Admin

Affiliates
free forum


Một vài điều cần lưu ý trong lập trình C#

Go down

Một vài điều cần lưu ý trong lập trình C# Empty Một vài điều cần lưu ý trong lập trình C#

Post  Admin Thu Mar 29, 2012 1:00 am

1.Sử dụng String.Format
Thông thường ta hay khai báo 1 biến kiểu chuỗi như sau

string query = "UPDATE User SET Name='" + name + "' WHERE Id=" + id;

Đoạn code trên nhìn khá là rắc rối,nếu để ý thì nó sẽ tạo ra 3 bản chuỗi điều này thực sự không cần thiết trong ứng dụng của bạn.
Cách làm tốt hơn là bạn nên sử dụng String.Format,nó làm cho đoạn code của bạn trông sáng sủa hơn

string query = string.Format("UPDATE User SET Name='{0}' WHERE ID={1}", name, id);

2.Sử dụng quá nhiều khối try-catch
Thông thường trong thân hàm Main ta thường gọi các hàm con , mà trong mỗi hàm con đó ta thường tạo 1 khối try-catch đễ bẫy lỗi.Bạn tham khảo đoạn code mẫu sau

public class NestedExceptionHandling
{
public void MainMethod()
{
try
{
ChildMethod1();
}
catch (Exception exception)
{
//Handle exception
}
}

private void ChildMethod1()
{
try
{
ChildMethod2();
}
catch (Exception exception)
{
//Handle exception
throw;
}
}

private void ChildMethod2()
{
try
{
//some implementation
}
catch (Exception exception)
{
//Handle exception
throw;
}
}
}

Bạn để ý nếu 3 hàm trên chỉ tung ra cùng 1 biệt lệ,mà được xử lý nhiều lần thì chắc chắn sẽ rất tốn chi phí cho ứng dụng của ta.
Và để tránh điều này ta chỉ cần sử dụng 1 khối try-catch ở trong thân hàm Main
public class NestedExceptionHandling
{
public void MainMethod()
{
try
{
ChildMethod1();
}
catch(Exception exception)
{
//Handle exception
}
}

private void ChildMethod1()
{
ChildMethod2();
}

private void ChildMethod2()
{
//some implementation
}
}

3.Không nên sử dụng vòng lặp foreach cho Collections lớn
Thông thường mình hay sử dụng vòng lặp foreach thay cho vòng lặp for,vì foreach dễ sử dụng hơn.
Tuy nhiên khi làm việc với dữ liệu lớn thì for hay foreach cái nào nhanh hơn ?.
Ta xem đoạn code dưới đây kêt hợp với thể hiện Stopwatch để đo thời gian.

static void Main(string[] args)
{
DataTable dt = PopulateData();
Stopwatch watch = new Stopwatch();
//For loop
watch.Start();
for (int count = 0; count < dt.Rows.Count; count++)
{
dt.Rows[count]["Name"] = "Value";
}
watch.Stop();
Console.WriteLine("Time For loop: {0}", watch.Elapsed.TotalSeconds);
//Foreach loop
watch.Start();
foreach (DataRow row in dt.Rows)
{
row["Name"] = "Value";
}
watch.Stop();
Console.WriteLine("Time For Each loop: {0}", watch.Elapsed.TotalSeconds);
Console.ReadKey();
}
Với đoạn code trên khi sử dụng vòng lặp foreach tốn :0.0778163s
Còn vòng lặp for tốn :0.134186s

4.Sử dụng các phương thức có sẵn
Chúng ta thường không để ý đến các phương thức có sẵn.Giả sử khi muốn kiểm tra tính hợp lệ của dữ liệu,thông thường ta sẽ viết 1 hàm để kiếm tra tính hợp lệ của dữ liệu đó.
Đoạn code mẫu dưới đây dùng để kiểm tra xem chuỗi đã cho có phải là số hay không.

public bool CheckIfNumeric(string value)
{
bool isNumeric = true;
try
{
int i = Convert.ToInt32(value);
}
catch(FormatException exception)
{
isNumeric = false;
}
return isNumeric;
}

Chúng ta có cách làm hay hơn là sử dụng phương thức sẵn có TryParse

int output = 0;
bool isNumeric = int.TryParse(value, out output);

Sử dụng TryParse sẽ làm cho đoạn code của bạn chạy nhanh hơn và sáng sủa hơn.

5.Sử dụng khai baó Using
Thông thường khi chúng ta không sử dụng đối tượng thì chúng ta sử dụng phương thức Dispose() để hủy đối tượng đó.
Đoạn code mẫu dưới đây sẻ hủy đối tượng SqlConnection khi ta không cần sủ dụng tới nó

public void MethodUsing()
{
SqlConnection connection = null;
try
{
connection = new SqlConnection("itforfun");
connection.Open();
//Do Something
}
catch (Exception exception)
{
//handle exception
}
finally
{
connection.Close();
connection.Dispose();
}
}

Dưới đây là cách sử dụng Using

public void MethodUsing()
{
using (SqlConnection connection = new SqlConnection("itforfun"))
{
connection.Open();
//Do Something
}
}

Bạn để ý khi sử dụng using thì ta không cần sử dụng khối try-catch dù có biệt lệ xảy ra, cũng không cần sử dụng phương thức Dispose() để giải phóng dữ liệu.

6.Sử dụng tên cột thay cho indexer trong DataTable
Thông thường ta thường sử dụng chỉ số cột khi muốn tương tác với DataTable.
Đoạn code dưới đây sử dụng chỉ số cột để gán dữ liệu :

public class MyClass
{
public void MyMethod()
{
// Gán dữ liệu vào DataTable
DataTable dt = DataAccess.GetData();
foreach (DataRow row in dt.Rows)
{
// Gán dữ liệu thông qua chỉ số cột.
int empId = Convert.ToInt32(row[0]);
}
}
}

Trong đoạn code trên khi bạn thay đổi thứ tự cột trong cơ sở dữ liệu thì đoạn code của bạn sẽ hiển thị không đúng với mong muốn.
Vì thế để khắc phục vấn đề trên bạn nên sử dụng tên cột

public class MyClass
{
private const string COL_EMP_ID = "itforfun";
public void MyMethod()
{
DataTable dt = DataAccess.GetData();
foreach (DataRow row in dt.Rows)
{
int empId = Convert.ToInt32(row[COL_EMP_ID]);
}
}
}

Đoạn code trên sẽ luôn hiển thị đúng theo yêu cầu của bạn dù bạn đã thay đổi thứ tự cột trong cơ sở dữ liệu.
Kết Luận:
Trên đây chỉ là một vài điều cần lưu ý trong lập trình,hi vọng bạn có thể sửa chữa được những sai lầm của mình nhờ bài viết trên.
Admin
Admin
Admin

Tổng số bài gửi : 782
Join date : 2009-08-15

https://hackis.forumvi.com

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum