5 vấn đề quan trọng nhất trong C#

Mình là 1 super fan của nguyên tắc “20/80”. Nguyên tắc này nói rằng khi bạn cố gắng học hay làm một thứ gì đó, hãy tìm ra 20% quan trọng nhất để thực hiện, 20% được coi là quan trọng nhất khi nó có thể cover 80% còn lại. Tuy nhiên để tìm ra được phần quan trọng nhất không phải là chuyện dễ, nó đòi hỏi bạn phải có kinh nghiệm, cộng thêm một chút thời gian nghiên cứu. Nhưng một khi bạn đã luyện được kỹ năng “20/80” thì việc học một thứ gì đó sẽ dễ dàng hơn rất nhiều.

Áp dụng quy tắc mình nói ở trên cho việc học C#. Thanh niên 18 tuổi mới lớn này có rất nhiều tính năng khác nhau, được Microsoft update qua nhiều năm liền. Vì vậy việc học nó cũng tốn kha khá thời gian. Để rút ngắn thời gian, hay nói đúng hơn là nắm được những tính năng quan trọng nhất của ngôn ngữ này, bạn cần ai đó giúp đỡ. Và dĩ nhiên rồi, ai đó chính là mình, hôm nay mình sẽ giúp bạn chỉ ra những vấn đề quan trọng nhất trong C# mà bạn cần nắm rõ để có thể tận dụng hết sức mạnh của nó.

1. Lập trình hướng đối tượng (OOP)

OOP không phải vấn đề của riêng C#, nhưng nó là vấn đề bạn cần hiểu cặn kẽ khi lập trình với C#. Nếu không, khả năng cao bạn mãi mãi chỉ là một thợ gõ phím mà thôi.
alt text
Trước thời của chúng ta, khá lâu về trước, thế giới tồn tại một thứ gọi là procedure programming, dẫn đầu bởi đại sư Dennis Ritchie (cha đẻ C). Procedure programming về cơ bản tạo ra các chương trình thông qua các function. Rất nhiều function.

Các chương trình bắt đầu lớn lên, nhiều code hơn. Các tiền bối bắt đầu gặp khó khăn trong việc tổ chức, thiết kế code do số lượng function quá lớn. Rồi chẳng biết như thế nào, ai đó bắt đầu có những suy nghĩ lạ lùng về cách một chương trình nên được thiết kế. Từ đó lập trình hướng đối tượng – Object oriented programming dần được sử dụng rộng rãi, điều này làm cho đại sư Dennis Ritchie ấm ức mãi về sau này.

Java, một ngôn ngữ lập trình thuần hướng đối tượng, ngôn ngữ đã từng là kẻ đứng đầu thế giới lập trình. Một ngôn ngữ được xem là thuần hướng đối tượng khi nó được xây dựng dựa trên các khái niệm hướng đối tượng. Java đã làm xuất sắc điều này, cộng thêm support từ nhiều phía nên đã được cả thế giới ưa chuộng.

Và rồi, có thể là Bill Gate hay ai đó ở Microsoft nghĩ rằng họ nên có một ngôn ngữ giống hệt Java, chỉ khác mỗi cái tên thôi. Bằng một cách nào đó, có thể là copy/ paste code, thế là chúng ta có C# – một ngôn ngữ lập trình thuần hướng đối tượng.

Mình đùa thôi, họ không copy/ paste đâu, Microsoft đã đầu tư rất nhiều vào C#, vì vậy, theo mình thì ngày nay C# đã vượt qua java ở khá nhiều mặt.

Thật ra thì bạn cũng không cần để ý đến câu chuyện dài dòng mình kể ở trên đâu, cái bạn cần chú ý là C# là một ngôn ngữ thuần hướng đối tượng. Từ các tính năng nhỏ nhặt nhất, cho đến cách build các hệ thống lớn nhất đều dựa trên ý tưởng hướng đối tượng. Vì vậy bạn hãy cố gắng tìm hiểu xem đằng sau các keyword như class, object, interface, private, public… là cái gì, tại sao nó lại được thiết kế như vậy. Điều này sẽ giúp cho khả năng thiết kế chương trình với C# của bạn tăng lên rất nhiều.

2. Kết nối database

Bất kể chương trình của bạn là chương trình gì, khả năng cao nó sẽ phải sử dụng database. Vì vậy bạn cần học cách kết nối database trong C# .NET.
alt text
Với kết nối database, cái bạn cần học là những “tư tưởng lớn“. Ý mình ở đây là có thể bạn sẽ quên các cú pháp (syntax) sau vài tháng học, nhưng bạn cần phải hiểu được các cách mà một ứng dụng C# thường dùng để kết nối tới database. Đặc biệt bạn cần hiểu được khi nào nên sử dụng phương pháp nào, tại sao lại phải sử dụng phương pháp đó. Ví dụ như trong C#, một số phương pháp có thể kể đến như: ADO.NET, ORM (entity framework)… Bạn không cần phải nhớ rõ chi tiết, bạn chỉ cần hiểu rõ được luồng chạy của từng phương pháp, điểm yếu điểm mạnh, những vấn đề cần lưu ý (xử lý dữ liệu lớn, connection…) …

3. Xử lý file, stream

Cũng giống như database, file và stream là một vấn đề lớn của lập trình nói chung chứ không riêng gì C#. Một C# developer làm việc với stream mỗi ngày, từ những vấn đơn giản như đọc một file text cho đến phức tạp như stream dữ liệu qua internet.

Nếu bạn không có ý tưởng gì về stream thì có thể hiểu như thế này. Các hoạt động trong môi trường phần mềm đa phần là các hoạt động I/O (Input/ Output). Giả sử như bạn muốn hiển thị một file text lên màn hình, khi đó hệ thống xử lý file của hệ điều hành sẽ là Input, chương trình của bạn sẽ là Output. Đối với yêu cầu hiển thị file text, bạn có 2 phương án để thực hiện. Cách thứ nhất là bạn load toàn bộ file text đó lên RAM (thông qua hàm File.ReadAllText trong C# chẳng hạn), sau đó hiển thị lên màn hình. Cách này nhanh gọn nhưng khi dung lượng file quá lớn, chương trình của bạn sẽ ngốn hết RAM của user. Cách thứ 2, bạn tạo ra 1 đường ống gọi là stream giữa chương trình của bạn và hệ thống quản lý file của hệ điều hành, sau đó bạn lấy từng chút từng chút dữ liệu một thông qua stream này.

Xử lý file, stream không phải chuyện đơn giản, đặc biệt là đối với dữ liệu truyền qua internet, dữ liệu lớn… Vì vậy để làm việc hiệu quả, chuyên nghiệp, đẳng cấp thì bạn nên nắm rõ cách xử lý những vấn đề này trong C#.

4. Xử lý collections

Collections là từ được dùng để chỉ những cấu trúc dữ liệu như Array, List, Stack, Queue… Là một C# developer, bạn cần biết cách làm việc hiệu quả với những cấu trúc dữ liệu này.

Từ những tác vụ đơn giản như thêm/ xóa / sửa phần tử trong một Array cho đến những thứ fucking magic mà mình chuẩn bị nêu dưới đây. Bạn cần phải nắm được hết.

Đầu tiên phải kể đến Linq, đây là một feature được Microsoft thêm vào C# .NET từ C# 4.0. Linq đã từng một thời tạo ra sự khác biệt của C# so với phần còn lại, nó giúp bạn xử lý Collections dễ dàng thông qua hệ thống command Select, Where, Order…, bạn có thể làm việc với các collections tương tự như làm việc với các table trong SQL. Để có thể làm việc với Linq, hàng loạt khái niệm đau đầu nhưng quan trọng khác mà bạn cần nắm, gồm có: Lambda expression, Extension method, Delegate…

Hơi nhiều thứ cần học nhưng một khi bạn đã hiểu được thì bạn có thể code như một C# pro.

5. Xử lý bất đồng bộ

Haizz, nhớ lại cái ngày mà chương trình của chúng ta chỉ cần chạy từ đầu đến cuối theo thứ tự. Mình có thể cảm nhận được sự ấm áp dễ chịu mà cụm từ lập trình đồng bộ mang tới, nhưng những ngày đó qua rồi. Ngày nay các hệ thống máy tính đều có phần cứng khủng, có thể xử lý song song nhiều tác vụ. Vì vậy phần mềm cũng phải tiến hóa, mọi thứ đều cần tiến hành bất đồng bộ, song song để tăng performance, tăng trải nghiệm người dùng.

C# cung cấp cho bạn khá nhiều công cụ để xử lý bất đồng bộ. Bắt đầu từ multithreading (đa luồng) với Thread cho đến asynchronous (bất đồng bộ) với Task, async/await. Dù bạn sử dụng công cụ nào, bất đồng bộ chưa bao giờ là một vấn đề đơn giản. Để có thể làm việc hiệu quả, bạn cần nắm rõ được nguyên lý hoạt động của từng giải pháp, cộng thêm kinh nghiệm, rất nhiều kinh nghiệm.

Kết

Nếu như bạn đang ở level “trung cấp” và muốn nâng cao khả năng lập trình C#, mình nghĩ rằng 5 vấn đề mình vừa nêu ở trên sẽ giúp bạn đạt được mục tiêu. Với những vấn đề cụ thể, chuyên sâu như thế này, bạn có thể tìm hiểu thông qua sách, có rất nhiều quyển sách dày 200 trang chỉ nói duy nhất về async/await. Bạn cũng có thể tìm hiểu thông qua các khóa học, thay vì một khóa học C# cơ bản, bạn có thể mua những khóa học chuyên về từng vấn đề cụ thể.

Hãy nhớ thế này, một nền tảng ngôn ngữ vững chắc sẽ giúp các công nghệ xây dựng phía trên nó không bị lung lay.

Ok, đó là tất cả những gì mình muốn nói với bạn hôm nay. Take care!

Doc them nhieu bai viet tai: https://thedarkknighttech.com

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Võ Cao Sơn

19 bài viết.
61 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
34 1
Ngày nay, thời đại của thông tin, của mạng xã hội, chúng ta có xu hướng bị đắm chìm trong những thông tin vô bổ, kém hữu ích. Video game show, thôn...
Võ Cao Sơn viết hơn 1 năm trước
34 1
White
33 8
Ở bài trước, mình đã nói về cách duy nhất giúp bạn trở thành một developer giỏi hơn. Nếu bạn chưa đọc thì có thể đọc tại (Link), tuy nhiên mình có ...
Võ Cao Sơn viết 12 tháng trước
33 8
White
30 7
Gần đây mình thấy rất nhiều bài viết câu like dạng như: “Chấm để tham gia khóa học lập trình A, B, C miễn phí”, ngạc nhiên là những bài như vậy đượ...
Võ Cao Sơn viết hơn 1 năm trước
30 7
Bài viết liên quan
White
5 0
Bạn có muốn trở thành một developer tầm cỡ không? Ok, mình có cách, mình sẽ chỉ cho bạn ngay bây giờ. Một bí quyết duy nhất, vô cùng đơn giản, đó l...
Võ Cao Sơn viết hơn 1 năm trước
5 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
19 bài viết.
61 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!