chi phí bao gồm (thực tế, gọi #import) một tệp tiêu đề trong Mục tiêu-C là bao nhiêu?
Trình biên dịch có thể chạy ra ngoài để đọc những tệp này một cách không cần thiết. Sau khi #import
ed, các tệp bổ sung sẽ cần phải được phân tích cú pháp, biên soạn, v.v. cho mỗi bản dịch (ví dụ: .m
tệp), nó sẽ hiển thị trong - làm cho thời gian xây dựng và liên kết của bạn dài hơn nhiều. Dài hơn 10 lần là không phải là đáng ngạc nhiên.
Tôi cảm thấy mệt mỏi khi liên tục bao gồm các tiêu đề giống nhau ở các vị trí khác nhau, vì vậy tôi quyết định chỉ cần tạo tệp GlobalReferences.h bao gồm một số tiêu đề thường được tham chiếu.
Thông thường, đó là cách tiếp cận rất xấu. Vấn đề thường gặp là bất cứ khi nào bất kỳ tập tin nào được bao gồm bởi GlobalReferences.h được thay đổi, toàn bộ dự án của bạn và tất cả các phụ thuộc ở giữa sẽ cần phải được xây dựng lại, relinked, vv
Tùy chọn của tôi là tách các chương trình thành các thư viện nhỏ hoặc các gói mà phụ thuộc lẫn nhau này tồn tại (ví dụ: StoreKit.framework là một gói nhỏ/thư viện) - nhưng các thư viện/khung/gói đó không giải quyết được gì. Ngoài ra, các khai báo chuyển tiếp và lưu trữ dữ liệu của bạn trong lớp tiếp tục hoặc @implementation
có thể làm giảm đáng kể các phụ thuộc (vì bạn có thể bản địa hoá việc bao gồm một thư viện/tiêu đề chỉ với các bản dịch cần thiết).
Cuối cùng, dọn dẹp sau khi bao gồm lười là rất tốn thời gian, đặc biệt là khi có nhiều và bạn đã đợi cho đến khi thời gian xây dựng của dự án của bạn chậm một cách không thể. Về cơ bản, bạn phải quay trở lại và lấy đi những phụ thuộc không cần thiết, xây dựng lại, lặp lại (trong nhiều ngày).
Có bất kỳ chi phí đáng kể nào để bao gồm các tham chiếu đến các tệp khác nếu chúng thậm chí không được sử dụng không?
Tuyệt đối. Các dự án lớn hơn của bạn phát triển, sự bao gồm lười tệ hơn trở nên tồi tệ hơn. Một vài lười biếng bao gồm trong một dự án lớn có thể thêm hàng chục hoặc hàng trăm nghìn dòng cho hầu hết các tệp đã biên dịch của bạn và có thể kích hoạt việc biên dịch lại thường xuyên nhiều nguồn. Điều này làm tăng thêm sự phức tạp cho quá trình xây dựng - nhu cầu CPU tăng lên, việc sử dụng RAM tăng lên, đĩa IO đi lên ... và một lần nữa, điều này trở thành vấn đề lớn hơn khi các mã/dự án của bạn tăng độ phức tạp.
Cảm ơn bạn đã xóa thanh toán này. – LucasTizma