Các quy ước đặt tên:


175

Câu hỏi nhanh: Tôi muốn nghe suy nghĩ của bạn về việc sử dụng "Trạng thái" so với "Trạng thái" khi đặt tên cho cả hai trường như "Foo.cienState" so với "Foo.status" và các loại, như "enum FooState" vs "enum FooStatus ". Có một hội nghị được thảo luận ngoài đó? Chúng ta chỉ nên sử dụng một? Nếu vậy cái nào, và nếu không, chúng ta nên chọn như thế nào?


14
Heh. Một ngày khác tại nơi làm việc tôi đã bắt gặp một số cấu trúc có một thành viên tên là "bang" và một thành viên khác tên là "trạng thái", và chúng là những thứ khác nhau. Tôi bắt đầu suy nghĩ về ý nghĩa của những từ đó, và về việc có nên thay đổi nó hay không, nhưng mật mã đã cũ và tồi tệ và đang hoạt động, vì vậy tôi đã để con chó đang ngủ đó nói dối. Ồ .. đây có lẽ nên là một "bình luận", chứ không phải là một "câu trả lời, eh? Nhận xét, câu trả lời, trạng thái, trạng thái ... bất cứ điều gì.
smcameron

9
Và tất nhiên điều này đã bị đóng cửa. Tốt ol 'SO.
jn1kk

2
@jsn không chỉ đóng cửa (những ngày này không phải là gì?), mà còn bởi một cú sút xa, thứ phổ biến nhất tôi đã đóng góp ở đây :)
Sophistifunk

8
Đây là một câu hỏi lập trình hợp pháp. martinfowler.com/bliki/TwoHardThings.html

2
Trạng thái là một nhãn đơn giản, như "khỏe mạnh", "xuống cấp", "không khả dụng", v.v. Nhà nước bao gồm tất cả các thông tin chi tiết; ví dụ: CPU sử dụng và tải trung bình, sử dụng bộ nhớ, số liệu JVM, sử dụng đĩa, v.v.

Câu trả lời:


107

Nó phụ thuộc vào ngữ cảnh

Trạng thái thường đề cập đến toàn bộ trạng thái của một thực thể - tất cả các giá trị và mối quan hệ của nó tại một thời điểm cụ thể (thường là hiện tại)

Trạng thái là nhiều hơn về thời gian, giả sử, nơi có một thứ gì đó trong quy trình hoặc quy trình làm việc - có bẩn không (do đó cần phải lưu), đã hoàn tất chưa, có phải đang chờ xử lý không, v.v.

Tôi hy vọng điều đó sẽ giúp bạn trong quyết định của bạn.


211

IMO:

trạng thái == bạn có khỏe không [tốt xấu]

bang == bạn đang làm gì? [nghỉ ngơi / làm việc]


17
Bạn đã ở đâu trong năm 2009? Câu trả lời này có ý nghĩa nhất trong thuật ngữ kỹ thuật (trạng thái cpu, trạng thái luồng, máy trạng thái; trạng thái trả về, trạng thái âm lượng đột kích, v.v.) và thậm chí nhiều thứ khác (trạng thái ứng dụng, trạng thái tài khoản, v.v.). Điều duy nhất tôi có thể nghĩ là không nhất quán là những thứ như "tình trạng" hay "tình trạng" giống như "trạng thái" của bạn (ý tưởng tốt / xấu về những điều đang diễn ra, thay vì những điều đang diễn ra tự đi).
Peter

4
Bang cũng ngụ ý rằng họ nắm giữ nhiều thông tin hơn là chỉ "nghỉ ngơi / làm việc" - nhưng tất cả các chi tiết về công việc (hoặc nghỉ ngơi) mà nó đang làm.
BrainSlugs83

3
"Tôi đang xây dựng một ngôi nhà trên cây ở sân sau của anh tôi" sẽ là một ví dụ chi tiết hơn về trạng thái , như bạn đề xuất, @ BrainSlugs83. Trong ví dụ này, trạng thái của tôi có thể là mệt mỏi / đổ mồ hôi / tràn đầy năng lượng / hạnh phúc.
tăng vọt vào

4
Tôi thích ví dụ này. Sạch sẽ và súc tích. Đối với việc sử dụng thực tế của tôi, tôi có thể khái quát nó thành một tiên đề bằng cách nói rằng nó Statesẽ phản ánh "nút được chỉ định" trong biểu đồ của các nút trạng thái của máy trạng thái (hoặc dòng công việc), trong đó mô tả có thể dễ dàng là một tính từ bằng lời nói (thường kết thúc bằng " -ing "), trong khi đó Statuslà một thuộc tính đơn giản của đối tượng, một tính từ đơn giản, có thể được sử dụng bởi một trình kích hoạt hoặc như giá trị quan sát cho một quyết định thay đổi (hoặc giữ) trạng thái. Có lẽ tôi đang xem xét lại nó. Tôi làm điều đó ..
Alan McBee - MSFT

6
Tôi đồng ý: TÌNH TRẠNG là kết quả hoặc tiến trình thay đổi trong NHÀ NƯỚC.
Neil

16

Thông thường tôi sẽ sử dụng Trạng thái để chỉ tình trạng hiện tại của một đối tượng hoặc toàn bộ hệ thống. Tôi sử dụng trạng thái để đại diện cho kết quả của một số hành động. Ví dụ, trạng thái của một đối tượng có thể được lưu / chưa lưu, hợp lệ / không hợp lệ. Trạng thái (kết quả) của một phương thức là thành công / không thành công / lỗi. Tôi nghĩ rằng điều này khá tốt với định nghĩa về trạng thái là " trạng thái hoặc điều kiện liên quan đến hoàn cảnh ", hoàn cảnh trong trường hợp này là áp dụng một hành động / phương pháp.


8

Một lý do khác (hoàn toàn thực dụng) để thích trạng thái hơn trạng thái là số nhiều là đơn giản:

  • tiểu bang -> tiểu bang
  • trạng thái -> trạng thái

Và tin tôi đi, sớm muộn bạn cũng sẽ có một danh sách hoặc mảng hoặc bất kỳ trạng thái nào trong mã của bạn và sẽ phải đặt tên cho biến.


3
chỉ tự hỏi, không nên trạng thái số nhiều được stati?
BiAiB

Wiktionary nói các trạng thái: en.wiktionary.org/wiki/status#Noun . Các ngôn ngữ khác có số nhiều khác nhau cho nó mặc dù.
cướp

9
Số nhiều Latin là "stats", với một u dài, không phải stati.
Paŭlo Ebermann

6

Tôi nghĩ rằng nhiều người sử dụng "Trạng thái" để thể hiện trạng thái của một đối tượng nếu không vì lý do nào khác ngoài "Nhà nước" đề cập đến một bộ phận chính trị của Hoa Kỳ.


11
đó không phải là lý do tôi từng sử dụng, cũng như bất kỳ ai tôi từng làm việc cùng hoặc đọc văn bản từ ...
Luke Schafer

4
Vậy thì sao? Đó là một lý do hợp lệ. Đó là một quy ước đặt tên.
Dave Markle

4
Vâng. Ở Úc cũng vậy, chúng tôi sử dụng thuật ngữ Bang để mô tả các thuộc địa riêng lẻ trước đây được thống nhất trong Khối thịnh vượng chung vào năm 1901. Vì vậy, tôi có xu hướng chỉ sử dụng .status, vì có .state thường được sử dụng trong các cấu trúc dữ liệu có địa chỉ.
Matthew Schinckel

Vậy địa chỉ.state = Tasmania; có ý nghĩa, nhưng device.state sẽ không liên quan đến địa lý.
tăng vọt vào

3

Tôi nghĩ rằng bạn có thể thêm một góc nhìn khác vào phương trình, cụ thể là 'người gửi yêu cầu'.

Từ góc độ người gửi, tôi sẽ giao tiếp trạng thái của mình với bất kỳ ai sẵn sàng lắng nghe. Trong khi từ góc độ người yêu cầu, tôi sẽ hỏi về tình trạng của ai đó.

Những điều trên cũng có thể được giải thích theo quan điểm không chắc chắn:

  • Xác định = trạng thái
  • Không xác định = trạng thái

Trạng thái của bạn là gì? Tôi đang trong trạng thái thư giãn.

Tôi khá chắc chắn rằng đây chỉ là một cách giải thích, có thể không áp dụng cho tình huống cụ thể của bạn.


1

Kiểm tra từ điển nhanh cho thấy trạng thái là một từ đồng nghĩa với trạng thái, nhưng có một cách giải thích bổ sung về một vị trí liên quan đến vị trí của người khác .

Vì vậy, tôi sẽ sử dụng trạng thái cho một tập hợp các trạng thái không có bất kỳ thứ tự hoặc vị trí ngầm nào liên quan đến nhau và trạng thái cho những trạng thái đó (có lẽ là tắt ở chế độ chờ?). Nhưng đó là một sự khác biệt tốt.


1

Rất nhiều thực thể tôi giao dịch (tài khoản, khách hàng) có thể có Trạng thái (TX, VA, v.v.) và Trạng thái (Hoạt động, Đã đóng, v.v.)

Vì vậy, quan điểm về thuật ngữ gây hiểu lầm là có thể. Chúng tôi có một quy ước đặt tên cơ sở dữ liệu được tiêu chuẩn hóa (không phải lựa chọn cá nhân của tôi) trong đó một trạng thái được đặt tên ST_CDvà trạng thái sẽ là ACCT_STAT_CD.

Với một enum trong một milieux OO, vấn đề này không quan trọng, vì nếu bạn có loại an toàn nghiêm ngặt, trình biên dịch sẽ đảm bảo rằng không ai cố gắng làm điều này:

theCustomer.State = Customer.Status.Active;

Nếu bạn ở trong một môi trường năng động, tôi sẽ lo lắng hơn!

Nếu bạn đang làm việc với một miền trong đó các máy trạng thái hoặc thông tin trạng thái khác và thuật ngữ đó là chủ yếu, thì tôi nghĩ Nhà nước hoàn toàn ổn.


Địa chỉ thuộc về địa chỉ của khách hàng, không phải khách hàng, ví dụ: theCustomer.MailAddress.State = Iowa;
tăng vọt vào

@spemble Có thể, và có thể không. Nó cũng có thể là trạng thái sinh hoặc trạng thái cư trú khi gắn liền với một người vắng mặt một địa chỉ, và tất nhiên có thể được đính kèm với nhiều thực thể khác như địa chỉ, giấy phép, giấy phép, v.v ... Trong mọi trường hợp, tôi không chắc chắn nó liên quan đến câu hỏi liệu có sự không rõ ràng trong việc sử dụng thuật ngữ tên miền có vấn đề phổ biến như Trạng thái cho việc triển khai cụ thể của máy / cờ / trạng thái hay không. Và sau đó cho dù trạng thái hoặc trạng thái có hoặc không có ý nghĩa khác nhau.
Cade Roux

0

Chúng tôi đã có cuộc tranh luận chính xác về dự án hiện tại của tôi một thời gian trước. Tôi thực sự không có sở thích, nhưng tính nhất quán là một cân nhắc quan trọng.

Định nghĩa đầu tiên (có một số) về "trạng thái" trong Sharp PW-E550 của tôi (một từ điển tuyệt vời, tôi có thể thêm vào) là "điều kiện cụ thể mà ai đó hoặc một cái gì đó đang ở vào một thời điểm cụ thể." Định nghĩa đầu tiên của "địa vị" là "vị thế xã hội, nghề nghiệp hoặc quan điểm khác của ai đó hoặc một cái gì đó". Ngay cả định nghĩa thứ hai (và cuối cùng) về "trạng thái" cũng kém hơn "trạng thái" trong bối cảnh này: "vị trí của các vấn đề tại một thời điểm cụ thể, đặc biệt là trong bối cảnh chính trị hoặc thương mại."

Vì vậy, nếu chúng tôi muốn nó dễ dàng nhất có thể cho ai đó sử dụng từ điển của tôi (nó sử dụng Từ điển Oxford Mỹ mới, 2001), "trạng thái" sẽ là lựa chọn tốt nhất.

Hơn nữa, có một mẫu thiết kế được mô tả trong cuốn sách của Gang of Four được gọi là Mẫu trạng thái, thiết lập vững chắc thuật ngữ trong từ vựng điện toán.

Vì những lý do này, tôi đề nghị "nhà nước".

PS có phải bạn bị DDM không? Bạn vẫn còn cay đắng về "trạng thái" so với "trạng thái"? !!!!!!! LMAO!


-1

Vâng, họ có nghĩa là điều tương tự. Tôi không nghĩ cần phải ban hành một sở thích tuyệt vời của người này, nhưng tôi thường đi với "địa vị", bởi vì tôi thích những thứ nghe có vẻ Latin và cổ điển. Ý tôi là, trong thế giới của tôi, số nhiều của lược đồ là schemata, vì vậy với tôi không có cách nào khác để đi với nó.


Họ không có nghĩa là điều tương tự.
BrainSlugs83

Bối cảnh cho câu hỏi này là phần mềm, đó là lý do tại sao câu hỏi hợp lệ. Các hệ thống máy tính khá nhiều luôn phải xác định và báo cáo trạng thái / trạng thái của các bộ phận khác nhau của hệ thống và việc đặt tên mô tả trở nên rất quan trọng đối với những người đang gỡ lỗi hoặc cải thiện phần mềm.
tăng vọt vào

-1

Sophistifunk, tôi chắc chắn bạn sẽ nhận được các đối số cho cả Trạng thái và Trạng thái. Điều quan trọng nhất để làm là bạn chọn một, và chỉ sử dụng một. Tôi đề nghị thảo luận điều này với nhóm của bạn và xem mọi người đồng ý về điều gì.

Điều đó nói rằng, đề nghị của tôi là như sau.

Giả sử bạn đang sử dụng ngôn ngữ lập trình hướng đối tượng, "trạng thái" của đối tượng được thể hiện bằng chính đối tượng đó. Một sốObject.state là imo sai lệch. Tôi không chắc "trạng thái" thể hiện điều gì trong ví dụ của bạn, nhưng trực giác tự nhiên của tôi là thích điều này hơn.


1
Chọn một và chỉ gắn bó với một là vô lý. Hai có ý nghĩa và ý nghĩa khác nhau. Hãy xem xét ví dụ "GameState" so với "GameStatus" - hai cái này có ý nghĩa rất khác nhau và không thể thay thế cho nhau.
BrainSlugs83

-2

Không giống chút nào. Dừng lại và bắt đầu là trạng thái. Dừng lại và bắt đầu là trạng thái.

Nếu bạn làm cho chúng giống như vậy, làm thế nào để bạn mô tả chiếc xe đã dừng lại nhưng hiện đang bắt đầu. Hoặc một ứng dụng hiện đang được nộp nhưng chưa được đưa vào quy trình phê duyệt hoặc đang được phê duyệt nhưng hiện đang bị hoãn với điều kiện lỗi chờ chữ ký?


1
OP đã hỏi về việc sử dụng cái này hay cái khác; không phải cả hai. Người ta có thể tranh luận rằng đó Startingthực sự là một Statehoàn toàn khác biệt với Stopped. Nó phụ thuộc vào ngữ nghĩa của hệ thống của bạn . Kiểm tra, ví dụ, Dịch vụ Windows.
Andrew Barber
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.