公共知识 全局变量
–
公共知识是“所有人都知道、且知道别人也知道”的共识信息,
而全局变量是“程序内所有代码都能访问的存储容器”。
1. 核心定义差异
• 公共知识:聚焦“认知共识”,比如“红灯停绿灯行”——不仅你知道,你还确定其他人也知道,且其他人也知道你知道这件事,是群体间的认知同步。
• 全局变量:聚焦“访问权限”,比如编程里定义一个全局的“用户年龄”变量,程序里的登录、支付、个人中心等任何功能模块,都能直接读取或修改这个变量,和“他人认知”无关。
2. 关键区别
公共知识的核心是“双向确认的群体认知”(比如开会时明确说的“明天10点集合”,所有人都清楚且知道别人也清楚);全局变量的核心是“跨范围的数据共享”(比如游戏里的“玩家等级”,战斗、任务、商城模块都要用到,所以设为全局)。
–
1. 延伸场景:看“是否依赖‘他人认知’”
• 公共知识必须有“群体认知闭环”,缺了就不成立。比如你知道“公司下午茶改到3点”,但不确定同事知不知道——这就只是“你个人的知识”,不是公共知识,因为没法基于它和同事同步行动(你去等茶,同事可能还按原时间来)。
• 全局变量完全不依赖“认知”,只看“技术规则”。比如代码里的全局变量“系统时间”,不管程序员有没有意识到它是全局的,只要代码按规则写,任何模块调用时都能直接拿到正确时间,和“程序员知不知道别人在调用”毫无关系。
2. 实际应用的核心目的不同
• 公共知识的目的是“统一行动”:比如班级群里发的“下周考试范围”,要确保所有人都看到、且知道其他人也看到,这样大家才会按同一范围复习,避免有人因信息差漏准备。
• 全局变量的目的是“简化数据传递”:比如做一个购物APP,“当前登录用户ID”设为全局变量,就能避免在“首页、购物车、订单页”之间反复传递这个ID——每个页面直接调用全局变量,代码更简洁
1. 错误混淆的典型场景(更具体的区分)
• 把“公开的信息”当“公共知识”:比如公司公告栏贴了“下周团建”,但你不确定同事有没有看——这只是“公开可查的信息”,不是公共知识(没法保证群体认知同步);只有大家在群里接龙“已阅”,确认彼此都知道,才算公共知识。
• 把“全局变量”当“可随便改的变量”:新手编程常错用全局变量——比如把“订单金额”设为全局,结果支付模块、优惠模块都能改它,导致金额混乱。这说明全局变量的核心是“访问范围”,而非“修改权限”,和公共知识“必须统一认知”的刚性要求完全不同。
2. 极端情况的对比(更直观的差异)
• 公共知识“缺一个人认知就失效”:比如5人小组约定“明天9点开会”,若1人没看到消息、不知道这个约定,那对剩下4人来说,这也算不上严格的公共知识——因为他们没法确定“缺席的人知不知道”,开会时还要额外等或确认,没法完全按原计划行动。
• 全局变量“少一个模块调用也不影响”:比如代码里的全局变量“APP版本号”,就算“设置页面”没调用它(不显示版本号),只要“更新模块、反馈模块”能正常调用,它作为全局变量的功能就完全成立——不依赖所有模块都用它,只看“需要用的模块能不能调用”。。


请登录之后再进行评论