程序員常講的「寫死」是什么鬼?

13 評論 43257 瀏覽 121 收藏 5 分鐘

「寫死」是什么意思?寫死還是不寫死,這是一個糾結的問題。

程序員嘴里說的「寫死」是什么意思?可以不寫死嗎?不寫死就會增加難度嗎?「寫死」和「不寫死」不可調和嗎?究竟怎么決策選用那種方法?

今天談談這個話題,也順便說下「打底數據」和「云端控制」的設計方法。

首先明確「程序員嘴里說的寫死」到底是什么意思?本篇文章中,我們的舉例都以客戶端寫死為例進行說明,其他程序亦然。程序員所說的是指對一些參數或配置寫死。寫死意味著除非發下一個版本,否則這個數據不可更改。比如微信下面的四個TAB,就是寫死的,因為那四個TAB永遠不會變。在程序實現的時候,程序員問是否要寫死,其實是探求這里是否會變化。如果不變,那就寫死。

不寫死又會增加多大難度呢?

不寫死意味著這個數據是變化的,可運營的,那這個運營數據應該在服務器端進行配置,再由客戶端拉取下來,然后運行時啟用新的配置數據,多出的成本是需要設計一條協議拉取這項配置或參數,然后應用到程序中,如果已經有這樣的運營配置協議,那直接配置即可。

我們去蘭州拉面,跟老板說,給我來碗“牛肉面,毛細,不要辣椒”,需求非常明確,所以上桌的面一定是這樣,只要訂單下了,基本沒有任何變化的空間,除非你再要一碗。

而你對女友說:“下面給我吃”,你女友可能會給你用白水煮一碗面,然后問你“要什么調料”,這個時候,你就可以加上“飯掃光”,“老干媽”等一些調料了。

  • 二者的本質區別是一個發生在編譯時,一個作用于運行時。
  • 二者并不互斥,有的時候是要一起配合的,既要本地寫死,也要云端可控。

假設你是一個資訊客戶端的產品經理,一個資訊客戶端經常有這些TAB或者叫頻道:推薦、熱點、視頻、本地、美圖、娛樂、體育、汽車。

可這些頻道的數據是可運營配置的,可以調整順序,可以調整文案,可以新增一個頻道(比如增加一個叫島國的頻道),也可以刪除某一個運營效果不好的頻道。

一個好的產品設計是,本地要默認寫死一些頻道,這些頻道通常是一個資訊客戶端不怎么變化的,每次都要展示的,這些成為打底數據或者叫default默認數據,如果沒有這份寫死的數據,你的客戶端運行起來,就會頭部沒有任何信息,等網絡數據回來才有展示,或者無網絡時,就像出了bug一樣沒有任何展示。所以打底數據主要解決用戶體驗問題,無網絡或初次啟動時,給用戶隱喻這個客戶端已經在正常運行。

展示了打底數據之后,此刻發起云端請求,請求云端運營數據,拉取成功之后,將新的頻道數據覆蓋本地數據,如果此次請求失敗,則繼續展示本地數據,保障用戶瀏覽。在拉取成功的情況下,應該把新的頻道數據覆蓋本地Default打底數據,保證客戶端下次啟動展示上一次成功拉取的頻道數據。

這是客戶端產品和程序設計的基本邏輯,希望不要割裂開看本地數據和云端數據的問題,二者配合效果更佳,就像奧利奧要沾牛奶吃。

#專欄作家#

給產品經理講技術,微信公眾號(pm_teacher),人人都是產品經理專欄作家。資深程序猿,專注客戶端開發若干年,對前端、后臺技術略懂,熱衷于對新的科技領域的探索。

本文原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自PEXELS,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 開車了

    來自廣東 回復
  2. 懷疑你在開車

    來自河南 回復
  3. 寫的不錯!還需要再融會貫通

    來自菲律賓 回復
  4. “下面給我吃”、“島國” ?

    來自浙江 回復
    1. 好,給你

      來自北京 回復
    2. 好,給你

      來自重慶 回復
  5. 老司機一言不合就踩油門

    回復
  6. 感覺TAB什么的看是什么軟件,有的架構上寫死了,有的刷新的話就可以從服務器重讀以新格式運行,主要看軟件的架構吧。歡迎老司機矯正。

    來自河北 回復
  7. 每篇文章讀起來都很有意思,對我們PM來說,這種格調的技術文章才是上班之路的伴侶 ??

    來自日本 回復
  8. 果然生動形象

    來自云南 回復
  9. ??

    來自云南 回復
  10. 下面給你吃

    來自重慶 回復
  11. 果然是老司機

    來自北京 回復