[Học lập trình C++] Chương 1: 1.4b Tại sao hàm lại hữu dụng, và làm thế nào để sử dụng chúng một cách hiệu quả

1.4b Tại sao hàm lại hữu dụng, và làm thế nào để sử dụng chúng một cách hiệu quả
Bây giờ chúng ta đã tìm hiểu hàm là gì và một vài tính năng cơ bản, hãy tìm hiểu xem tại sao chúng lại rất hữu dụng
Tại sao sử dụng hàm?
Lập trình viên mới thường hỏi, “tại sao chúng ta không đặt những dòng code trong hàm trực tiếp vào hàm main?” trong nhiều trường hợp (đặc biệt trong trường hợp cơ bản), nó có thể. Tuy nhiên, hàm cung cấp một số ưu điểm làm cho chúng đặc biệt hữu ích trong những chương trình không bình thường.
Sự tổ chức: khi các chương trình trở nên phức tạp hơn, đặt tất cả code nằm trong hàm main() trở nên cực kì phức tạp. Một hàm thì gần giống với một chương trình nhỏ và chúng ta chia nhỏ ra từ hàm main, mà không phải nghĩ về toàn bộ chương trình trong khi chúng ta viết chúng. Điều này cho phép chúng ta chia một công việc phức tạp thành công việc nhỏ hơn, đơn giản hơn, và giảm thiểu sự rối rắm của chương trình.
Khả năng tái sử dụng: Một khi hàm đã được viết, nó có thể được gọi nhiều lần từ trong chương trình. Điều này tránh được việc lặp lại code và giảm thiểu lỗi sao chép. Hàm cũng có thể được chia sẻ với chương trình khác, giảm thiểu số lượng code mà được viết từ đầu và test lại.
Kiểm tra lỗi: Bởi vì hàm giảm thiểu code thừa, có ít code để test trong lần đầu tiên. Cũng bởi vì hàm tự chứa chính nó, một khi chúng ta kiểm tra một để chắc chắn rằng nó hoạt động, chúng ta không cần test nó lại trừ khi chúng ta thay đổi nó. Điều này giảm số lượng code mà chúng ta phải test trong một thời điểm, giúp cho việc tìm lỗi dễ dàng hơn
Tính mở rộng: khi chúng ta cần mở rộng chương trình của chúng ta để xử lí trường hợp trước đây ta chưa xử lý, hàm cho phép chúng ta thay đổi trong một nơi và thay đổi ảnh hưởng đến toàn bộ các hàm được gọi.
Tính trừu tượng: Để sử dụng hàm, bạn chỉ còn biết tên của nó, đầu bào, đầu ra, và nó nằm nơi nào. Bạn không cần biết nó hoạt động thế nào, hoặc những mã khác nó phụ thuộc vào dể sử dụng nó. Điều này cực kì hữu ích để làm cho code của người khác có thể truy nhập vào (ví dụ như mọi thứ trong thư viện chuẩn).
Mặc dù nó không giống, mỗi lần bạn dùng std::cin hoặc cout để xuất hoặc nhập, bạn đang sử dụng hàm được cung cấp bởi thư viện chuẩn mà đáp ứng được tất cả các tiêu chuẩn phía trên.
Sử dụng hàm một cách hiệu quả nhất
Một trong những thử thách mà người mới lập trình gặp phải (bên cạnh học ngôn ngữ) đó là học cách khi nào và sử dụng như thế nào để có hiệu suất cao nhất. Có một vài hướng dẫn cơ bản cho viết hàm:
Code mà xuất hiện hơn một lần trong một chương trình nên tạo ra một hàm. Ví dụ, nếu chúng ta xuất một thứ gì đó theo cùng một cách nhiều lần, thì nó cũng là một trường hợp cần dùng hàm.
Code mà có đầu vào và đầu ra riêng rẽ cũng nên tạo hàm, đặc biệt nếu chúng phức tạp. ví dụ, nếu chúng ta có một danh sách các đối tượng cần sắp xếp, mã để sắp xếp tạo một hàm mặc dù chúng chỉ thực hiện một lần. Ngõ vào không được sắp xếp, và ngõ ra đã được sắp xếp.
Một hàm nên thực thi một công việc
Khi hàm trở nên quá dài, quá phức tạp, hoặc khó hiểu, nó nên được chia nhỏ thành những hàm nhỏ hơn. Đây được gọi là cấu trúc lại.
Thông thường, khi học C++, bạn sẽ viết nhiều chương trình rơi vào 3 công việc nhỏ sau:
1.    Đọc dữ liệu từ người dùng
2.    Tính toán giá trị với đầu vào
3.    In giá trị đã tính toán
Cho những chương trình bình thường (ít hơn 20 dòng code), một vài hoặc tất cả chúng có thể thực hiện bằng hàm main(). Tuy nhiên, đối với chương trình dài hơn (mỗi công việc tốt nhất nên làm một hàm riêng rẽ).
Người mới lập trình thường kết hợp bước 2 và bước 3 vào một hàm đơn. Tuy nhiên, điểu này vi phạm nguyên tắc “một công việc” của hàm. Một hàm tính toán giá trị nên trả về giá trị cho trình gọi và để trình gọi quyết định làm gì với giá trị đã được tính toán (giống như gọi một hàm khác để in giá trị).


Nguồn: learncpp.com

Nhận xét

Bài đăng phổ biến