2012-02-13 20 views
5

Cả hai được chấp nhận bởi trình biên dịch:ToString() ở đây tốt, xấu hay đơn giản là dư thừa?

ssMinnow = listStrLineElements[VESSEL_TO_AVOID].ToString(); 
ssMinnow = listStrLineElements[VESSEL_TO_AVOID]; 

là một cách thích hợp hơn để người kia? ToString() hoặc không ToString(), đó là câu hỏi.

+1

nếu bạn biết rằng 'listStrLineElements' là ** luôn luôn ** một chuỗi, tôi sẽ không sử dụng nó, nó làm cho không có ý nghĩa đúc đến cùng một loại. – Kani

+0

Không phải listStrLineElements có phải là Danh sách không? Cái tên gợi ý điều đó. Nếu không, thay đổi tên cho phù hợp. – Holystream

+3

Điều này cũng được trình biên dịch chấp nhận: 'listStrLineElements [VESSEL_TO_AVOID]. ToString(). ToString(). ToString(). ToString();' nhưng điều đó không có nghĩa là mã tốt ;-) Nếu nó đã là một chuỗi, tại sao gọi ToString? –

Trả lời

7

Nó không chỉ thừa, mà còn nguy hiểm: nếu listStrLineElements[VESSEL_TO_AVOID] xảy ra là null, ứng dụng của bạn sẽ ném một ngoại lệ nếu bạn sử dụng ToString(); không có ToString(), nó chỉ đơn giản là gán null đến ssMinnow.

3

Nói chung, bạn không cần gọi phương thức ToString() là loại đối tượng được trả lại đã là String.

trong ví dụ của bạn, chúng tôi không thể nói rằng khi ssMinnow không hiển thị kiểu tuyên bố: Tôi giả sử bạn đã sử dụng var từ khóa đó sẽ làm việc với cả hai trong số họ hoặc listStrLineElements[VESSEL_TO_AVOID] lợi nhuận đã là một String

1

Đơn giản chỉ cần không cần thiết. Tôi thích rời khỏi ToString(), nơi không cần thiết nhưng đó là một cuộc gọi phán xét.

+0

Trong cách gọi đó là phán đoán, bản án là "tôi có nên viết mã dự phòng hay không", chắc chắn có một câu trả lời đúng ở đây. Không, bạn không nên viết mã dự phòng. –

+0

@Ben Trong ý nghĩa rằng nó không chính xác để lại nó ở đó, và một số người thích được rõ ràng ngay cả khi không cần thiết. Như tôi đã nói, tôi bỏ nó đi nhưng không nhất thiết là không làm theo cách đó. Đặc biệt là xem xét rằng chúng tôi không biết rằng đây là một chuỗi dựa trên các thông tin cung cấp, nó chỉ có thể là một kiểu dữ liệu với một chuyển đổi tiềm ẩn được xác định. Phrasing của câu hỏi, "tốt xấu hoặc dư thừa" cũng ngụ ý rằng người yêu cầu thấy một sự khác biệt giữa cái gì đó là không chính xác hoặc cái gì đó là sai, cho dù bạn muốn thừa nhận điều đó hay không. – heisenberg

+0

Nó không chính xác để lại nó ở đó, thực tế là có một cuộc gọi đến 'ToString' ngụ ý rằng nó là cần thiết, khi nó không phải là. Điều này làm cho mã ít có thể đọc được như một dev khác có thể lãng phí thời gian cố gắng tìm ra TẠI SAO mã này là có vì nó dường như không phục vụ mục đích nào. Một số người đã chọn để viết mã xấu, nó không làm cho nó đúng.Tôi thừa nhận có một sự khác biệt giữa xấu và dư thừa trong đó có nhiều loại mã xấu hơn mã dự phòng, nhưng mã dự phòng luôn luôn là xấu. Lưu ý rằng tôi không xem xét mã được thêm vào cho mục đích dễ đọc là thừa, nó phục vụ một mục đích. –

4

Nếu listStrLineElements[VESSEL_TO_AVOID] trả về một chuỗi, thì có, nó là thừa. nếu nó trả về một số loại khác, thì không, nó không thừa.

0

Không sử dụng ToString nếu bạn đã trả về một chuỗi. Bạn chỉ cần thêm chi phí không cần thiết.

0

Nó không đơn giản như đã nêu. Dự phòng, có thể; tốt hay xấu, một vấn đề của ý kiến. Vì toString() sẽ được gọi là anyway nếu đối tượng được coi là một chuỗi ở đâu đó, việc sử dụng rõ ràng toString() có thể đóng vai trò như một biển chỉ dẫn cho nhà phát triển đọc mã. Các cuộc gọi rõ ràng mô tả nhiều hơn về ý định ban đầu hơn để lại nó như là một giả định cho trình biên dịch để thực hiện.

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