1
harry890829 2015-11-30 10:16:11 +08:00
我想知道“代码自动补全”和我们说的“代码补全”有没有本质上的区别……代码补全还有弊端?因为……记不住函数名?
|
2
JohnSmith 2015-11-30 10:16:57 +08:00
有什么弊嘛?写 iOS 和 andriod 的没有补全不能活吧。。
|
3
bazingaterry 2015-11-30 10:19:38 +08:00
作为一个大学生,就是去考试的时候没有了代码补全敲码速度下降了呗……
|
4
jydeng 2015-11-30 10:20:17 +08:00
函数名、命名空间名太长记不住,太短不够简单明了,除了 IDE 自动补全貌似没有什么好的办法?
|
5
m8syYID5eaas8hF7 2015-11-30 10:21:54 +08:00
利大于弊,大大提高工作效率
|
6
ZnZt 2015-11-30 10:23:47 +08:00 3
我觉得干编程这活,重要的是思维逻辑和编程思想,能手写各种 API 貌似也没什么卵用吧
|
7
windyboy 2015-11-30 10:23:48 +08:00
如果需要耗费大量的资源,并且绑定 ide 才能实现补全
就是舍本逐末 |
8
yxzblue 2015-11-30 10:24:10 +08:00
代码自动补全做得足够好,我们都不用上班了~
|
9
cyberdak 2015-11-30 10:25:29 +08:00
这种问题都能问出来?我实在无法理解楼主的脑回路
|
10
wohenyingyu01 2015-11-30 10:26:06 +08:00 via iPhone
我是进来看弊的,结果还是没看到
|
11
huijiewei 2015-11-30 10:30:39 +08:00
我觉得在硬盘上直接开刻才行
用键盘的显示器的都弱爆了 |
12
zqqf16 2015-11-30 10:33:54 +08:00 1
这东西还得看语言吧,比如 OC `-URLSession:dataTask:didReceiveResponse:completionHandler:` 这样的,没有自动补全就得死人了吧。
有些语言比如 C 、 Python 之流,很多代码用手敲出来的速度远大于 IDE 补全。 |
13
4everLoveU OP 然鄙人以为自动补全会让 coder 过于依赖编辑器,脱离了自动补全甚至连一个简单常用的函数名都有可能写错,尤其是对于新手来说,自动补全就是个祸害。
至于诸位公认的补全能大大提高效率,效率体现在哪里呢?少敲了几个字符吗?斯以为熟练的 coder 并不需要自动补全 当然,对于 JAVA 这种变量和函数都臭长臭长的语言,自动补全的效率提升还是很明显的。 |
14
4everLoveU OP @zqqf16 赞同你的观点
|
15
flowerains 2015-11-30 10:37:33 +08:00 1
没有带码补全是要生活在古代么。。。
自然而然享受科技成果难道不好么 |
16
Hyperion 2015-11-30 10:48:21 +08:00 via Android
@4everLoveU 提出了一个观点,又举了一个反例…
|
17
yougg 2015-11-30 10:50:57 +08:00
新手不准用补全,
熟手全部用补全. 就是这样. |
18
zhujinliang 2015-11-30 10:51:39 +08:00
因为懒,没有配置 sublime 的插件,就直接用纯编辑器写了很长时间的代码。。。
中间也零碎的花了不少时间去查函数定义,不过还是因为懒。。索性需要时就去官网查。。 如果你的工作确定不会遇到把你丢到一个荒野的情况,完全依赖补全也没啥问题 有人会花较多的时间研究对比各种插件,会觉得配置个 sublime 插件有什么难的,我却觉得麻烦,没意思,也没觉得他能比我快多少。 说来也怪,他们会对于各种插件名称和配置项如数家珍,反而说懒得去记 API 。我希望不要舍本逐末,毕竟工具肯定是越来越多的。 |
19
ibireme 2015-11-30 10:58:40 +08:00
弊是什么。。
|
20
loveuqian 2015-11-30 11:00:50 +08:00 via iPhone
谁能给我背 10 个 tableView 代理方法出来
|
21
jusonalien 2015-11-30 11:03:12 +08:00
@ZnZt 能手写各种 API 还是很牛逼的,但是默写 API 的名字就没用了
|
22
binjoo 2015-11-30 11:03:43 +08:00
能记住各种函数,除了考试、面试手写编程之外,貌似并没有什么卵用。
|
23
knightdf 2015-11-30 11:04:08 +08:00
已经在公司的估计都是觉得只有利没有弊,认为有弊的(譬如什么记不住函数名啊)估计都是还在学校的
|
24
lrj2u 2015-11-30 11:05:41 +08:00
java 这种,没自动补全没法活啊,还有自动包引用。
起码能人集中精神处理下逻辑了,要全部手敲,估计上班都要克服下畏难心理了。 |
25
Geoion 2015-11-30 11:11:59 +08:00
|
26
effish 2015-11-30 11:19:58 +08:00
别太看得起自己的大脑,别给它加太多的负担。
省出来的精力你总能找到新的地方花掉 |
27
superleexpert 2015-11-30 11:25:10 +08:00
作为大多数的一份子,前者+1 ,工具是用来提高效率的,应该是越来越简便、门槛越来越低才对。
|
29
RiceNoodle 2015-11-30 11:29:54 +08:00
|
30
czk1997 2015-11-30 11:37:48 +08:00
没代码补全简直写不了代码,有时候各种 import 根本背不下来……还有好多函数名很长那种,各种大小写混用的……
|
31
x86 2015-11-30 11:42:26 +08:00
新手刚刚入门的时候还是不要用补全的好,工作了用补全提升效率没什么可说的
|
32
FrankFang128 2015-11-30 11:43:28 +08:00 via Android 1
自动挡利大于弊。
结贴。 |
33
parthenon2007 2015-11-30 11:44:22 +08:00
如果不让使用代码补全,势必就逼着程序员尽量缩短变量名和方法名的长度,代码可读性就会变差。
|
34
carlhan 2015-11-30 11:46:12 +08:00 via Android
不说利弊
反正我现在一直是用 VIM 不装补全插件写 JS CSS 也能活 写的过程 我确实一直在用 Chrome google 各种函数名 API 什么的 有效率影响 但也还好 当然我是新手。 |
35
qihboy 2015-11-30 11:48:02 +08:00
提高效率的前提是:首先你得是个合格的 CODER
如果很多基础都不会, keywords 都不知道,各方法属性也不知识,那就不算是提高效率了。 曾面过写 HTML 都得靠 DW 自动补全的前端,然后一问三不知 |
36
chairuosen 2015-11-30 11:55:16 +08:00
写 html 当然要自动补全,要不然各种左右尖括号折磨死你。
emmet 插件或者 [HBuilder]( http://dcloud.io/) |
37
behappy 2015-11-30 11:58:46 +08:00
之前在上学撸 java 的时候觉得没自动补全简直不能活,离开自动补全,经常写错函数名,还要经常查 api 。
现在撸 javascript ,已经不依赖自动补全啦,虽然偶尔还是写错函数名,其实要有个静态分析工具就更好了, jshint 只能检查代码风格什么的。 |
38
vstar 2015-11-30 12:00:49 +08:00
利大于弊 工作不是考试 也不是比赛
利用工具最大化地提升自己效率 达到目的才是目标 不允许使用 IDE 和代码补全的公司 价值观是与我不符的 我不会去那样的公司 |
39
syhilyhw 2015-11-30 12:21:46 +08:00
看来 lz 遇到了什么问题,才会这么问的
|
40
mornlight 2015-11-30 12:35:27 +08:00
「脱离了自动补全甚至连一个简单常用的函数名都有可能写错」
那又怎样?这说明不了什么问题 |
41
ChiangDi 2015-11-30 12:38:59 +08:00
记个函数名是个很有技术含量的事?一定要天天手敲几百遍才记得住?
|
42
SpicyCat 2015-11-30 12:41:48 +08:00
@4everLoveU Coder 依赖于编辑器有什么问题?编辑器就是个工具,用更好的工具更快地把工作完成,这有什么不好的吗?能创造和使用工具完全是人类区别于动物的一大特征啊。我完全不同意所谓的高级工具会阻碍新手成为高手,相反,我认为的高手就是能熟练使用各种工具,并且知道什么场景该使用什么工具的人。记不住函数名有问题吗?我们是 Software Engineer ,不是 Memory Engineer. 程序员应该关注的是自己的算法能力,设计能力,学习新技术的能力等等,记忆力根本不是区分新手和高手的指标。
代码补全除了方便以外,还避免的手误,纯手打一段代码,因为手误敲错一些变量名函数名太正常了,静态语言还好,编译器能查出来,动态语言你就等着慢慢调试吧。即使是静态语言,你根据编译器提示的错误信息去改代码是不是花时间?而这些时间完全可以节约下来,如果你用了代码补全的话。 我有个观点,能让机器做的事情就不要人去做,能自动化的事情就不要手动去做。那么我们为什么要反其道而行之?就为了训练新手? 说自动补全祸害新手完全是臆想,你以为新手记不住准确的函数名就学不到东西啦?关键要理解原理。记函数名有什么用呢?更不用说有很多 API 还会变化。 |
43
codingpp 2015-11-30 12:54:13 +08:00
新手熟手全用补全
就这样 |
44
kruskal 2015-11-30 13:00:52 +08:00 1
@4everLoveU
然鄙人以为输入法会让 计算机用户 过于依赖联想词库,脱离了输入法甚至连一个简单常用的字词都有可能打错,尤其是对于菜鸟来说,输入法就是个祸害。 至于诸位公认的联想词库能大大提高效率,效率体现在哪里呢?少敲了几个字符吗?斯以为熟练的 计算机用户并不需要联想词库 |
45
pupboss 2015-11-30 13:01:45 +08:00
脑容量本来就小,为何不多记点有用的。就记住一个索引,用的时候能在 1 秒内找到需要的东西,不管借助什么工具,这就非常足够了啊
|
46
cyberdak 2015-11-30 13:12:21 +08:00 1
@4everLoveU 你这种人啊,屏幕输出 01010101 对你来说应该是完美, gui 完全是个祸害,连计算机的原理都不懂,还说自己会编程
|
47
Exin 2015-11-30 14:10:44 +08:00 via iPhone
计算机学院辩论赛缺辩题了?
|
48
maomaomao001 2015-11-30 14:12:48 +08:00
每次考试的时候头很疼~~~ 特别是 java 的代码。。。。
|
49
4everLoveU OP @cyberdak 不禁陷入了思考,不懂计算机原理还不让编程了...醉:(了
|
50
akira 2015-11-30 14:57:12 +08:00 2
学车的时候用手动挡也就算了,
拿到驾照了我开个自动挡的车你还 jjyy 啊。。 |
51
unknownservice 2015-11-30 15:02:08 +08:00
要说弊无非就是面试的时候白板编程会写错呗,然而有意义?
|
52
paulagent 2015-11-30 15:02:36 +08:00
弊端是啥啊????
|
53
wizardoz 2015-11-30 15:02:57 +08:00
当然是利大……基本上没有弊。
我也说一个利吧,如果没有代码补全,程序员会偷懒取很短的变量名。 如果有补全,程序员会为了补全的时候容易辨别变量,提供一些前缀什么的。从某种程度上提高代码的可读性。 |
54
sunyang 2015-11-30 15:04:49 +08:00
楼主的这个问题其实等同于这个 : 机器生产相对于手工生产是利大于弊,还是弊大于利?
|
55
anjouslava 2015-11-30 15:09:37 +08:00
利大于弊,唯一的弊端就是提高了对硬件的要求吧……然而还是那句话,现在程序员的时间比那破内存破 CPU 破硬盘值钱多了,谁爱 vim 写 java 谁写去, IDEA 大法好
|
56
bk201 2015-11-30 15:09:55 +08:00
好像没啥弊端,你写程序也不是为了记住几个函数名,换个语言又不一样了,何必呢?
|
57
hywang1230 2015-11-30 15:10:59 +08:00
利,记住方法名不是一项值得骄傲的事,知道在什么地方用什么方法才是最重要的,如果觉得手敲代码有 B 格,那就不要用 IDE 的好
|
58
zonghua 2015-11-30 15:11:46 +08:00
|
59
zonghua 2015-11-30 15:20:38 +08:00
@jydeng
@wizardoz @SpicyCat 来自 aspectj 的问候 HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor( ) hasm 补全 回叙 https://www.v2ex.com/t/111867#r_1078677 http://grepcode.com/file/repository.springsource.com/org.aspectj/com.springsource.org.aspectj.weaver/1.6.3/org/aspectj/weaver/patterns/HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor.java |
60
colinlet 2015-11-30 15:25:56 +08:00
如果 Xcode 没有代码补全。。
|
61
wizardforcel 2015-11-30 16:06:00 +08:00 via Android
记不住函数名。函数名需要记?应试教育学傻了?
lz 缺铜币了么。再开一个 ide vs bash+vim+makefile 如何? 无聊不无聊。 |
62
theohateonion 2015-11-30 16:13:05 +08:00
记 API 名和重复敲各种长变量名这种浪费时间的愚蠢方法我只在嵌入式开发里面用过(因为嵌入式环境的 IDE 往往没有这种功能。)时间就是金钱我的朋友。我相信你一口气说出一种语言或者一种类库所有的方法名和用法,真正的程序员只会觉得你记忆好,而不会觉得你很厉害。
|
63
timonwong 2015-11-30 16:18:44 +08:00
自动补全有意义,你可以把自动补全看做一种 code generator ,当然如果反对 code generator ,喜欢纯粹手写就另当别论。
|
64
jukka 2015-11-30 17:21:15 +08:00
完全不需要补全。
函数名超过 15 个字符,我都会开始思考,是不是设计有问题了。 通常一个 API 只会做一件事情,一件事情就应该只会用一个 verb 就表达出来了。 比如 system API: fork, exit 。 长一点 gettimeofday 。 再比如,一个 rpc 模块, call(args), call(...), connect(ip, port, event_cb)。 另外 OC 的长名字和 Java 的长名字完全不同, OC 的长名字通常是对一个对象 /动作 /类型的完整描述。 Java 的设计模式里的长名字, HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor , 233333 让我笑一会儿。 |
66
4everLoveU OP @theohateonion 迷茫了,那请问『真正的程序员』具体是虾米意思呢?
当然了,我也没有要表达记住了函数名啥的这种 coder 就厉害的意思,怎么就歪楼成这样了呢 不依赖 IDE ,多多手敲很大程度上代表了一种编程语言的熟练程度,至于记住了各种 api 是好还是不好,我的观点很明确,记住了当然更好,大家普遍质疑的好处在哪?至少你写博客,上技术论坛,面试什么的应该都能用上吧? 再就是什么脑容量有限的观点,太扯了...一种编程语言,你常用的模块也就那么一些吧,这些模块下面的函数加起来难道还能大几千?上万么?上高中,要背的东西那么多,也没见人叨逼叨说容量不够啊... |
67
4everLoveU OP @unknownservice 不会呀,面试不会纠结这个函数名写的对不对,面试官看的更多的是你解决问题的思路和方法?
|
68
4everLoveU OP @unknownservice 当然了,白板上刷刷的也得很好,也是个加分项了吧?
俺这么说,应该不过分吧 |
69
hoythan 2015-11-30 18:19:43 +08:00
哪这么多废话,就算是补全你一天用到个四五次的,也能大概记住了。而且工作的时候肯定要先配置称自己习惯的环境啊!
|
71
martifact 2015-11-30 18:25:12 +08:00
官方库或者第三方库挺好。自己写的模块太依赖自动补全的话,命名很容易一塌糊涂。
|
72
PublicID 2015-11-30 18:32:13 +08:00 via Android
我可以默写常用的十来个 iOS UITableView 相关的方法名和其基本的方法体
|
73
PublicID 2015-11-30 18:39:25 +08:00 via Android
我能吞下玻璃而不伤身体
|
74
strongcoder 2015-11-30 18:44:51 +08:00
写 iOS 客户端不用代码补全试试看,那 API 读起来跟小说一样长…自己写每天光背课文去了
|
75
ototsuyume 2015-11-30 19:05:24 +08:00
连代码补全都要批判,现在的码农怎么了?不花心思去把代码写好反而以记住几个函数名不需要代码补全为荣,这价值观简直就是扭曲。我就问一下,像大公司里面一些底层系统的代码有好几十万行,包含好几千个类,每个类几十个函数,不用代码补全,你一个一个去背下来或者说每次去打开那个文件记下来然后一个一个字母敲回去?
|
76
altair21 2015-11-30 19:59:59 +08:00 via iPhone
@4everLoveU 我还真不知道记那 api 名对面试有什么帮助,就拿前面一哥们的 tableView 来说,有代码补全你看到第二个关键字自然知道是做什么的。有那时间记还不如设计程序,算法上进行优化。另外,对于你这种装着逼还说不屑叨逼叨的人,我只好 block 之
|
77
wy315700 2015-11-30 20:04:35 +08:00 2
人类的优势就是会使用工具
|
78
aksoft 2015-11-30 20:15:54 +08:00
做人不能装,年轻的时候装可以,老了就不行了
|
79
SonicY 2015-11-30 20:33:39 +08:00
纠结这个问题是为了啥?? 你要去背 api ?随便一个框架拿出来你都要去背?
|
80
pynix 2015-11-30 20:36:51 +08:00
看语言特性。。。 Java OC 这种不用自动补全估计得吃屎, Ruby , python 这类自动补全起不了多大作用。
|
81
onceyoung 2015-11-30 20:45:04 +08:00 via Android
不用纸带编程有什么弊端和好处
|
82
jiongxiaobu 2015-11-30 20:48:03 +08:00 via Android 1
对于键盘商弊大于利
|
83
AtlantisZ 2015-11-30 21:44:12 +08:00
手写 API 并没有什么卵用...
|
84
killerv 2015-11-30 21:48:32 +08:00
肯定是利大于弊,除了新手不建议使用自动补全,我觉得其他方面都是积极的。
|
85
secondwtq 2015-11-30 22:28:03 +08:00
|
86
POPOEVER 2015-11-30 22:34:09 +08:00
小处说是代码补全,稍大点应用框架也是一种“自动补全”,再大点的编程语言亦是,不要在意这些形式上的问题,反正我老了,记不住都得靠 Dash 脑补
|
87
timwu 2015-11-30 23:24:30 +08:00
编程的时候费脑去记 API 是没有意义的,尤其是已经有这么多代码补全工具的情况下。代码补全能大大提高编程效率,为何不用呢?
现在技术 3 年就更新的差不多了,基本上 3 年换一套引擎,记住的 API 估计也早忘的差不多了。 编程最重要的不是语法,而是基本功,比如算法,数据结构,重构技巧, debug 技巧等等。 |
88
lins05 2015-11-30 23:27:50 +08:00
能给 emacs/vim 配置自动补伍的,面试也是一个加分项。
|
89
ipconfiger 2015-11-30 23:39:05 +08:00 2
大家觉得,如果给写网络小说的提供一个带自动补全和 snippets 功能的编辑器会不会很受欢迎?这样子就不用担心打错人命啊地名啊组织名称啊什么的
|
90
Halry 2015-12-01 00:24:26 +08:00 via Android
最近在开发 stm32 ,没有自动补全会打到手软,不知道老工程师怎么过来的,现在新版的 keil 有自动补全了,一般我只打 2 个字就会跳出一整段。
|
91
theohateonion 2015-12-01 00:33:44 +08:00
@4everLoveU 额 这也是我的一家之言,我只是觉得对于我来说,与其用时间去记 API 不如去学习算法,去优化性能。能记住总是不坏的,只是我觉得时间花在这上面的价值不如其他的高😄
|
92
bramblex 2015-12-01 01:01:25 +08:00
|
93
bramblex 2015-12-01 01:02:05 +08:00
茴香豆的茴字有几种写法来着?
|
96
SharkIng 2015-12-01 02:50:00 +08:00
感觉挺好用的,但是 Sublime 下每次 HTML (有时候 PHP 也有这个问题)补全之后或者输入‘>’ 符合之后还继续提醒补全,按字母排列第一个是 a tag. 每次都需要 ESC 才行,有啥办法解决么?这事 Bug 还是啥?
|
97
movtoy 2015-12-01 05:40:16 +08:00
纠结这个干嘛,白猫黑猫抓到耗子的就是好猫。。
关键在于你能写出什么 |
98
vietor 2015-12-01 08:21:52 +08:00 via Android
代码质量取决于
|
99
vietor 2015-12-01 08:23:40 +08:00 via Android
逻辑分析,工具只是辅助。代码补全省事,缺点就是同名函数多了,嘿嘿
|
100
Jobin0528 2015-12-01 11:44:43 +08:00
千万不能自动补全引号之类的东西。。。
|