程序員常講的「寫(xiě)死」是什么鬼?
![](http://image.woshipm.com/wp-files/img/78.jpg)
「寫(xiě)死」是什么意思?寫(xiě)死還是不寫(xiě)死,這是一個(gè)糾結(jié)的問(wèn)題。
程序員嘴里說(shuō)的「寫(xiě)死」是什么意思?可以不寫(xiě)死嗎?不寫(xiě)死就會(huì)增加難度嗎?「寫(xiě)死」和「不寫(xiě)死」不可調(diào)和嗎?究竟怎么決策選用那種方法?
今天談?wù)勥@個(gè)話(huà)題,也順便說(shuō)下「打底數(shù)據(jù)」和「云端控制」的設(shè)計(jì)方法。
首先明確「程序員嘴里說(shuō)的寫(xiě)死」到底是什么意思?本篇文章中,我們的舉例都以客戶(hù)端寫(xiě)死為例進(jìn)行說(shuō)明,其他程序亦然。程序員所說(shuō)的是指對(duì)一些參數(shù)或配置寫(xiě)死。寫(xiě)死意味著除非發(fā)下一個(gè)版本,否則這個(gè)數(shù)據(jù)不可更改。比如微信下面的四個(gè)TAB,就是寫(xiě)死的,因?yàn)槟撬膫€(gè)TAB永遠(yuǎn)不會(huì)變。在程序?qū)崿F(xiàn)的時(shí)候,程序員問(wèn)是否要寫(xiě)死,其實(shí)是探求這里是否會(huì)變化。如果不變,那就寫(xiě)死。
不寫(xiě)死又會(huì)增加多大難度呢?
不寫(xiě)死意味著這個(gè)數(shù)據(jù)是變化的,可運(yùn)營(yíng)的,那這個(gè)運(yùn)營(yíng)數(shù)據(jù)應(yīng)該在服務(wù)器端進(jìn)行配置,再由客戶(hù)端拉取下來(lái),然后運(yùn)行時(shí)啟用新的配置數(shù)據(jù),多出的成本是需要設(shè)計(jì)一條協(xié)議拉取這項(xiàng)配置或參數(shù),然后應(yīng)用到程序中,如果已經(jīng)有這樣的運(yùn)營(yíng)配置協(xié)議,那直接配置即可。
我們?nèi)ヌm州拉面,跟老板說(shuō),給我來(lái)碗“牛肉面,毛細(xì),不要辣椒”,需求非常明確,所以上桌的面一定是這樣,只要訂單下了,基本沒(méi)有任何變化的空間,除非你再要一碗。
而你對(duì)女友說(shuō):“下面給我吃”,你女友可能會(huì)給你用白水煮一碗面,然后問(wèn)你“要什么調(diào)料”,這個(gè)時(shí)候,你就可以加上“飯掃光”,“老干媽”等一些調(diào)料了。
- 二者的本質(zhì)區(qū)別是一個(gè)發(fā)生在編譯時(shí),一個(gè)作用于運(yùn)行時(shí)。
- 二者并不互斥,有的時(shí)候是要一起配合的,既要本地寫(xiě)死,也要云端可控。
假設(shè)你是一個(gè)資訊客戶(hù)端的產(chǎn)品經(jīng)理,一個(gè)資訊客戶(hù)端經(jīng)常有這些TAB或者叫頻道:推薦、熱點(diǎn)、視頻、本地、美圖、娛樂(lè)、體育、汽車(chē)。
可這些頻道的數(shù)據(jù)是可運(yùn)營(yíng)配置的,可以調(diào)整順序,可以調(diào)整文案,可以新增一個(gè)頻道(比如增加一個(gè)叫島國(guó)的頻道),也可以刪除某一個(gè)運(yùn)營(yíng)效果不好的頻道。
一個(gè)好的產(chǎn)品設(shè)計(jì)是,本地要默認(rèn)寫(xiě)死一些頻道,這些頻道通常是一個(gè)資訊客戶(hù)端不怎么變化的,每次都要展示的,這些成為打底數(shù)據(jù)或者叫default默認(rèn)數(shù)據(jù),如果沒(méi)有這份寫(xiě)死的數(shù)據(jù),你的客戶(hù)端運(yùn)行起來(lái),就會(huì)頭部沒(méi)有任何信息,等網(wǎng)絡(luò)數(shù)據(jù)回來(lái)才有展示,或者無(wú)網(wǎng)絡(luò)時(shí),就像出了bug一樣沒(méi)有任何展示。所以打底數(shù)據(jù)主要解決用戶(hù)體驗(yàn)問(wèn)題,無(wú)網(wǎng)絡(luò)或初次啟動(dòng)時(shí),給用戶(hù)隱喻這個(gè)客戶(hù)端已經(jīng)在正常運(yùn)行。
展示了打底數(shù)據(jù)之后,此刻發(fā)起云端請(qǐng)求,請(qǐng)求云端運(yùn)營(yíng)數(shù)據(jù),拉取成功之后,將新的頻道數(shù)據(jù)覆蓋本地?cái)?shù)據(jù),如果此次請(qǐng)求失敗,則繼續(xù)展示本地?cái)?shù)據(jù),保障用戶(hù)瀏覽。在拉取成功的情況下,應(yīng)該把新的頻道數(shù)據(jù)覆蓋本地Default打底數(shù)據(jù),保證客戶(hù)端下次啟動(dòng)展示上一次成功拉取的頻道數(shù)據(jù)。
這是客戶(hù)端產(chǎn)品和程序設(shè)計(jì)的基本邏輯,希望不要割裂開(kāi)看本地?cái)?shù)據(jù)和云端數(shù)據(jù)的問(wèn)題,二者配合效果更佳,就像奧利奧要沾牛奶吃。
#專(zhuān)欄作家#
給產(chǎn)品經(jīng)理講技術(shù),微信公眾號(hào)(pm_teacher),人人都是產(chǎn)品經(jīng)理專(zhuān)欄作家。資深程序猿,專(zhuān)注客戶(hù)端開(kāi)發(fā)若干年,對(duì)前端、后臺(tái)技術(shù)略懂,熱衷于對(duì)新的科技領(lǐng)域的探索。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自PEXELS,基于CC0協(xié)議
開(kāi)車(chē)了
懷疑你在開(kāi)車(chē)
寫(xiě)的不錯(cuò)!還需要再融會(huì)貫通
“下面給我吃”、“島國(guó)” ?
好,給你
好,給你
老司機(jī)一言不合就踩油門(mén)
感覺(jué)TAB什么的看是什么軟件,有的架構(gòu)上寫(xiě)死了,有的刷新的話(huà)就可以從服務(wù)器重讀以新格式運(yùn)行,主要看軟件的架構(gòu)吧。歡迎老司機(jī)矯正。
每篇文章讀起來(lái)都很有意思,對(duì)我們PM來(lái)說(shuō),這種格調(diào)的技術(shù)文章才是上班之路的伴侶 ??
果然生動(dòng)形象
??
下面給你吃
果然是老司機(jī)