編程中最佳常量定義方法

一、常量定義最佳方法

採用左移和或運算,具體參考谷歌常量定義方法。

例子:

現在有一個手機視屏app,有以下標記屬性:

1.視屏是否免費

2.是否是視頻播放期

3.視頻是否爲VIP視頻

4.視頻是否爲成人視頻

如果現在從服務器獲取這些屬性時,是採用json傳輸,那麼傳統的做法是寫成一下字符串在進行傳輸:

"free":"true","time":"true","discount":

"false","18+":"false";

顯然這是很費事費時的,客戶端不但需要複雜的邏輯判斷,而且拆分字符也是很麻煩的事,並且從用戶角度來看,也增加了流量的消耗。此時,可以採用左移的方法,將上述屬性分別進行標記:

1.視屏是否免費 0x0001 ——-1

2.是否是視頻播放期 0x0002 —– 2

3.視頻是否爲VIP視頻 0x0004 —— 4

4.視頻是否爲成人視頻 0x0008 —– 8

在定義常量時,兩個數進行或運算時的值可以拆分爲唯一對應的選項,比如不能定義0x0003,因爲0x0001或上0x0002就等於0x0003,這就造成選項不唯一,達不到最初的目的。

而此刻客戶端只需發送如:type=3;

那麼在通過服務器端進行解析,可以得到:

0x0001 轉爲二進制爲 0001
0x0002 轉爲二進制爲 0010
0x0004 轉爲二進制爲 0100

3 = 2 + 1;//進行或運算
0001 | 0010 ------ 3

 0010的值爲:2

 0001的值爲:1

通過這個type的值,我們就可得到:該用戶選擇的是第1、2個屬性,此時服務返回視頻類型爲1,2的就OK了。

很感謝26級辦事員Curry30丶丶丶的指正,常量定義採用十六進制,之前在算的時把它也寫成來十六進制,在進行或運算時是按二進制位計算。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章