2011-02-09 27 views
15

đây là câu hỏi khá chung chung về việc mọi người có nên sử dụng dấu ngoặc đơn trên các cuộc gọi phương thức có tham số hay không. ví dụ:groovy: sử dụng dấu ngoặc đơn trên các cuộc gọi phương thức hay không?

def someFunc(def p) { 
... 
} 

sau đó gọi:

someFunc "abc" 

vs ...

someFunc("abc") 

Đây có phải là chỉ là vấn đề nhất quán, hoặc là có trường hợp sử dụng cụ thể cho từng?

Trả lời

18

Chủ yếu là câu hỏi về sự nhất quán và dễ đọc, nhưng lưu ý rằng Groovy không phải lúc nào cũng cho phép bạn thoát khỏi các dấu ngoặc đơn. Thứ nhất, bạn không thể bỏ qua dấu ngoặc đơn trong các cuộc gọi phương pháp lồng nhau:

def foo(n) { n } 
println foo 1 // won't work 

Xem phần tựa đề "Omitting parentheses" trong Style guide.

3

Không có trường hợp cụ thể nào mà bạn phải xóa chúng, bạn luôn có thể sử dụng chúng. Nó chỉ đẹp hơn để bỏ chúng ra.
Có trường hợp bạn không thể làm điều đó (bạn có thể nhầm lẫn thông số danh sách/bản đồ với toán tử subscript, gọi lồng nhau hoặc khi câu lệnh là bài tập), nhưng quy tắc chung là cuộc gọi ngoài cùng không có dấu ngoặc đơn nếu không có sự mơ hồ.
(xóa nhiều dòng, như tôi vừa mới nhận được thông báo rằng có một bài đã có thông tin rằng) Groovy 1.8 sẽ cho phép thậm chí nhiều trường hợp bỏ qua ngoặc, bạn có thể kiểm tra xem chúng ra tại
http://groovyconsole.appspot.com/script/355001

+0

ok, vì vậy đây có thể là một điểm extendability sau đó? giống như vấn đề cũ với những người không sử dụng mở và đóng dấu ngoặc nhọn trên ifs và vòng lặp? tức là mọi người phải luôn sử dụng các dấu ngoặc trong trường hợp ai đó có thể phải thêm chúng sau này ...? – Steven

+0

không chắc chắn nếu tôi nhận được điểm của bạn, nếu bạn có nghĩa là nếu nó sẽ là tốt hơn để sử dụng dấu ngoặc đơn trong một tuyên bố, nói, 'foo ('x')' thay vì 'foo 'x'' bởi vì bạn có thể muốn sau này viết' println foo ('x') 'tôi muốn nói rằng bỏ chúng ra, sử dụng' foo 'x'' và thêm dấu ngoặc đơn chỉ khi cần thiết. – jpertino

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