Các lỗi thường gặp trong visual studio 2023 năm 2024

Hay còn gọi là lỗi biên dịch [Compiler error] Đây là loại lỗi sơ đẳng nhất trong lập trình. Thường là do bạn gõ sai cấu trúc của ngôn ngữ [ví dụ như thiếu dấu kết thúc một câu lệnh, một số ngôn ngữ từ khoá phân biệt chữ hoa, chữ thường thì lại gõ chữ hoa, v.v. gọi nôm na là lỗi chính tả]. Chương trình sẽ không thể biên địch được khi gặp lỗi này. Các trình biên dịch sẽ khi biên dịch code, khi gặp lỗi ở dòng code nào thì sẽ báo lỗi. Các trình soạn thảo [Editor] hoặc các IDE tiên tiến hiện nay như Visual Studio, Eclipse, Android Studio, NetBean, v.v. đều hỗ trợ cho người lập trình một cách trực quan để xử lý lỗi này. Một vài ví dụ cho lỗi này:

Ví dụ 1

  
if [a==b] then a+=b;  

Lỗi cú pháp vì trong C++ lệnh if phải viết là

  
if [a==b] a+=b;  

Ví dụ 2

  
class SV  
{  
   int ma sv; //Lỗi viết sai tên biến, khai báo biến không được có khoảng trắng  
   void nhap[] {  
     for [i=0; i>i;  
   }  
} //lỗi thiếu dấu ;
void main //lỗi thiếu dấu [] sau hàm main[]  
{  
}  

2. Lỗi thực thi [Runtime error]

Xảy ra bất ngờ khi chương trình đang chạy Loại lỗi này thường xảy ra do người lập trình viết code ẩu, không lường hết các trường hợp xảy ra, khiến chương trình đang chạy thì bị lỗi treo màn hình, thoát khỏi chương trình hoặc thoát luôn chương trình, v.v. Lỗi này có thể dễ dàng phát hiện bằng cách Debug.

Ví dụ 1

  
float s=0;  
for [int i=0; i Fibonacci.IsInFibonacciSequence[x]];

3. Ép kiểu sử dụng ‘[T]’ thay vì ‘as [T]’

Đây là lỗi phổ biến của các developer sử dụng cách ép kiểu ‘[T]’ thay vì ‘as [T]’. Và thưowngf thì không có tác động tiêu cực nào nhưng trong trường hợp không thể ép được thì ép kiểu [T] sẽ throw ra InvalidCastException còn toán tử “as” sẽ trả về null nếu không thể ép kiểu

//INCORRECT var woman = [Woman]person;

//CORRECT var woman = person as Woman;

.4. Không sử dụng Mapping khi rewrite các Properties

Có rất nhiều các thư viện mạnh mẽ dùng cho việc mapping trong C# [ví dụ như AutoMapper]. Chỉ cần vài dòng có là bạn có thể mapping giữa 2 đối tượng với nhau ngay cả khi tên thuộc tính không giống nhau các bạn cũng có thể thêm một số logic để chúng có thể map dữ liệu ngon lành

5. Throw exception không đúng cách.

Lập trình viên C# thường quên rằng khi họ throw một exception sử dụng “throw ex” họ sẽ mất stack trace. Nó làm cho việc debug khó khăn hơn và khó tiếp cận message lỗi hơn. Đơn giản chỉ cần “throw” là được, không dữ liệu Exception nào bị mất và toàn bộ Excpetion sẽ được trả về dễ dàng.

//INCORRECT try {    //some code that can throw exception [...] } catch [Exception ex] {    //some exception logic [...]    throw ex; }

//CORRECT try {    //some code that can throw exception [...] } catch [Exception ex] {    //some exception logic [...]    throw; }

6. Không sử dụng “using” cho việc hủy đối tượng

Nhiều C# developer không biết việc sử dụng từ khóa “using” không chỉ để thêm mới 1 thư viện ở đầu file .cs mà còn để hủy đối tượng sau khi thực hiện tác vụ, luôn sử dụng lệnh “using” để chắc chắn rằng đối tượng đó đã được hủy

//the below code: using[SomeDisposableClass someDisposableObject = new SomeDisposableClass[]] {    someDisposableObject.DoTheJob[]; } //does the same as: SomeDisposableClass someDisposableObject = new SomeDisposableClass[]; try {    someDisposableObject.DoTheJob[]; } finally {    someDisposableObject.Dispose[]; }

7. Sử dụng “foreach” cho tất cả mọi thứ ngoài Collection

Hãy nhớ là nếu bạn muốn lặp qua bất cứ thứ gì không phải Colleciton [ ví dụ là 1 Array], sử dụng vòng lặp “for” sẽ hiệu quả hơn nhiều so với sử dụng “foreach”. Nguyên nhân là cả 2 loại vòng lặp này được hiểu và biên dịch theo cách khác nhau. Vì “foreach” khi biên dịch ra JIT [Just In Time] code có nhiều thao tác hơn và khai báo nhiều biến hơn so với vòng “for” như thế giảm performance của hệ thống.

8. Đọc, ghi dữ liệu với DB nhiều hơn 1 lời gọi

Đây là lỗi rất phổ biến, đặc biệt là các junior developer và đặc biệt là sử dụng ORM như Entity Framework. Tất cả các lời gọi DB đều chiếm một khoảng thời gian nhất định nên việc giảm số lượng tối thiểu lời gọi vào DB là điều rất quan trọng. Có nhiều cách để làm việc đó:

  • Sử dụng fetching [Eager Loading]
  • Sử dụng Transaction
  • Trong trường hợp logic phức tạp nên sử dụng trong Store Procedure.

Trên đây là một trong số hàng trăm lỗi phổ biến của các C# developer. Nếu bạn biết hoặc thấy có ý kiến bổ sung cho lỗi nào vui lòng chia sẻ ở comment phía dưới.

Tác giả: Bạch Ngọc Toàn

Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.

Chủ Đề