2012-06-13 28 views
5

tôi đã có được thói quen khai báo các biến sử dụng lại vòng bên ngoài từ khi làm việc trong Ngôn ngữ khác, như vậy:Việc khai báo một biến ngoài vòng lặp trong Objective-C có hiệu ứng tối ưu nào không?

NSString *lcword; 
for(NSString *word in tokens) 
{ 
    lcword = [ word lowercaseString ]; 
    ...  
} 

Có hợp lý để làm điều này trong Objective-C cũng có, hoặc là trình biên dịch đủ thông minh để làm cho nó không cần thiết?

+0

Trong hầu hết các trường hợp đó là không hợp lý để tái sử dụng một biến. Bug fest thông qua vi tối ưu hóa –

Trả lời

9

Không có lợi ích nào trong Mục tiêu-C mà tôi biết. AFAIK mỗi trình biên dịch Objective-C hiện đại phân bổ không gian ngăn xếp cho các biến cục bộ ở đầu hàm hoặc phương thức. Phạm vi biến để vòng lặp chỉ ngăn cản bạn sử dụng tên bên ngoài vòng lặp và ngăn cản trình biên dịch tái sử dụng không gian ngăn xếp nếu nó muốn.

Xem thêm: Is there any overhead to declaring a variable within a loop? (C++) (Đó là về một ngôn ngữ khác nhau, vì vậy tôi sẽ không đánh dấu nó như là một lừa bịp, nhưng những kỹ thuật biên dịch tại nơi làm việc rất giống nhau)

0

Nếu bạn có thể tái sử dụng một biến thì hãy thực hiện. Không cần phải khai báo một cái mới mỗi lần lặp nếu nó không cần thiết.

+3

Điều đó làm cho biến có phạm vi lớn hơn mức cần thiết, do đó khả năng bị lạm dụng – Mark

+2

lớn hơn tôi không thể đồng ý với điều này như đã nêu. Bạn nên sử dụng các biến theo cách có ý nghĩa nhất về mặt ngữ nghĩa. Cố gắng buộc sử dụng lại chúng là một công thức cho các lỗi. Trừ khi bạn có một vấn đề thực sự và sự thay đổi có thể giải quyết được vấn đề đó, việc giảm khả năng đọc của chương trình của bạn để đạt được hiệu suất đầu cơ hầu như luôn là một ý tưởng tồi IMO. – Chuck

+0

Tôi cũng đồng ý với bạn @chuck cho tôi giúp giảm bớt khả năng đọc để bất cứ khi nào tôi có thể sử dụng lại biến tôi làm. –

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