近日在 JS 项目开发中有个 array 条件判断,有人这么写:
if (list) {
// do something
}
我的 code review comment 这么建议:
if (list.length > 0) {
// do something
}
这时有另一个同事在上面留言说,按他的认知,应该是下面这么写
,也就是上面第一种才对。
if (list) {
// do something
}
这当然只是个非常非常小的问题,甚至都可以忽略不计。
但我联想到一个更有普适性的问题:当这么写代码能跑起来,另一种方式写代码也能跑。那凭什么要用另一种了?
认知
这个词可能很适合用来理解或者解释这类问题。比如这里的 认知
: 变量比较 implicit
跟 explicit
的问题。
还有一些其它的例子:
比如,自己在若干年前写代码,当时觉得自己很牛气很完美,而现在再去看,会觉得当时的代码好糟糕。
或者,当别人用 A 用法实现时,你提出用 B 用法更好,别人还得觉得自己的更好。
或者,相反的,当你觉得用 A 方式比较好时,另一个水平更高的说用 B 更好时,你还是坚持已见,觉得别人不懂你。
所有类似的问题,或许都能归结为:认知深度
的差异。这里的认知领域包括:项目工程化,模块化,团队协作,一致性,计算机编译器原理,数学,linux 内核,各种设计模式,不同编程语言各自的特色等。
这里是由一个现实案例联想到的认知问题。那么朋友们,你们有遇到过类似的场景嘛?有的话,不妨举例看看,让我们都来提高下认知吧。当然也包括,在面试或者招聘,会有人关心这类认知问题嘛?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.