看代码经常能看到一些变量命名 XXXcontext XXXctx,或者一些博客中也总提到一个名词:上下文(context)。一直非常疑惑,到底什么叫上下文。也没太好意思问人,感觉就是很简单的概念。自己google下,发现也确实有很多人有同样的疑惑。
从字面理解,上下文——就是上下的文意。语文中经常提到的一个名词。根据上下文来理解某个词,某段等等。但是具体到代码中,到底什么才是上下文呢?
先看看别人怎么解释上下文的:

解读一:这a,b不就是我们常说的参数嘛,怎么这儿又叫上下文了呢。难道外部变量就是上下文嘛?

解读二:其实这个说的挺好的。只是明明说感性理解,具体到代码里,又有这么多真正的实现。感觉有点点近似佛学了。你悟了,也就知道了。不悟的时候,就有一种知道是什么,又不知道是什么的感觉。


解读三:这……

从维基百科上的解释,应该能说明context一词的由来。上下文是针对中断来体现其具体含义的,在内核设计者的眼中,当一个任务在中断时,CPU会去执行中断对应的任务。中断结束后,再执行之前的task时,原有任务的相关数据(在处理原任务所需要的数据)需要保存下来,否则无法继续执行原有任务。如果把相关数据记录到一个变量里。那这个变量就可以称为原task的上下文了。作为一个菜鸟,如果我自己写这个变量的命名。我宁愿叫priTaskInfo,感觉对一个新手来说,infomation一词更能直观的表达这种场景对应的概念。但好像info太low了,而且info一词含义有点模糊,所有的相关数据都可以叫info,概念太宽泛。所以刚开始写类名的时候,用的最多的就是info,反观高手的代码用info的不多。
通俗的理解,上下文,也就是执行任务所需要的相关信息。这个任务可以是一段代码,一个线程,一个进程,一个函数。当这个“任务”,相关信息需要保存下来,就可以使用Context来记录了。
看到这儿应该对上下文有个更清晰的理解了吧。再反过来看上面各个解释,似乎说的都对。一旦理解这个词以后,滥用这个概念,想不出好名字,就用context来命名,还是挺让人难受的。所以如果仅仅是是一些简单的数据,建议还是按照含义来命名,不要处处都使用context,写出的代码难以理解。代码还是应该自注释。
想到这儿不得不感叹一句,本来一个简单的概念含义本身是清晰的,一万人看完以后,又给出一万个解释,每个人的解释又不能说是错的。然后新人又不得不把这一万个解释理解了,归纳成自己的理解。
什么是上下文,可惜书里从没记载,终于摸出来但岁月却不回来。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/124307.html