2012-11-06 100 views
8

Đây chỉ là một câu hỏi trợ giúp chung, tôi đang cố gắng biết lợi thế của việc có một tập hợp các hàm nhỏ trong mã của ứng dụng C++ là có một hàm phức tạp dài có chứa tất cả các câu lệnh cần thiết để giải quyết vấn đề?Lợi thế của việc chia nhỏ mã thành nhiều hàm nhỏ trong C++ là gì?

+18

Tính bảo trì. Có thể hiểu được. Khả năng sử dụng lại. Khả năng ghi nợ. –

+0

quan trọng hơn @KerrekSB khả năng mở rộng –

+0

Tôi cũng sẽ thêm dễ dàng kiểm tra, trong đó có xu hướng để tạo ra tất cả những người khác đã được đặt tên, theo kinh nghiệm của tôi. – eh9

Trả lời

18

Chỉnh sửa Tín dụng cho việc ghi nhớ này được chuyển đến người nhận xét trong OP.

Việc chia nhỏ các chức năng lớn thành nhiều cái nhỏ hơn có thể dẫn đến MURDER! Trong trường hợp này, có thể là một điều tốt. :)

M-Bảo trì. Các chức năng nhỏ hơn, đơn giản hơn dễ bảo trì hơn.

U - Dễ hiểu. Các hàm đơn giản dễ hiểu hơn.

R - Khả năng tái sử dụng. Khuyến khích tái sử dụng mã bằng cách di chuyển các hoạt động phổ biến đến một hàm riêng biệt.

D - Khả năng gỡ lỗi. Dễ dàng gỡ lỗi các hàm đơn giản hơn các hàm phức tạp.

E - Khả năng mở rộng. Việc tái sử dụng và bảo trì mã dẫn đến các hàm có thể tái cấu trúc dễ dàng hơn trong 6 tháng.

R - Hồi quy. Tái sử dụng và mô đun hóa dẫn đến thử nghiệm hồi quy hiệu quả hơn.


Có một vài lợi ích tiềm năng để phá vỡ chức năng lớn lên trong chức năng nhỏ hơn. Theo thứ tự chúng rơi ra khỏi bộ não của tôi:

  1. Nó khuyến khích sử dụng lại mã. Thông thường trong các chức năng lớn bạn phải làm nhiều hơn hoặc ít hơn cùng một điều nhiều lần. Bằng cách khái quát hóa điều này trong một hàm chung duy nhất, bạn có thể sử dụng một khối mã đó ở nhiều nơi.

  2. Việc sử dụng lại mã có thể hỗ trợ độ bền và khả năng bảo trì bằng cách cách ly các lỗi tiềm ẩn cho một địa điểm thay vì nhiều lần.

  3. Dễ hiểu ngữ nghĩa của hàm khi có ít dòng mã hơn và một loạt các cuộc gọi đến các hàm được đặt tên tốt.

  4. Nếu bạn phản đối các chức năng có nhiều điểm trả về, việc phá vỡ các chức năng lớn có thể giúp giảm chúng.

  5. Nó giúp xác định và cô lập (tiềm năng) các vấn đề với phụ thuộc dữ liệu tinh tế mà nếu không sẽ khó nhận thấy.

Điều quan trọng cần lưu ý là bạn nên làm tốt với điều xấu. Ngoài ra còn có một vài nhược điểm tiềm ẩn để phá vỡ các chức năng lớn lên:

  1. Nếu chức năng lớn hoạt động trước đây, cố gắng mô đun hóa nó có thể tạo ra khuyết tật.

  2. Trong các ứng dụng đa cấp, bạn có thể giới thiệu các deadlocks và điều kiện chủng tộc nếu chính sách đồng bộ hóa của bạn là tinh tế hoặc chỉ đơn giản là sai.

  3. Bạn có thể giới thiệu lần truy cập hiệu suất từ ​​các cuộc gọi hàm.

+0

Cảm ơn bạn rất nhiều – Mody

3

Mã rõ ràng hơn có nghĩa là dễ hiểu và dễ bảo trì hơn.

+0

Cảm ơn bạn, câu trả lời rất đơn giản và rõ ràng – Mody

0

Một hàm phức tạp lớn chỉ là: phức tạp.

Việc chia mã của bạn thành các hàm riêng biệt sẽ giúp mã của bạn dễ làm việc hơn. Trước tiên, khi bạn tìm kiếm một phần của mã thực hiện một nhiệm vụ cụ thể, nó sẽ dễ dàng hơn để tìm thấy nếu nó ở trong chức năng riêng của nó.

Thứ hai, việc thay đổi một hàm dễ dàng hơn nhiều khi đơn giản - bạn không cần phải hiểu một số lượng lớn mã để sửa đổi hàm đó. Ngoài ra, bạn có thể thấy dễ dàng hơn khi sử dụng lại mã đó trong một dự án khác khi nó được chia thành các hàm nhỏ hơn có thể được sử dụng cho nhiều mục đích hơn là chỉ một hàm lớn duy nhất.

0

Những lợi thế của việc tách một chương trình trong nhiều chức năng bao gồm:

  • Hầu hết các chương trình có một số chức năng cơ bản đó là cần thiết ở nhiều nơi. Có chức năng đó trong một chức năng riêng biệt có nghĩa là nó là rõ ràng hơn khi chức năng tương tự được sử dụng và bạn cũng chỉ phải sửa chữa vấn đề với nó chỉ một lần.
  • Bằng cách tách chương trình thành các hàm, bạn có thể giới thiệu nhiều mức trừu tượng trong mã. Trong chức năng chính, bạn có được một cái nhìn tổng quát về những gì chương trình làm và mỗi cấp độ xuống trên cây gọi cho thấy chi tiết hơn về cách thức các khía cạnh nhất định được thực hiện.
0

Trong các hệ thống thiết bị y tế, việc phá vỡ mã thành các phần nhỏ hơn làm giảm nhu cầu kiểm tra hồi quy và thu hẹp ảnh hưởng của thay đổi đến phạm vi nhỏ hơn.

Ví dụ: giả sử chúng ta có 15 hàm cho 3 chủ đề trong một tệp.

Nếu tôi thay đổi một trong các chức năng trong tệp, mọi thứ cần được xây dựng lại và được kiểm tra lại.
Nếu tôi chia tệp thành 3 tệp riêng biệt gồm 5 hàm, tôi chỉ cần tạo lại 5 hàm và thử lại 5 hàm. Thử nghiệm 5 chức năng đòi hỏi thời gian thử nghiệm ít hơn 15 chức năng.

Ngoài ra, khi các nhóm người đang làm việc trên cùng một cơ sở mã, việc chia mã sẽ giảm xác suất của hai hoặc nhiều người làm việc trên cùng một tệp. Nhiều người làm việc trên cùng một tệp có nhiều xung đột như mã của một người bị vô tình xóa trong khi đăng ký.

Các vấn đề liên quan