sử dụng try/catch trong C#

Xử lý ngoại lệ(Exception) giúp ứng dụng, chương trình của bạn tránh được những sự cố, lỗi khi thực thi chương trình. Trong C# cung cấp, hỗ trợ việc sử lý ngoại lệ thông qua các khối lệnh try, catch, finally. Hãy cùng mình tìm hiểu cách sử lý ngoại lệ qua bài viết này nhé.

Ngoại lệ Exception là gì

Ngoại lệ (hay exception) là vấn đề – lỗi phát sinh trong khi chương trình được thực thi. Thông thường khi ứng dụng, chương trình đang chạy mà phát sinh ngoại lệ (lỗi) sẽ dẫn đến chương trình bị kết thúc(dừng lại) ngay lập tức. Có rất nhiều nguyên nhân dẫn tới việc chương trình đang chạy mà phát sinh ngoại lệ, ví dụ như:

  • Dữ liệu do người dùng nhập bị sai, mà chương trình kiểm soát không được.
  • Thực hiện các phép toán không cho phép (ví dụ như chia một số cho 0).
  • Thực hiện thao tác với tài nguyên không tồn tại (ví dụ mở file không có trên đĩa, thực hiện kết nối đến CSDL không tồn tại …).
  • Do thiếu bộ nhớ.

Ở trong C# khi có một lỗi(Exeption ) phát sinh thì hầu hết các lỗi đều có thể quản lý bởi thư viện C# thì nó sẽ phát sinh ra một đối tượng lớp Exeption (System.System) hay là một đối tượng lớp nào đó kế thừa từ Exception.

Exception Handling (Xử lý ngoại lệ) ở trong C# được xây dựng dựa trên 4 từ khóa đó là: trycatchfinally, và throw.

  • try: Một khối try nhận diện một khối code mà ở đó các exception cụ thể được kích hoạt. Các khối code được giám sát để bắt lỗi nếu có. nếu có lỗi sẽ phát sinh ngoại lệ Exception. Ngoại lệ này bắt lại được ở khối catch. Theo sau nó bởi một hoặc nhiều khối catch.
  • catch: Đây là một chương trình bắt một Exception với một Exception Handler tại vị trí trong một chương trình nơi mà bạn muốn xử lý vấn đề đó. Từ khóa catchở trong C# chỉ dẫn việc thực hiện bắt một exception.
  • finally: Một khối finally được sử dụng để có thể thực thi một tập hợp lệnh đã cho. Dù là có hay không một exception được ném hay không được ném. Ví dụ như là nếu bạn mở một file, nó phải được đóng, nếu không sẽ có một exception tạo ra.
  • throw: Là một chương trình ném một exception khi có một vấn đề nào đó xuất hiện. Nó được thực hiện bởi việc sử dụng từ khóa throwtrong C#.
exception trong C#
exception trong C#

Cú pháp

Ví dụ ta có một khối tạo một Exeption và một phương thức bắt một exception bởi sử dụng kết hợp những từ khóa try và catch. Ta đặt một khối try/catch xung quanh code mà có thể xảy ra một exception.

Code ở bên trong của một khối try/catch được xem như là code được bảo vệ, và cú pháp để sử dụng try/catch ở trong C# ta viết như sau:

try{

// những lệnh có thể gây ra ngoại lệ (exception)

}catch( tên_ngoại_lệ e1 )

{

// phần code để xử lý lỗi}

catch( tên_ngoại_lệ e2 )

{

// phần code để xử lý lỗi}

catch( tên_ngoại_lệ eN )

{

// phần code để xử lý lỗi}

finally{

// các lệnh được thực thi}

Nếu như ngoại lệ (lỗi thực thi) phát sinh mà chúng ta không xử lý thì chương trình sẽ dừng đột ngột. Nếu muốn xử lý ngoại lệ(lỗi) thì chúng ta cần bắt lấy nó và điều hướng chương trình một cách thích hợp.

Đối tượng lớp Exception trong C# có một số thuộc tính, tiện dụng cho bạn gỡ rối đó là:

  • Message: dạng chuỗi chứa nội dung thông báo lỗi.
  • StackTrace: Là chuỗi chứa các bước thực thi chương trình cho đến khi bị lỗi (có chứa các phương thức, hàm khi thực thi gây lỗi, vị trí file lỗi …)
  • Source: Chứa tên ứng dụng hoặc đối tượng bị lỗi.

Bạn có thể sử dụng nhiều lệnh catch để bắt những loại exception khác nhau tùy vào trong từng trường hợp khối try của bạn xuất hiện nhiều hơn một exception và trong các tình huống khác nhau.

cách xử lý exeption
cách xử lý exeption

Xem thêm:  Csharp là gì?

Thực hành bắt lỗi:

static void Main(string[] args)

{

try {

// khối này được giám sát để bắt lỗi - khi nó phát sinh

int[] mynumbers = new int[] {1,2,3};

int i = mynumbers[10];                  // dòng này phát sinh lỗi

Console.WriteLine(i);                   // dòng này không được thực thi vì lỗi trên

}

catch (Exception loi)

{

// khối này thực thi khi bắt được lỗi

Console.WriteLine("Có lỗi rồi");

Console.WriteLine(loi.Message);

}
}

Có lỗi rồi

Index was outside the bounds of the array.

Lớp Exception trong C# là gì

Các Exception ở trong C# sẽ được biểu diễn bởi các lớp. Các lớp Exception ở trong C# chủ yếu sẽ được kế thừa một cách trực tiếp hoặc không trực tiếp từ lớp System.Exception trong C#. Một số lớp Exception khác kế thừa từ lớp System.Exception là các lớp System.ApplicationException và System.SystemException.

Lớp System.ApplicationException nó hỗ trợ các exception được tạo bởi các chương trình ứng dụng. Vì vậy, những exception mà được định nghĩa bởi lập trình viên nên kế thừa từ lớp này.

Lớp System.SystemException đây là lớp cơ sở cho tất cả system exception tiền định nghĩa.

Một số lớp Exception tiền định nghĩa được kế thừa từ lớp Sytem.SystemException trong C#:

Lớp ExceptionMô tả
System.IO.IOExceptionXử lý các I/O lỗi
System.IndexOutOfRangeExceptionXử lý các lỗi được tạo khi một phương thức tham chiếu tới một chỉ mục bên ngoài dãy mảng.
System.ArrayTypeMismatchExceptionXử lý các lỗi được tạo khi kiểu là không phù hợp với kiểu mảng
System.NullReferenceExceptionXử lý các lỗi được tạo từ việc tham chiếu một đối tượng null
System.DivideByZeroExceptionXử lý các lỗi được tạo khi chia cho số 0.
System.InvalidCastExceptionXử lý lỗi được tạo trong khi ép kiểu.
System.OutOfMemoryExceptionXử lý lỗi được tạo từ việc thiếu bộ nhớ rỗi.
System.StackOverflowExceptionXử lý lỗi được tạo từ việc tràn ngăn xếp (stack).

Ném (throw) các Object trong C#

Bạn có thể thực hiện ném một đối tượng nếu nó: hoặc là trực tiếp hoặc gián tiếp được kế thừa từ lớp System.Exception trong C#. Bạn có thể sử dụng một lệnh throw trong khối catch để ném đối tượng hiện diện đó:

Catch(Exception e)
{
...
Throw e
}

Một số điểm cần lưu ý về xử lý Try/Catch trong C#

  • Khối try phải được theo sau bởi một khối catch hoặc finally hoặc là cả 2.
  • Sử dụng các khối try, catch và finally để xử lý các ngoại lệ ở trong C#
  • Có thể sử dụng nhiều khối catch để bắt và xử lý nhiều loại Exception khác nhau.
  • Khối finally sẽ luôn được thực thi bất kể có hay không có ngoại lệ xảy ra.
  • Khối finally phải đặt sau khối try hoặc catch.
  • Trong khối finally sẽ không dùng được các từ khóa return, continue, break vì nó không cho phép dời khỏi khối này.
  • Trong C# khối try catch lồng nhau được sử dụng.
  • Với một ngoại lệ(Exception) nó sẽ được sử lý ở khối catch bên trong nếu tìm thấy bộ lọc thích hợp, còn không nó sẽ bị bắt và xử lý ở khối catch bên ngoài.
  • Việc sử dụng throw thay vì dùng throw ex sẽ giúp giữ stack trace hỗ trợ việc truy vết và lý lý lỗi dễ hơn.

Cảm ơn các bạn đã xem bài viết của mình. Mong nhận được những góp ý từ các bạn để bài viết được hoàn thiện hơn.

mô hình mvvm lập trình

Tìm hiểu về mô hình lập trình MVVM (Model-View-ViewModel). MVVM có thể nói là mô hình kiến trúc được rất nhiều lập trình viên trong cộng đồng lập trình ưa chuộng sử dụng nó.  mô hình này sinh ra dành cho các ứng dụng sử dụng ngôn ngữ XAML để định nghĩa giao diện ứng dụng như: Windows Phone 8.0, 8.1 Silverlight/RT, WPF, Silverlight, Windows RT, Universal Apps,… Lợi ích từ mô hình này mang lại là rất nhiều. Nhưng lợi ích nổi bật nhất là tách biệt việc thiết kế giao diện và lập trình code logic không phụ thuộc nhau. Bài viết này sẽ chỉ rõ những nội dung tổng quát có thể giúp bạn có thêm cái nhìn cụ thể MVVM là gì, cách sử dụng và lợi ích của nó…

Giới thiệu mô hình Model-View-ViewModel (MVVM)

Lịch sử phát triển

Kể từ khi Microsoft cho ra mắt hai nền tảng phát triển ứng dụng mới đó là WPF và Silverlight, trên nên tảng đó đã có nhiều thay đổi trong việc xử lý sự kiện và binding dữ liệu, giữa các tầng của ứng dụng với nhau. Vì vậy, nảy sinh ra nhu cầu phải có một mô hình phát triển ứng dụng mới phù hợp hơn. Do vậy Model – View – ViewModel (MVVM) pattern ra đời và ngày càng trở nên phổ biến, phát triển hơn.

Xem thêm: WPF là gì

Mô hình MVVM là gì

MVVM không phải là framework hay thư viện, api… nó chỉ đơn thuần là hướng dẫn bạn định nghĩa cấu trúc ứng dụng của bạn. MVVM được phát triển dựa trên kiến trúc MVP.

Mô hình mvvm cho phép tách biệt dữ liệu (Model), mã thực thi (logic hay ViewModel) và giao diện người dùng (View).

Trong các mô hình truyền thống, chúng ta thường xử lý sự kiện Click và viết mã thực thi trực tiếp ở trên một Button nhưng với mô hình MVVM không cho phép làm điều này.

Trong mô hình MVVM, các điều khiển(control) như Button, ListView, SearchBar, v.v. không thể kết buộc trực tiếp đến dữ liệu mà phải thông qua thuộc tính Command – là một thuộc tính kiểu ICommand.

mô hình lập trình mvvm là gì
mô hình lập trình mvvm là gì

MVVM được hiểu như thế nào ?

View:

Thành phần giao diện của ứng dụng. Tương tự như ở trong mô hình MVC, View là thành phần duy nhất mà người dùng có thể tương tác được trong chương trình, nó chính là thành phần mô tả dữ liệu.

Một điểm khác biệt so với các mô hình khác là View trong mô hình này tích cực hơn. Nó có khả năng thực hiện các hành vi và phản hồi lại người dùng thông qua tính năng là: binding, command.

Model:

Cũng tương tự như trong mô hình MVC. Model là các đối tượng giúp truy xuất và thao tác trên dữ liệu thực sự.

ViewModel:

Lớp trung gian giữa View và Model. ViewModel có thể được xem là thành phần thay thế cho Controller trong mô hình MVC. Nó chứa các mã lệnh cần thiết để thực hiện data binding, command.

Một định nghĩa khác về ViewModel:

ViewModel: Sẽ đảm nhận công việc đồng bộ dữ liệu từ model lên View. Mối quan hệ giữa View và View-Model là View sẽ được ánh xạ tới View-Model nhưng View-Model lại không biết thông tin gì về View. Nó được ẩn dấu qua cách sử dụng Data-binding và cơ chế của mô hình Observer. Một View-Model có thể được ánh xạ từ nhiều View.

Một điểm cần lưu ý: là trong mô hình MVVM, các tầng bên dưới sẽ không biết được các thông tin gì về tầng bên trên nó. ViewModel không hề biết gì về View, một ViewModel có thể được sử dụng cho nhiều View (one-to-many). ViewModel sử dụng Observer design pattern để liên lạc với View (thường được gọi là binding data, có thể là 1 chiều hoặc 2 chiều tùy nhu cầu ứng dụng).

Cấu trúc thư mục trong MVVM

Thông thường khi sử dụng với MVVM chúng ta nên tạo 3 thư mục chính chứa các file code liên quan.

cấu trúc thư mục trong mvvm
cấu trúc thư mục trong mvvm

Views

Trong thư mục Views chứ các file giao diện. Và mỗi file giao diện đều có class code-behind đi kèm. Đặc biệt file code-behind ta sẽ không sử dụng đến, mọi điều cần làm sẽ chuyển xuống class ViewModel. Tất nhiên là bạn có thể code trong file code-behind của XAML nhưng điều đó sẽ phá vỡ quy ước MVVM, bạn có thể khai báo thuộc tính datacontext hoặc vài thiết lập khác nhưng nên hạn chế tối thiểu code ở đây. Views được sử dụng để kết hợp với các mô hình MVVM… Nó dùng để cung cấp một sự chia tách gọn gàng của khái niệm giữa UI và presentation logic và data.

Models

Trong thư mục Models trong đó tạo các class chứa data và bất kỳ liên kết validation, logic nghiệp vụ để chắc chắc tính toàn vẹn của data, bạn có thể tách ra thư mục Repositories khác. Chúng được dùng như một phần của mô hình MVVM.

ViewModels

Tương tự ta cũng tạo một thư mục ViewModels. Thông thường một file giao diện thì ta tạo một class ViewModels tương ứng (có đôi lúc ta tạo nhiều class phụ giúp tinh giản file code và gọi chúng trong class ViewModels chính).

ViewModels sẽ sử dụng các model nếu cần định nghĩa dữ liệu. Sự liên kết giữa View-ViewModel giúp chúng gửi và nhận dữ liệu, để hiểu rõ ta cần tìm hiểu các khái niệm về Binding, DataContext, Behaviors SDK. Nhờ đó ta tách code-behind của View và đưa xuống View Model.

Ngoài ra một lớp ViewModels chứa presentation logic và state của ứng dụng. ViewModels cần chứa các chức năng của ứng dụng. ViewModels định nghĩa properties, commands, và events, để chuyển đổi controls trong view cần data-bind.

Data Binding

Data Binding là kĩ thuật dùng để tạo gắn kết giữa phần giao diện (UI) và dữ liệu thông qua phần business logic. Nhờ Data Binding, UI có thể tự động cập nhật lại để hiển thị các thay đổi trong dữ liệu.Ngoài ra, Data Binding trong WPF còn hỗ trợ các chiều khác nhau, nghĩa là các thay đổi có thể cập nhật từ UI vào dữ liệu. Kĩ thuật binding trong mô hình mvvm thực sự là một bước tiến mới, thỏa mãn những điều mà hầu hết lập trình viên mong đợi.

Nếu như tìm hiểu về tính năng này, bạn sẽ không ngạc nhiên gì khi nhiều người nói rằng data binding là thành phần cốt lỗi tạo nên các cơ chế hoạt động trong WPF. Bạn có thể binding dữ liệu nguồn và đích từ bất kì đối tượng nào: như cửa sổ, các control đơn giản như TextBlock cho đến một usercontrol phức tạp.

Tất cả được thực hiện một cách dễ dàng, nhanh chóng, hiệu quả và có thể không cần dùng đến bất kì dòng code-behind (C#, VB.NET, …) nào.

Data Template

Data Template là kĩ thuật dùng để tạo ra một khuôn mẫu giao diện. Template chỉ được áp dụng cho các Control. Một template trong WPF xác định cách thức và cấu trúc mà dữ liệu hoặc control sẽ được hiển thị ra màn hình.

Nói riêng về Data Template, chức năng này giúp cho dữ liệu (thuộc dạng non-visual) được gắn vào một cấu trúc bao gồm một hoặc nhiều thành phần có khả năng hiển thị. Và do đó, dữ liệu sẽ được hiển thị lên cửa sổ một cách trực quan theo ý muốn của lập trình viên. Cũng như Data Binding, tính năng này không yêu cầu bạn phải biết trong code-behind của ứng dụng.

Command

Data Binding và Data Template giúp cho người dùng thấy được những gì có trong dữ liệu và có thể cập nhật lại dữ liệu đó. Tuy nhiên để nhận được tương tác từ người dùng và xử lý, WPF cung cấp một tính năng gọi là command. Các command có thể được xem như dữ liệu và được cung cấp cho người dùng thông qua chức năng binding.

Một command binding cho phép bạn tùy ý xác định các phương thức xử lý, phím tắt hoặc thao tác chuột để kích hoạt.

So sánh ưu điểm và nhược điểm của MVC  MVP và MVVM

Ở đây mình không so sánh mô hình nào nên dùng hơn mô hình nào, mà tùy trường hợp mọi người dùng mô hình nào cho thích hợp với dự án của mình. Mình xin nêu ra ưu nhược điểm của MVP và MVVM nhé!

Ưu nhược điểm của MVC là gì?

mô hình mvc cho lập trình
mô hình mvc cho lập trình

Ưu điểm:

Mô hình MVC có rất nhiều ưu điểm, cụ thể như là:

  • Nhẹ, tiết kiệm băng thông: MVC không tiêu tốn nhiều viewstate nên rất tiết kiệm băng thông. Các thao tác gửi, nhận dữ liệu được diễn ra liên tục. Vì vậy, sử dụng mô hình này website/ ứng dụng hoạt động ổn định hơn.
  • Có thể kiểm tra, phát hiện lỗi phần mềm một cách dễ dàng.
  • Dễ dàng trong việc phân tách các phần Model và View.
  • Mô hình này có kết cấu đơn giản. Không cần quá am hiểu về kỹ thuật cũng có thể sử dụng được.

Nhược điểm:

Bên cạnh những ưu điểm nên bên trên thì MVC cũng tồn tại một số nhược điểm:

  • Controller và View có sự liên quan với nhau. Vì vậy, khi thay đổi ở View thì đồng nghĩa bạn sẽ phải thay đổi ở Controller.
  • Khó thực hiện chạy unit test do Controller và Android API có sự liên hệ chặt chẽ với nhau.
  • Theo thời gian, Controller sẽ trở nên khó kiểm soát vì càng ngày càng có nhiều code được viết thêm vào.
  • MVC phù hợp với các dự án lớn. Với các dự án nhỏ, mô hình này khá cồng kềnh và tốn nhiều thời gian trong việc trung chuyển dữ liệu.

Ưu nhược điểm của MVP là gì?

MVP : Model – View – Presenter

mô hình lập trình mvp
mô hình lập trình mvp

Ưu điểm:

  • Chúng ta dễ dàng viết unit test cho presenter vì nó không gắn với bất cứ view, nó hoạt động độc lập với View và không gắn với bất cứ API nào của Android
  • MVP có cấu trúc code rõ ràng hơn so với MVC nên khá dễ hiểu và dễ dùng. ít bug hơn, dễ dàng review code.

Nhược điểm:

  • Mô hình MVP theo thời gian, Presenter sẽ dần lớn lên do bị thêm các business logic rải rác. Người dùng sẽ rất khó để kiểm soát và chia nhỏ code khi Presenter đã quá lớn.
  • Nó sẽ trở lên rườm rà khi ta xây dựng với các ứng dụng nhỏ, hoặc với các Activity đơn giản.
  • Khó sử dụng lại logic code trong Presenter cho các View khác..

Ưu nhược điểm của MVVM: Model – View – ViewModel?

Ưu điểm:

  • Thực hiện Unit testing bây giờ sẽ rất dễ dàng, vì bạn thực sự không phụ thuộc vào view.
  • MVVM sẽ tạo sự tương tác hiệu quả giữa designer và developer
  • Tăng khả năng sử dụng lại các thành phần hay việc thay đổi giao diện chương trình mà không cần phải viết lại code quá nhiều
  • phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì…

Nhược điểm :

  • Khả năng duy trì khi view có thể gán cả biến và biểu thức, các logic không liên quan sẽ tăng dần theo thời gian, ảnh hưởng đến việc thêm code vào XML.
  • Đối với dự án nhỏ việc áp dụng mô hình MVVM gây cồng kềnh, tốn thời gian trong quá trình phát triển. Tốn thời gian trung chuyển dữ liệu của các thành phần.
  • Đối với dự án lớn hơn, nó gây khó khăn và mất thời gian để thiết kế các ViewModel.
  • Việc liên kết dữ liệu cho tất cả các thành phần gây khó khăn trong việc debug khi cơ sở dữ liệu phức tạp.

Sử dụng mô hình MVC, MVP và MVVM khi nào?

Bạn nên dùng MVP nếu không thể binding dữ liệu qua DataContext (ví dụ như với Windows Forms).

Mô hình MVVM thì nên dùng trong trường hợp có thể binding dữ liệu thông qua DataContext (ví dụ như: WPF).

Còn đối với MVC nên sử dụng khi việc kết nối giữa View và các phần còn lại của ứng dụng không phải lúc nào cùng available (ví dụ như web API). Khi đó, bạn không thể sử dụng MVP hoặc MVVM hiệu quả được và bắt buộc phải chọn mô hình MVC.

Kết luận :

MVVM có thể nói là mô hình kiến trúc được rất nhiều lập trình viên ưa chuộng.  MVVM đã kế thừa những ưu điểm vốn có của MVP, kết hợp với những lợi thế của data binding đem đến một pattern có khả năng phân chia các thành phần với từng chức năng riêng biệt, dễ dàng trong việc maintain, redesign. MVVM cũng đem lại khả năng test rất dễ dàng, giúp làm việc hiệu quả.

Cảm ơn các bạn đã đọc bài viết. Mong nhận được nhiều sự góp ý từ phía bạn.

Xem thêm: Ngôn ngữ lập trình C sharp là gì

Tài liệu tham khảo: https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel

học lập trình online

Lập trình đang là nghề được nhiều người quan tâm đến. Ngày nay, bạn có thể học code online một cách dễ dàng, miễn phí. Ngay cả bạn không có ý định theo sự nghiệp lập trình thì việc học một ngôn ngữ lập trình cũng sẽ rất hữu ích với bạn, nó sẽ giúp bạn có thêm nhiều kĩ năng cho công việc sau này của bạn.

Bạn sẽ học được rất nhiều những kiến thức hữu ích từ những trang web dạy lập trình online này. Bên dưới là những tổng hợp website học lập trình giúp bạn dễ dàng học những kiến thức phù hợp với bạn:

1. Web Codecademy

Với website Codecademy, bạn có thể học lập trình online từ căn bản như giới thiệu lập trình đến việc dạy các ngôn ngữ cao cấp. Đây là một website miễn phí giúp bạn học lập trình hiệu quả nhất mà không cần máy chủ web hay bất kỳ một phần cứng / phần mềm nào.

Khi bạn sử dụng Codecademy sẽ có thử nghiệm với nhiều điều mới lạ mà chỉ khi nào tham gia học trực tuyến, bạn mới khám phá được.

Hiện nay có hơn 24 triệu người đã học code bằng nền tảng này.

lập trình online Codecademy
lập trình online Codecademy

Một số ngôn ngữ bạn có thể học lập trình online tại Code Academy là:

  • HTML
  • JavaScript
  • CSS
  • jQuery
  • PHP
  • Python
  • Ruby

Và còn nhiều ngôn ngữ khác

Link web: https://www.codecademy.com/

Xem thêm: C# là gì?

2. W3Schools.com

Web W3Schools rất phù hợp với những người đang học lập trình HTML, CSS, HTML5, Javascript, PHP, ASP, XML và nhiều ngôn ngữ khác.

W3 có các bài hướng dẫn lập trình, tài nguyên lập trình, ví dụ, các bài tập để giúp bạn học code. Ở trang web này là khả năng chạy code bạn vừa gõ để biết chính xác mọi thứ sẽ xuất hiện như thế nào nếu dùng dòng code đó.

Ở mỗi ngôn ngữ đề có phần Try it Yourself riêng để bạn rèn luyện thêm. Với W3 bạn có thể yên tâm lập trình viết code tạm quên đi những phần mền code phức tạp mà bạn vẫn có thể đạt được sự hiệu quả cao.

W3Schools lập trình online
W3Schools lập trình online

Để bắt đầu lập trình onlien với W3 bạn cần chọn ngôn ngữ lập trình theo ý thích. Sau đó chọn các chương trình và chọn tùy chọn ngôn ngữ khác nhau, thiết lập các cài đặt. Và có thể bắt tay vào lập trình.

Link web: https://www.w3schools.com/

3. Udacity

Udacity đây là một nền tảng học tập trực tuyến chất lượng cao đồng thời có dịch vụ hỗ trợ việc làm ngay sau khi học. Mặc dù các khóa học online trên Udacity không quá đa dạng như Coursera nhưng Udacity lại rất mạnh về mảng đào tạo công nghệ thông tin.

Udacity là ra đời từ năm 2011. Cho đến nay, số lượng học viên tham gia các khóa học trực tuyến trên Udacity đã lên đến 11,5 triệu người.

Tại đây, Udacity cung cấp hàng loạt chương trình học tuyệt vời, bao gồm cả kinh doanh, khoa học và khoa học máy tính.

web Udacity học lập trình
web Udacity học lập trình

Một số khóa học có chất lượng và được đánh giá cao trên Udacity:

  • Intro to TensorFlow for Deep Learning
  • Udacity Data Science Courses
  • Udacity Machine Learning Engineer Course
  • Udacity Full-stack Web Developer Certification Course
  • Udacity Android Course
  • Become a Data Scientist
  • Deep Learning Nano Degree Program
  • Business Analytics Online Course

Link web: https://www.udacity.com/

Xem thêm: Lập trình trí tuệ nhân tạo là gì?

4. Coursera

Coursera được sáng lập bởi hai giáo sư Stanford là Andrew Ng và Daphne Koller vào năm 2012. Coursera là nơi hội tụ những nguồn tài liệu học tập quý giá được cung cấp bởi một số trường đại học có uy tín trên thế giới.

Coursera lập trình
Coursera lập trình

Có 3 loại khóa học trên Coursera:

  • Khóa học không tính phí
  • Khóa học tính phí
  • Khóa Specialization

Link web: https://www.coursera.org/

5. Lynda.com

Lynda là trang web tổ chức những khóa học trực tuyến hàng đầu tại Mỹ. Lynda cung cấp rất nhiều khóa học chất lượng được giảng dậy bởi các chuyên gia từ rất nhiều ngành nghề. Ngoài lập trình, Lynda cũng rất hữu ích với những người đang tìm hiểu về hoạt hình 3D, kinh doanh, chỉnh sửa video và thiết kế.

học lập trình trên Lynda.com
học lập trình trên Lynda.com

Link web: https://www.lynda.com/

6. BitDegree

BitDegree cung cấp nhiều khóa học miễn phí từ lập trình cơ bản đến phát triển các ứng dụng trò chơi.

Họ cung cấp các khóa học trực tuyến tiêu chuẩn. Các khóa học này được đánh giá cao giúp mang lại thành tích và sự tương tác trong quá trình học tập. Tất cả những gì bạn phải làm là chọn ngôn ngữ của mình và bắt đầu học.

BitDegree kết hợp blockchain vào quá trình học.

BitDegree học lập trình căn bản
BitDegree học lập trình căn bản

Có nhiều ngôn ngữ lập trình được đề cập, nhưng những ngôn ngữ phổ biến nhất được đánh dấu bên dưới:

  • HTML
  • CSS
  • PHP
  • Javascript
  • SQL
  • Jquery

Link web: https://www.bitdegree.org/

7. Udemy

Udemy cung cấp rất nhiều khóa học trực tuyến, cả để cho vui lẫn để phát triển các kỹ năng thực tế có thể giúp phát triển sự nghiệp của bạn. Và học hỏi thêm các kỹ năng công việc.

Cũng có một số khóa học người dùng sẽ phải trả phí, nhưng bên cạnh đó Udemy cung cấp rất nhiều các khóa học miễn phí, giảng dạy qua video như khóa Lập trình cơ bản dành cho doanh nhân – HTML và CSS, Lập trình với Python,….

lập trình với Udemy
lập trình với Udemy

Các điểm chính về tổng thể khóa học

Sau khi trải qua các bài giảng, có vài điều mà tôi thấy nổi bật về chất lượng của khóa học:

  1. Chất lượng video và âm thanh tốt
  2. Nhịp độ tốt.
  3. Không cập nhật lắm

Link web: https://www.udemy.com/

8. AGupieWare

Đây là một trang web mà các chương trình học không phải trả phí nên nó là nơi tuyệt vời để bắt đầu cho người mới đang tìm kiếm và mong muốn học lập trình.

AGupieWare lập trình miễn phí
AGupieWare lập trình miễn phí

Các chương trình được chia thành 15 khóa học: 3 lớp nhập môn, 7 lớp học chuyên sâu và 5 lớp học tự chọn.

Link web: http://blog.agupieware.com/

9. GitHub

Ở GitHub bạn có thể tìm thấy hơn 500 cuốn sách miễn phí về lập trình, bao trùm hơn 80 ngôn ngữ lập trình khác nhau nằm trong kho dịch vụ lưu trữ trên nền tảng website của GitHub.

Những Developers muốn nâng cao năng lực và kỹ năng nghề nghiệp để cải thiện chất lượng và năng suất công việc.

Những bạn sinh viên Công nghệ thông tin muốn bổ sung các kiến thức làm việc với mã nguồn github.

GitHub hướng dẫn lập trình
GitHub hướng dẫn lập trình

Link web: https://github.com/

10. MIT Open Courseware

MIT Opencoursewave (OCW) Là trang học liệu mở của viện công nghệ Massachusetts, Hoa Kỳ.

Trang web này cung cấp cho người dùng các tài liệu miễn phí phục vụ mục đích học tập, giảng dạy cho hầu hết các môn học đang được giảng dạy tại trường và các khóa học trực tuyến.

MIT OCW đã có hơn 15 năm phát triển, với hơn 2400 khóa học và 200 triệu người dùng.

Chương trình này bao gồm các lớp học như Cơ bản về Khoa học máy tính và Lập trình, Cơ bản về lập trình với Java. Thực hành lập trình với ngôn ngữ lập trình C.

lập trình ocw cơ bản
lập trình ocw cơ bản

Link web: https://ocw.mit.edu/

11. Code Avengers

Code Avengers cung cấp các khóa học lập trình thú vị và hấp dẫn, như lập trình games, ứng dụng và các websites sử dụng JavaScript, HTML và CSS.

Với Code Avengers, bạn sẽ học được những ngôn ngữ và kĩ năng như:

  • HTML and CSS
  • Python
  • Javascript
  • jQuery
  • Web Development
lập trình căn bản online
lập trình căn bản online

Link web: https://www.codeavengers.com/

12. Khan Academy

Khan Academy là nền tảng online learning cực lớn. Đây là nơi tuyệt vời để bạn bắt đầu phát triển các kỹ năng lập trình của bạn.

Bạn có thể bắt đầu vào học ngay lập tức hoặc tham gia vào một khóa học tại chỗ. Nó sẽ giúp bạn học được tất cả mọi thứ từ  HTML & CSS, JavaScript, jQuery, PHP, Python và Ruby.

CodeAcademy có một cơ chế để giúp bạn tự học rất tốt, đưa ra các lời khuyên, giải đáp để hướng dẫn bạn tiến bộ. Web này giống như là bạn có một người thầy hoặc một người hướng dẫn vậy.

bắt đâu học lập trình online Academy
bắt đâu học lập trình online Academy

Với Khan Academy, bạn sẽ có thể học và hoàn thiện các programming language sau:

  • HTML
  • CSS
  • Javascript
  • Databases

Link web: https://www.khanacademy.org/

13. HTML5 Rocks

Điều tuyệt vời của trang web này chính là cung cấp một hệ thống khá nhiều mã nguồn mở về code HTML5 cho các bạn nghiên cứu và sử dụng thử.

Bạn còn có thể tìm thấy kho tài liệu phong phú về các tài nguyên, các hướng dẫn và các bản cập nhật mới nhất của HTML5.

Tuy nhiên trang web này đòi hỏi cần có kiến thức nâng cao hơn so với hầu hết các khóa học nhập môn, bạn nên trau dồi kiến ​​thức và kinh nghiệm trước khi vào website này.

 Link web: https://www.html5rocks.com/

14. Codewars

Web Codewars dạy bạn học ngôn ngữ bạn mong muốn thông qua một chuỗi các thử thách. Mục tiêu là giúp cho bạn hoàn thành và nắm chắc kỹ năng bạn đã có hoặc học một ngôn ngữ mới từ con số không.

lập trình với Codewars
lập trình với Codewars

Một số ngôn ngữ bạn có thể học từ Codewars là:

  • Java
  • Javascript
  • C#
  • Ruby
  • Python
  • SQL

Link web: https://www.codewars.com/

15. Code.org

Code.org là một sáng kiến giúp mọi người có thể tiếp cận được với việc lập trình phần mềm ở mức cơ bản.

Hơn một triệu người đã dùng site này để học thêm kiến thức về lập trình và tăng cường kỹ năng của họ.

Trang web này có chỗ để dạy và viết mã trực tiếp từ trình duyệt để mọi người có thể nhanh chóng bắt đầu học.

Code.org học online
Code.org học online

Link web: https://code.org/

16. Code Conquest

Code Conquest là một nền tảng rất tuyệt vời để giúp bạn học code cơ bản. Nền tảng này sẽ giúp bạn bắt đầu từ lập trình căn bản nhất.

Nó được thiết kế để bạn học từng bước:

  1. Lập trình là gì.
  2. Chọn ngôn ngữ nào để học.
  3. Làm thế nào để tăng kiến thức và kỹ năng.
  4. Áp dụng những kỹ năng này để giải quyết vấn đề thực sự.
Code Conquest dạy lập trình
Code Conquest dạy lập trình

Trên website, bạn sẽ thấy có nhiều bài hướng dẫn khác nhau để dạy bạn học programming languages, bao gồm:

  • HTML and CSS
  • Javascript
  • PHP
  • Ruby
  • jQuery
  • Python
  • MySQL

Link web: https://www.codeconquest.com/

Tóm lại

Học lập trình đang là xu hướng hiện nay. Mong rằng với những khóa học online miễn phí này, bạn có thể rút ngắn thời gian học lập trình mà không phải tốn bất kỳ chi phí nào để bắt đầu.

Cải Thiện Kỹ Năng Lập Trình

Lập trình là ngôn ngữ phát triển rất khó và người học cần đầu tư nhiều thời gian và công sức để thành thạo. Vậy để các lập trình viên có thể cải thiện kiến thức và kỹ năng lập trình của mình. Hãy cùng chúng tôi tìm hiểu trong bài viết dưới đây nhé.

Tự xây dựng, phát triển các chương trình để rèn luyện kỹ năng ghi nhớ của bạn

Bất cứ khi nào xây dựng một chương trình sẽ cho phép người dùng nhập tên của họ và hiển thị tên trên màn hình.

Có khi nào bạn từng nghĩ rằng sẽ tạo một thư viện cho hệ thống bạn đang viết?

Những chương trình này giúp bạn có thể phát triển, giúp bạn cải thiện khả năng ghi nhớ và những kỹ năng lập trình của bạn.

Hãy phát triển những chương trình trong C càng tốt, nó sẽ giúp bạn cải thiện được khả năng lập trình logic của mình.

Thực hành “code” mỗi ngày

Mỗi ngày viết code là một kỹ năng sẽ giúp bạn rèn luyện nó tốt hơn. Nó đòi hỏi rất nhiều về thực hành và cần phải nỗ lực để có được kỹ năng lập trình tốt hơn. Không một ai nào thức dậy vào một buổi sáng và đột nhiên trở nên giỏi lập trình. Tất cả những kỹ sư giỏi đã làm việc vô số ngày đêm để hoàn thiện kỹ năng của họ. Bạn hãy tạo thói quen viết mã mỗi ngày, bất kể dự án hay bằng ngôn ngữ lập trình. Điều quan trọng là bạn thực sự làm điều đó mỗi ngày.

Ngoài ra, cố gắng đọc mã code của những lập trình viên khác, nói về mã và hãy cố gắng tìm các chuyên gia để họ xem lại đoạn mã của bạn, để có những góp ý cho bạn hoàn chỉnh hơn.

Tuy nhiên, sau khi thực hành, bạn cần phải thực hiện những thay đổi ở trên code để đánh giá lại hiệu quả. Có thể tập trung vào việc viết lại những dòng giống nhau mà nó đang lặp đi lặp lại, thực hiện những thay đổi cũng như kiểm tra một cách cẩn thận lại. Mỗi lần như vậy sẽ mang lại những cải tiến nhỏ, và sẽ dễ dàng tìm ra lỗi sớm hơn có thể dẫn đến những vấn đề lớn hơn sau này.

Xem thêm: Website dành cho lập trình viên

Học, biết nhiều ngôn ngữ giúp nâng cao kỹ năng lập trình

Các trường đại học và trường học luôn giới thiệu nhiều ngôn ngữ lập trình cho chương trình giảng dạy của họ.Việc mã hóa kiến ​​thức chuyển qua các ngôn ngữ. Khi bạn biết nhiều ngôn ngữ lập trình, bạn càng linh hoạt hơn trong việc sử dụng và đánh giá về chúng.

Cố gắng khám phá, tìm hiểu những điều mà bạn chưa biết. Nếu cảm thấy chưa ổn khi bạn không biết điều gì đó, cách duy nhất chúng ta có thể làm bằng cách tiếp thu thông tin mới.

Tuy nhiên, các bạn lập trình cũng nên thông thạo ngôn ngữ lập trình căn bản nhất. Có nhiều người, họ nghĩ rằng họ phải biết tất cả những công nghệ mới đang “hot” nhất thì mới có thể kiếm được một công việc lập trình ổn định. Trong khi bạn chỉ cần biết nhiều hơn những kiến thức cơ bản của một ngôn ngữ lập trình duy nhất.

Cải Thiện Kỹ Năng Lập Trình
Cải Thiện Kỹ Năng Lập Trình

Chia sẻ và giúp đỡ các lập trình viên khác

Đây chính là một cách rất hay để bạn nâng cao kỹ năng trong lập trình của bản thân. Trong việc lập trình, bạn có thể dễ dàng bỏ qua một nguyên tắc nhỏ đó là việc giúp đỡ hay dạy lập trình viên khác sẽ giúp bạn có thể bắt gặp chúng trong quá trình giúp đỡ. Và vì bạn phải bắt đầu giúp đỡ từ những nguyên tắc cơ bản nhất.

Nhờ đó bạn có thể tự rèn luyện, ghi nhớ lại những kĩ năng lập trình, biết thêm những cái mới nhờ chỉ dạy cho người khác.

Hãy cố gắng tìm hiểu xem vì sao mã code lại được viết theo cách đó

Bạn có thể lên mạng hay áp dụng bất kỳ cách nào để xác định vị trí mã code được các developer viết.

Hãy cố gắng tìm hiểu, học hỏi lý do tại sao nó được viết theo cách đó và hiểu được bản chất cơ bản của nó. Nếu như bạn đã hiểu lý do tại sao nó được viết theo cách thức đó, khi đó bạn có thể cải thiện khả năng lập trình theo logic của mình. Tốt hơn, bạn hãy viết lại  theo cách hiểu của bạn và hoàn thiện lại những phần code bạn cho là chưa được tối ưu.

Luôn tìm kiếm lỗi

Bạn cần luôn duy trì thói quen viết ra tất cả các lỗi, dù nhỏ như thế nào. Đây là một cách để không quên bất cứ điều gì. Bởi những sai sót nhỏ có thể dễ dàng bị bỏ xót nhưng nó lại đem hậu quả lớn.

Tiết kiệm thời gian

Bạn cần tiết kiệm nhiều thời gian nhất có thể: Tự động hóa tất cả mọi thứ bạn có thể có thể làm được. Để hoàn thành, bạn hãy sử dụng một IDE mạnh, cấu hình nó để làm những tác vụ giúp tiết kiệm thời gian, ví dụ như tạo macro cho những điều mà bạn thường làm đi làm lại nhiều lần, sử dụng phím tắt thể thao tác nhanh hơn.

Kỹ năng tự học

Hiện nay, tốc độ phát triển của các phần mềm là rất nhanh, kiến thức, các kĩ năng luôn thay đổi. Nếu bạn không tự học hỏi, tiếp thu những kiến thức mới thị sẽ khó bắt kịp được xu thế của thị trường hiện nay.
Ngay bây giờ các bạn hay cập nhập những xu hướng mới, những thay đổi, các công nghệ mới. Bởi vì khả năng tiếp thu của bạn sẽ nhanh bởi đã có những nền tảng sẵn.
Không chỉ cần cho lúc đi làm mà cả lúc bạn đi phỏng vấn thì những kiến thức này cũng vô cùng quan trọng. Nhà tuyển dụng sẽ đánh giá cao khả năng tự nghiên cứu, học hỏi của bạn.

Nâng cao kĩ năng lập trình
Nâng cao kĩ năng lập trình

Không ngừng thử thách và luôn học hỏi

Bạn cần thường xuyên học hỏi, tìm hiểu về các kiến thức mới, những thứ bạn chưa làm khi nào, hay về các chủ đề bạn ưa thích, như là một cách để bạn nâng cao kiến thức của bạn. Cuối cùng, hãy chia sẻ kinh nghiệm, các bài học cá nhân và không ngừng học hỏi cũng chính là một thói quen tốt. Viết blog chia sẻ kiến thức cũng chính là cách giúp bạn hệ thống hóa và học hỏi thêm về những kiến thức mới.

Thường xuyên cập nhật xu hướng mới

Hiện nay công nghệ phát triển từng ngày, và cùng với đó, lượng kiến thức của một lập trình viên cũng cần phát triển theo.
Bạn cũng cần theo dõi các ngôn ngữ lập trình, các framework mới, cũng như những phần cứng mới nhất để cập nhật xu hướng hiện nay.

Cần cải thiện kĩ năng học hỏi sẽ giúp bạn dễ dàng tiếp thu thêm nhiều công nghệ mới. Bạn sẽ phải học những ngôn ngữ, công nghệ và cả những công cụ mới với tần suất chóng mặt.

Kĩ năng đọc cũng cần được bạn chú trọng cải thiện, khi những công nghệ mới thường được mô tả chi tiết trong các tài liệu chính thức, và tìm hiểu từ tài liệu là cách tốt nhất để hiểu rõ một công nghệ nào đó.

Con đường phát triển và trở thành một lập trình viên chuyên nghiệp yêu cầu ở bạn nhiều thứ hơn là chỉ ngồi bên một chiếc bàn và gõ những dòng lệnh.

Xem thêm: Những trang web dạy lập trình online

Kết Luận

Lập trình thật tuyệt vời, giúp rèn luyện nhiều kĩ năng và cũng là một ngành nghề đang nhận được sự quan tâm rất lớn.