[Khóa học C++] Bài 7 - Why functions are useful, effectively

Share:
Xin nhắc lại một lần nữa, khóa học learn CPP này dành cho mọi đối tượng, từ những beginer cho đến những chuyên gia C++ muốn củng cố kiến thức. Cho nên chúng ta vẫn sẽ đi theo những thứ cực kì cơ bản trước.
Ở bài trước, bạn đã có cái nhìn tổng quan về function (hàm) trong C++. Ở bài này, chúng ta sẽ đi vào giải thích, tại sao bạn phải dùng function làm gì? Và việc sử dụng function đem lại cho developer những lợi thế gì.


Why use functions?

Những bạn newbie thường hay hỏi rằng "Chúng ta có thể đặt code trực tiếp vào trong hàm main thay vì để nó trong function hay không?". Và câu trả lời cho câu hỏi này là, "Chúng ta có thể nhưng ...". Việc sử dụng function sẽ có rất nhiều lợi ích cho developer trong các chương trình lớn. Thường thì bắt buộc họ phải dùng function.
  • Organization (việc tổ chức code) -- Khi bạn viết một chương trình lớn, phức tạp (giả sử một mình bạn có khả năng đảm nhiệm toàn bộ chương trình), và bạn đặt tất cả các dòng code trong hàm main. Bạn sẽ cảm nhận được, chương trình bạn đang viết nó phức tạp như thế nào. Việc làm đúng của bạn lúc này là chia nhỏ chương trình ra thành các function, mỗi function sẽ đảm nhiệm một chức năng nhỏ nào đó. Việc làm này giúp giảm độ phức tạp của chương trình đi rất rất nhiều. 
  • Reusability (khả năng có thể sử dụng lại) -- Khi một function được viết, nó có thể được gọi nhiều lần trong chương trình. Việc này ngoài làm giảm độ phức tạp, còn tránh việc lặp lại code, tránh việc copy/paste sai của lập trình viên. Function còn có thể được chia sẻ cho các chương trình khác, hay thậm chí bạn có thể share cho lập trình viên khác. 
  • Testing (kiểm thử) -- Việc dùng function sẽ giúp bạn giảm đi số lượng code dư thừa nhiều, và bạn chỉ cần test function một lần cho tới khi nó chạy đúng hoàn toàn, và bạn không cần test lần sau nữa. Điều này còn giúp bạn tìm ra bug dễ dàng hơn (vì bạn chỉ cần test function). Hãy tưởng tượng rằng khi bạn viết một chức năng nào đó (ở đây bạn không dùng function), và bạn copy/paste nó rất nhiều lần trong hàm main, và chức năng này của bạn có bug, bạn chắc chắn phải sử lại toàn bộ những chổ đã copy/paste. Nếu bạn sử dụng function, bạn chỉ cần sửa một lần.
  • Extensibility (khả năng mở rộng) -- Khi bạn muốn function của bạn thêm hoặc sửa một chức năng nào đó. Thì bạn chỉ cần sửa một lần, update 1 lần trong function. Giúp bạn tiết kiệm rất nhiều thời gian và công sức.
  • Abstraction (tính trừu tượng) -- Để mà sử dụng được function, bạn chỉ cần biết tên function, input, output, và nơi chứa function này. Bạn thậm chí không cần phải biết bên trong function làm gì. Đây là một điều cực kì hữu ích khi dùng function. Ví dụ hàm printf(), bạn rõ ràng không cần biết bên trong hàm này như thế nào, việc cũng chúng ta là gọi hàm và sử dụng.

Effectively using functions

Một trong những thách thức lớn nhất của các lập trình viên là làm thế nào để sử dụng function một cách hiểu quả. Và sau đây là một vài hướng dẫn dành cho bạn:
  • Những đoạn code được lặp lại trên một lần mà thực hiện chức năng giống nhau nên được viết thành một function.
  • Những đoạn code phức tạp, giải thuật hay thực hiện chức năng riêng biệt nào đó, nên viết thành function cho dù nó chỉ được gọi một lần. Ví dụ bạn một sort (sắp xếp) một mảng, bạn nên viết một function để sắp xếp mảng với input là mảng chưa được sắp xếp, output là mảng đã sắp xếp.
  • Một function chỉ nên biểu diễn một chức năng riêng biệt.
  • Khi bạn viết một function mà đã quá dài, quá khó để hiểu, khó để bảo trình, bạn nên chia function này thành các function nhỏ hơn (subfunction). Việc này gọi là refactoring (tái cấu trúc).
Trên đây là một vài hướng dẫn để bạn có thể sử dụng function tốt hơn, hiệu quả hơn.

Một vài newbie thường hay gộp việc tính toán và xuất output thành một function, việc này vi phạm quy tắc ở trên. Bạn nên viết function tính toán và trả về giá trị, và sau đó bạn có thể xuất giá trị này ra ở bên ngoài tùy ý, hoặc bạn có thể tạo luôn một function dùng để xuất giá trị ra ngoài.

Kết thúc!




2 nhận xét: