[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
Đăng nhận xét