我已经编程几个月了,类里面经常使用的词是“上下文”。喜欢ServletContext
(Java),Activity
(安卓),Service
(Java、Android),NSManagedContext
(Objective-C、iOS)。
通过查字典,我发现这个词的意思是:情况、环境、环境等。但是,因为我不是以英语为母语的人,所以我不明白应该将其直接翻译成什么。例如,如果我要编写一个名为 SomeClassContext
的类,或者具有上下文参数的方法,我不明白什么时候应该将其命名为上下文,因为我不理解它。
我一直在 Stack Overflow 上搜索上下文,但没有任何问题/答案能够帮助我。
如果有人能给我解释,我会很高兴。
最佳答案
假设您去看牙医拔牙。
当接待员询问您的姓名时,这是他们开始预约所需的信息。在此示例中,您的姓名是上下文信息。因此,在看牙医时,您需要提供您的姓名才能拔牙。
现在假设您走到银行。
在银行,您要求提取 100 美元。出纳员在给您钱之前需要确认您的身份,因此您可能需要向他们出示驾驶执照或刷 ATM 卡并输入您的 PIN 码。无论哪种方式,您提供的是上下文。出纳员使用此信息来推进交易。然后他们可能会询问您想从哪个帐户提款。当您回答“我的储蓄账户”时,这甚至是更多背景信息。
您提供的背景信息越多,对方就越能帮助处理您的请求。有时上下文是可选的(例如在 Google 搜索中输入越来越多的单词以获得更好的结果),有时则是必需的(例如在 ATM 机上提供您的 PIN 码)。不管怎样,这些信息通常有助于完成工作。
现在假设您拿着 100 美元买了一张机票,飞到温暖的地方,同时您的口腔痊愈了。
您到达了一个阳光明媚的目的地,但您的行李却没能到达。它在机场系统的某个地方丢失了。因此,您将“行李认领票”(带有条形码的贴纸)带到“丢失行李办公室”。柜台后面的人首先要的就是上面有您的行李号码的机票。这是一些所需上下文的示例。
但随后行李人员会要求您提供有关您的行李的更多信息,以便他们可以更轻松地找到它。他们会问:“它是什么颜色?它有多大?它有轮子吗?是硬的还是软的?虽然他们不一定需要这些信息,但如果满足以下条件,这有助于缩小范围:您提供它们。它减少了问题区域。它使搜索速度更快。这就是可选上下文。
这是有趣的部分:对于许多软件和 API,必需的上下文通常最终作为方法签名中的实际参数,而可选上下文则位于其他地方,就像一个灵活的键值映射,可以包含任何内容(并且可能为空),也可以存储到线程本地存储中,如果需要,可以在其中访问它。
上面的例子来自现实生活,但您可以轻松地将它们映射到计算机科学领域。例如,HTTP header 包含上下文信息。每个 header 都与所发出请求的信息相关。或者当您将全局交易 ID 作为 two-phase commit process 的一部分发送时,该事务 ID 是上下文。它可以帮助事务管理器协调工作,因为它提供了有关当前总体任务的信息。
关于language-agnostic - 编程中的术语 "Context"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6145091/