程序员常讲的「写死」是什么鬼?
「写死」是什么意思?写死还是不写死,这是一个纠结的问题。
程序员嘴里说的「写死」是什么意思?可以不写死吗?不写死就会增加难度吗?「写死」和「不写死」不可调和吗?究竟怎么决策选用那种方法?
今天谈谈这个话题,也顺便说下「打底数据」和「云端控制」的设计方法。
首先明确「程序员嘴里说的写死」到底是什么意思?本篇文章中,我们的举例都以客户端写死为例进行说明,其他程序亦然。程序员所说的是指对一些参数或配置写死。写死意味着除非发下一个版本,否则这个数据不可更改。比如微信下面的四个TAB,就是写死的,因为那四个TAB永远不会变。在程序实现的时候,程序员问是否要写死,其实是探求这里是否会变化。如果不变,那就写死。
不写死又会增加多大难度呢?
不写死意味着这个数据是变化的,可运营的,那这个运营数据应该在服务器端进行配置,再由客户端拉取下来,然后运行时启用新的配置数据,多出的成本是需要设计一条协议拉取这项配置或参数,然后应用到程序中,如果已经有这样的运营配置协议,那直接配置即可。
我们去兰州拉面,跟老板说,给我来碗“牛肉面,毛细,不要辣椒”,需求非常明确,所以上桌的面一定是这样,只要订单下了,基本没有任何变化的空间,除非你再要一碗。
而你对女友说:“下面给我吃”,你女友可能会给你用白水煮一碗面,然后问你“要什么调料”,这个时候,你就可以加上“饭扫光”,“老干妈”等一些调料了。
- 二者的本质区别是一个发生在编译时,一个作用于运行时。
- 二者并不互斥,有的时候是要一起配合的,既要本地写死,也要云端可控。
假设你是一个资讯客户端的产品经理,一个资讯客户端经常有这些TAB或者叫频道:推荐、热点、视频、本地、美图、娱乐、体育、汽车。
可这些频道的数据是可运营配置的,可以调整顺序,可以调整文案,可以新增一个频道(比如增加一个叫岛国的频道),也可以删除某一个运营效果不好的频道。
一个好的产品设计是,本地要默认写死一些频道,这些频道通常是一个资讯客户端不怎么变化的,每次都要展示的,这些成为打底数据或者叫default默认数据,如果没有这份写死的数据,你的客户端运行起来,就会头部没有任何信息,等网络数据回来才有展示,或者无网络时,就像出了bug一样没有任何展示。所以打底数据主要解决用户体验问题,无网络或初次启动时,给用户隐喻这个客户端已经在正常运行。
展示了打底数据之后,此刻发起云端请求,请求云端运营数据,拉取成功之后,将新的频道数据覆盖本地数据,如果此次请求失败,则继续展示本地数据,保障用户浏览。在拉取成功的情况下,应该把新的频道数据覆盖本地Default打底数据,保证客户端下次启动展示上一次成功拉取的频道数据。
这是客户端产品和程序设计的基本逻辑,希望不要割裂开看本地数据和云端数据的问题,二者配合效果更佳,就像奥利奥要沾牛奶吃。
#专栏作家#
给产品经理讲技术,微信公众号(pm_teacher),人人都是产品经理专栏作家。资深程序猿,专注客户端开发若干年,对前端、后台技术略懂,热衷于对新的科技领域的探索。
本文原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自PEXELS,基于CC0协议
开车了
怀疑你在开车
写的不错!还需要再融会贯通
“下面给我吃”、“岛国” ➡
好,给你
好,给你
老司机一言不合就踩油门
感觉TAB什么的看是什么软件,有的架构上写死了,有的刷新的话就可以从服务器重读以新格式运行,主要看软件的架构吧。欢迎老司机矫正。
每篇文章读起来都很有意思,对我们PM来说,这种格调的技术文章才是上班之路的伴侣 💡
果然生动形象
😀
下面给你吃
果然是老司机