Ví dụ.
boolean isCurrent = false;
Bạn đặt tên cho getter và setter của nó là gì?
Ví dụ.
boolean isCurrent = false;
Bạn đặt tên cho getter và setter của nó là gì?
Câu trả lời:
Giả sử bạn có
boolean active;
Phương thức truy cập sẽ là
public boolean isActive(){return this.active;}
public void setActive(boolean active){this.active = active;}
Xem thêm
hasCustomName
, Bây giờ tôi nên đặt tên gì cho các phương thức getter và setter ? Là setHasCustomName[setter]
và hasCustomName[getter]
tốt?
public boolean isCustomerName(){return this.customerName;} public void setCustomerName(boolean customerName){this.customerName= customerName;}
http://geosoft.no/development/javastyle.html#Specific
is
tiền tố nên được sử dụng cho các biến và phương thức boolean.
isSet
,isVisible
,isFinished
,isFound
,isOpen
Đây là quy ước đặt tên cho các phương thức boolean và các biến được Sun sử dụng cho các gói lõi Java. Sử dụng tiền tố là giải quyết một vấn đề phổ biến là chọn các tên boolean xấu như trạng thái hoặc cờ. isStatus hoặc isFlag đơn giản là không phù hợp và lập trình viên buộc phải chọn những cái tên có ý nghĩa hơn.
Các phương thức Setter cho các biến boolean phải đặt tiền tố như trong:
void setFound(boolean isFound);
Có một vài lựa chọn thay thế cho tiền tố phù hợp hơn trong một số tình huống. Đây là những tiền tố có, có thể và nên:
boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;
hasData
, setter sẽ trông như thế nào? Chắc chắn, có setData(bool hasData)
vẻ rất sai đối với tôi ...
has
, can
, should
tiền tố không phải là một phần của đặc tả. Tham khảo Đặc tả JavaBeans 1.01 phần 8.3.
boolean isIsCurrent(){...}
nếu không thì khung được sử dụng để giải tuần tự hóa đối tượng, đã phàn nàn getter not found for property isCurrent
.
Đối với một trường được đặt tên isCurrent
, việc đặt tên getter / setter chính xác là setCurrent()
/ isCurrent()
(ít nhất đó là những gì Eclipse nghĩ), rất khó hiểu và có thể được truy trở lại vấn đề chính:
Lĩnh vực của bạn không nên được gọi isCurrent
ở nơi đầu tiên. Là một động từ và động từ không phù hợp để đại diện cho trạng thái của Object. Thay vào đó, hãy sử dụng một tính từ và đột nhiên tên getter / setter của bạn sẽ có ý nghĩa hơn:
private boolean current;
public boolean isCurrent(){
return current;
}
public void setCurrent(final boolean current){
this.current = current;
}
get
tiền tố khi truy xuất Boolean
vs so is
với aboolean
Tôi tin rằng nó sẽ là:
void setCurrent(boolean current)
boolean isCurrent()
Có lẽ đã đến lúc bắt đầu sửa đổi câu trả lời này? Cá nhân tôi sẽ bỏ phiếu cho setActive()
và unsetActive()
(lựa chọn thay thế có thể được setUnActive()
, notActive()
, disable()
, vv tùy thuộc vào ngữ cảnh) vì "setActive" ngụ ý là bạn kích hoạt nó bất cứ lúc nào, mà bạn thì không. Đó là loại phản trực quan để nói "setActive" nhưng thực sự loại bỏ trạng thái hoạt động.
Một vấn đề khác là, bạn không thể nghe cụ thể một sự kiện SetActive theo cách CQRS, bạn sẽ cần lắng nghe 'setActiveEvent' và xác định bên trong rằng wether của người nghe có thực sự được kích hoạt hay không. Hoặc tất nhiên xác định sự kiện nào sẽ gọi khi gọi setActive()
nhưng điều đó đi ngược lại nguyên tắc Tách biệt các mối quan tâm.
Đọc tốt về điều này là bài viết FlagArgument của Martin Fowler: http://martinfowler.com/bliki/FlagArgument.html
Tuy nhiên, tôi đến từ một nền tảng PHP và thấy xu hướng này đang được áp dụng ngày càng nhiều. Không chắc chắn bao nhiêu điều này sống với sự phát triển Java.
private boolean current;
public void setCurrent(boolean current){
this.current=current;
}
public boolean hasCurrent(){
return this.current;
}
has
được sử dụng cho BO hoặc một dịch vụ như vậy với một số xử lý trong khi đối với POJO is
. và xin vui lòng thêm một số mô tả về câu trả lời của bạn.
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()
Đối với booleans bạn cũng có thể sử dụng
public boolean isCurrent()
Là một setter, làm thế nào về:
// setter
public void beCurrent(boolean X) {
this.isCurrent = X;
}
hoặc là
// setter
public void makeCurrent(boolean X) {
this.isCurrent = X;
}
Tôi không chắc những cách đặt tên này có ý nghĩa với người nói tiếng Anh bản địa hay không.