程序代碼中,怎麼區分status和state?
平時在寫代碼的過程中,相信每個程序員都會有這樣的經歷:一個成員變數,希望表達當前實體的狀態,那麼請問這個時候,究竟如何區分status和state呢?選用哪個合適呢?
state就是一組變數。status則是它們的心情。
網上找到的解釋:state所指的狀態,一般都是有限的、可列舉的,status則是不可確定的。形象的比方,你體重多少公斤,屬於status,但說你體重屬於偏瘦、正常還是偏胖,那就是state.
問了下別人,似乎這麼理解可能合適點。與@lanisle 的觀點相近。
state往往就是一個實體固有的狀態。status則偏向於運行時狀態。正好部門內部在討論命名問題,大家的看法是:
1、看各類文檔裡面 status 和 state 是混用的,主要是喜好和習慣問題
2、書面上可能有區分,程序里還好。個人習慣:
1、被描述一個實體有固定且穩定的狀態,用 state,如(隱藏、顯示),(是、否),(可用、不可用)2、被描述的實體比較籠統的其他狀態,用 status。一時半會想不起例子,後面補充。state:比較常用,各種狀態都可以用它,但是它更著重於一種心理狀態或者物理狀態。
Status:用在人的身上一般是其身份和地位,作「狀態,情形」講時,多指政治和商業。
state傾向於condition,是一種延續性的狀態。
status常用於描述一個過程中的某階段(phase),類似於C語言中枚舉型變數某一個固定的值,這個值屬於一個已知的集合。
比如淘寶買家問賣家「我的網購現在是什麼狀況?」這個問題的背景是講話雙方都清楚,交易狀態有「買家選購」「買家已付款」「賣家已發貨」「買家已簽收」或者有「買家已投訴」等等狀態。這些狀態描述一件事情發展過程中的不同階段。而且,這些階段的先後順序也是雙方默許的。所以在這裡可以問「What"s the status of my purchase?」,此處用state不太貼切,如果硬用上去從語感上可能聽著彆扭。說物態變化用state再恰當不過。如果說一個物質的四種狀態,可以說「solid state」,但如果你說「solid status」,第一,這兩個詞的組合不像是描述物態,更像是在說「確定的狀況(solid產生歧義『確定的/確鑿的』)」;第二,這個說法即使不被誤解,也需要事先約定一組物態變化順序,比如把這個物質從固態開始加熱然後電離,可能先後經歷固態、液態、氣態、等離子態這四個階段。類似先定義枚舉,然後引用的方式。
擴展:
ajax中readyState,statusText,onreadystatechange,window.status怎麼一會state一會是status都暈乎了
state所指的狀態,一般都是有限的、可列舉的,status則是不可確定的。
比如readyState -- 就那麼四五種值statusText -- 描述性的文字,可以任意onreadystatechange -- 那麼四五種值之間發生變化window.status -- 描述性的文字,可以任意來個形象的比方,你體重多少公斤,屬於status,但說你體重屬於偏瘦、正常還是偏胖,那就是state.
總結一下大家的觀點:兩者差不太多,state用起來可能更方便一些更通用一點;要區分的話,state表示一個確定的狀態集中的某個狀態(比如水的三態),status表示一種籠統的情形(比如你的生活狀態、工作狀態),不存在確定的狀態集。
- state
- 所指的狀態,一般都是有限的、可列舉的
- 你體重屬於偏瘦、正常還是偏胖,那就是state
- readyState -- 就那麼四五種值
- onreadystatechange -- 那麼四五種值之間發生變化
- 往往就是一個實體固有的穩定的狀態
- 如(隱藏、顯示),(是、否),(可用、不可用)
- 可數的,表達不會輕易變化的狀態
- 如ReadyState, Fail這類
- 比較常用,各種狀態都可以用它,但是它更著重於一種心理狀態或者物理狀態
- 說物態變化用state再恰當不過
- 如果說一個物質的四種狀態,可以說「solid state」,但如果你說「solid status」,第一,這兩個詞的組合不像是描述物態,更像是在說「確定的狀況(solid產生歧義『確定的/確鑿的』)」;第二,這個說法即使不被誤解,也需要事先約定一組物態變化順序,比如把這個物質從固態開始加熱然後電離,可能先後經歷固態、液態、氣態、等離子態這四個階段。類似先定義枚舉,然後引用的方式
- status
- 則是不可確定的狀態
- 你體重多少公斤,屬於status
- statusText -- 描述性的文字,可以任意
- window.status -- 描述性的文字,可以任意
- 偏向於運行時狀態
- 不可數的,隨過程不斷變化的狀態
- 如OrderedStatus, ShippingStatus,ReceiptedStatus
- 用在人的身上一般是其身份和地位,作「狀態,情形」講時,多指政治和商業
- 兩者差不多
- 看各類文檔裡面 status 和 state 是混用的,主要是喜好和習慣問題
- 書面上可能有區分,程序里還好
- 我以前習慣用status後來發現我見過的大部分都習慣用state。而且好像state又好寫,又好讀,所以我也開始用state了
我覺得:如果可數的,表達不會輕易變化的狀態時,用state,如ReadyState, Fail這類如果不可數的,隨過程不斷變化的狀態時,用status,如OrderedStatus, ShippingStatus, ReceiptedStatus.
我以前習慣用status後來發現我見過的大部分都習慣用state。而且好像state又好寫,又好讀,所以我也開始用state了。
能制定標準前,表糾結這些了吧。
如何定義?
ID、CODE、No?
mobile、還是PHONE?ADDRESS、還是DIZHI?直到你在小範圍內可以制定標準、或者約定,一切都合理了~!推薦閱讀:
※想學編程,報班還是自學呢?
※有報道說周鴻禕一周看10本書,是不是真的,他是怎麼做到的,哪方面的書多?
※恆大冰泉是如何在如此短的時間內鋪貨全國乃至全球的?
※Macbook用起來和普通的電腦感覺有什麼不同?