Đó là tất cả về mã nào cần phải biết mã nào khác. Bạn muốn giảm số lượng các tập tin khác nhận thức được đến mức tối thiểu cho họ để làm công việc của họ.
Họ cần biết rằng một hàm tồn tại, loại nào họ cần truyền vào nó và loại nào sẽ trả về, nhưng không phải là những gì nó làm trong nội bộ. Lưu ý rằng nó cũng quan trọng từ quan điểm của lập trình viên để biết những gì các loại thực sự có ý nghĩa. (ví dụ: int là hàng, và đó là cột) nhưng chính mã đó không quan tâm. Đây là lý do tại sao việc đặt tên hàm và tham số hợp lý là đáng giá.
Như những người khác đã nói, nếu không có gì trong tệp cpp có giá trị hiển thị với các phần khác của mã, như thường là trường hợp với main.c, thì không cần tệp tiêu đề. Nó đôi khi đáng để đặt mọi thứ bạn muốn phơi bày trong một tệp tiêu đề duy nhất (ví dụ, Func1and2and3.h), để bất cứ điều gì mà biết về Func1 cũng biết về Func2, nhưng cá nhân tôi không quan tâm đến điều này, như nó có nghĩa là bạn có xu hướng tải một đống rác cùng với những thứ bạn thực sự muốn.
Tóm tắt: Hãy tưởng tượng rằng bạn tin rằng ai đó có thể viết mã và thuật toán, thiết kế, v.v. đều tốt. Bạn muốn sử dụng mã họ đã viết. Tất cả những gì bạn cần biết là những gì để cung cấp cho họ để có được một cái gì đó để xảy ra, những gì bạn nên cung cấp cho nó, và những gì bạn sẽ nhận được trở lại. Đó là những gì cần phải đi trong các tập tin tiêu đề.
Không +1 từ tôi vì bạn không đề cập đến mẫu: ( – Marcin
Tôi tập trung nhiều hơn ở phía C, nhưng tại sao tôi lại đề cập đến các mẫu, ngay cả đối với C++? Tôi không thấy khả năng ứng dụng của chúng đối với các tệp tiêu đề được sử dụng (chúng có thể đi vào các tệp tiêu đề nhưng có thể typedefs và tôi không đề cập đến chúng) một cách rõ ràng) – paxdiablo