Các lỗi phổ biến khi học lập trình C#

Trong khi làm việc với những người mới bắt đầu code, tôi đã phải nhắc những lỗi cơ bản bị gặp nhiều lần. Đó là các lỗi rất nhiều người gặp phải và rất dễ nhớ. Tuy nhiên nếu bạn là 1 coder không để ý đến chúng, chúng có thể là nguyên nhân dẫn đến rất nhiều các vấn đề ảnh hưởng đến chất lượng phần mềm của bạn. Vì thế tôi quyết định liệt kê ra các lỗi căn bản khi học lập trình C#:

Nối chuỗi thay vì sử dụng StringBuilder

Việc nối chuỗi là một thao tác lặp đi lặp lại rất nhiều lần trong việc lập trình của bạn. Chuỗi có sẵn sẽ được thêm phần mới vào đồng thời được sao chép sang vị trí mới. Điều này là không tối ưu. Chúng ta có cách giải quyết khác là sử dụng StringBuilder sẽ giữ nguyên được vị trí bộ nhớ. Mà không thực hiện hành động sao chép. Làm theo cách này sẽ tăng được hiệu suất rất nhiều đặc biệt là khi bạn thực hiện hàng trăm thao tác append.

LINQ – Sử dụng ‘Where’ với ‘First’ thay vì FirstOrDefault

Rất nhiều bạn mới bắt đầu code lấy ra một tập các phần tử. Bằng cách sử dụng mệnh đề Where và trả về đối tượng đầu tiên. Điều này không nên vì phương thức ‘First()’ cũng có tác dụng tương tự như Where. Và bạn sẽ gặp Exception khi sử dụng “First()” nếu không có dữ liệu. Vì vậy để tốt hơn chúng ta nên dùng FirstOrDefault(). Khi sử dụng FirstOrDefault() nếu không có giá trị nào được tìm thấy, thay vì throw ra Exception thì nó sẽ  trả về giá trị mặc định của kiểu dữ liệu đó.

hoc-lap-trinh-c-shap-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ường thì không có tác động tiêu cực nào, ép kiểu (T) sẽ throw ra InvalidCastException trong trường hợp không thể ép kiểu được.

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). Ngay cả khi tên thuộc tính không giống nhau bạn cũng có thể mapping giữa 2 đối tượng với nhau chỉ với vài dòng code.

Throw exception không đúng cách

Những người mới học lập trình 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.

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

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.

hoc-lap-trinh-c-shap-cc041801cb-2

Đọ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.

Với bài chia sẻ trên hy vọng sẽ giúp ích cho bạn. Stanford sẽ cung cấp loạt video hướng dẫn học lập trình C# miễn phí với các kiến thức từ cơ bản đến nâng cao.

Link trọn bộ video:goo.gl/bsMgUU

——

STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ

Hotline: 0963 723 236 – 0866 586 366

website: https://stanford.com.vn

Nhận xét