2013-07-06 13 views
9

Tôi có một người bạn mà giáo viên coi thực hành này tốt:Có thực hành tốt để tạo tham chiếu không được sử dụng cho giá trị được trả về bởi một phương thức được gọi không?

public void enterAnythingToContinue(){ 
    String junk = in.nextLine(); 
} 

Tôi googled này, nhưng không tìm thấy một lời giải thích cho nó, mặc dù như dự kiến ​​có những người dùng khác của phương pháp này; chủ yếu là giáo viên.

Có thể là nó không quan trọng nếu bạn làm điều đó hay không, và đó chỉ là vấn đề rõ ràng và sư phạm?

Thậm chí nếu bạn không có câu trả lời nhất định, mọi đầu vào đều được đánh giá cao.

+6

Không có điểm nào trong việc tạo biến rác ở đây ... – fge

+0

@fge là chính xác, nếu đó là dòng cuối cùng. – NINCOMPOOP

+1

Mùi này giống như 'Máy quét' không bao giờ đóng. Cũng một IDE tốt cho bạn biết về' rác 'là biến không sử dụng –

Trả lời

5

Điều này có thể chỉ ra sự mâu thuẫn của các phương thức trong Java. Bạn có thể sử dụng phương pháp này như thế này

String junk = in.nextLine(); 

hoặc

in.nextLine(); 

Có lẽ giáo viên của bạn sẽ nhấn mạnh vào một "chức năng" chứ không phải một "thủ tục" (void kiểu trả về). Nếu bạn chỉ định một giá trị, người đọc biết bạn đang sử dụng một phương thức trả về một giá trị.

Tôi không thấy bất kỳ lợi thế nào trong khi bạn đang sử dụng các IDE hiện đại.

+1

Tôi muốn nói chỉ định giá trị cho biến không được sử dụng sẽ rất có khả năng gây nhầm lẫn cho người đọc (* "Có điều gì thiếu ở đây không?" *), Thay vì đưa ra bất kỳ thông tin liên quan nào. –

+0

Cảm ơn bạn, điều này đã trả lời câu hỏi của tôi. Mặc dù tôi có một số khác: có bất kỳ nhược điểm nào đối với điều này không? Tôi tưởng tượng rằng không phải vì nó sẽ rất nhỏ nhặt. – user1972264

3

Bạn đang tạo tham chiếu đến đối tượng được trả về từ đối tượng này in.nextLine();. Các tài liệu tham khảo được thu thập ngay lập tức sau khi trở về từ phương pháp.

Có một điểm để làm điều đó chỉ khi bạn định làm gì đó với nó theo cùng một phương pháp.

+0

Vâng, đó là những gì tôi giả định. Nhưng bạn có biết lý do tại sao cô ấy 'ép buộc' thực hành này đối với học sinh của mình không? – user1972264

+2

lý do duy nhất tôi có thể nghĩ đến: đó là mục đích giáo dục - bạn nên nhớ rằng phương pháp này trả về sth.Nó thường bị lãng quên trong trường hợp bạn loại bỏ phần tử khỏi bộ sưu tập (loại bỏ phương thức trả về đối tượng đã xóa) – Tala

+1

Chỉ cần một nit rất nhỏ: tham chiếu * sẽ đủ điều kiện để thu thập * ngay sau khi trở về từ phương thức [the]. Nó sẽ không thực sự được thu thập cho đến khi người thu gom rác chạy. – arcy

5
String junk = in.nextLine(); 

Tên biến cho thấy giáo viên biết rằng giá trị sẽ không được sử dụng nữa và do đó chỉ đơn giản là cố gắng nhấn mạnh rằng phương thức trả về điều gì đó. Tuy nhiên, trong tất cả các trường hợp như vậy thay vì tạo ra một tham chiếu không cần thiết (và gây nhầm lẫn cho người đọc) thích ý kiến ​​để làm cho ý định rõ ràng.

in.nextLine(); // skipped 
+1

Đây là câu trả lời đúng; nó là dành cho mục đích tài liệu. –

+1

+1 Đã đồng ý. Là một lợi ích phụ nhỏ, phong cách này cũng cung cấp cho bạn một cái gì đó để xem xét trong trình gỡ lỗi. – user949300

+0

Điều đáng nói đến là trong Visual Studio (cho C# ít nhất) bạn có thể thấy kết quả của việc này mà không cần phải có một nhiệm vụ rác như thế này bằng cách nhìn vào tab "người dân địa phương" sẽ lưu trữ nó. –

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