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