@
FrankFang128 有些语言定义必须在引用之前。估计从这些语言过来的人习惯了才定这条规则。
实际上,先定义后引用和先引用后定义的可读性很难说,
就像数学书先证一堆引理,然后再证定理,
和先直接证定理,直接在证明中用引理,证明结束了再一个个证用到的引理。
这两种写法很难说哪个好。
前者符合「基础的在前,高层的在后,依赖关系明晰」的思路,
后者符合「从问题出发,将大问题转化成几个小问题,然后再解决小问题」的思路。
这两个思路都比较符合直觉。
个人更偏爱后者,从问题出发,思路比较顺畅。
看到好几个人提到数学里动机比证明重要。
先引用,后定义,能更容易看到为什么需要定义这个函数,
我觉得很多时候这个为什么比这个函数是怎样定义的更重要。
另外,IDE 跳转和浏览做的好的话,定义的先后根本就无关紧要。
IntelliJ 系的 IDE, 我常常先直接用,然后 Alt+Enter 逐个补定义。
IDE 总是给我补在上面(类什么的通常会开新文件),
不过上面下面我不在意,在哪个文件我也不在意。
因为读代码我不会从上往下读,是利用结构视图和搜索类名、函数名定位到关心的地方。
引用的东西,大部分时候只要看下名字(喜欢起较长的、描述性的名字)和类型(如果是静态类型语言),
有时可能要 ctrl+q 查下 api doc, 还搞不定那才 ctrl+b 跳转。
ctrl + b 会带我到定义那里的,所以到底在上面还是下面,还是另一个文件我并不需要关心。
回到主题,WebStorm 的 JavaScript 跳转到定义并没有遇到什么问题,
以前用 sublime 及 vscode 跳转到定义也没什么问题,
所以这条规则我觉得意义不大。