困惑:用像VIM,Notepad++这样的文本编译器而不用IDE写大型程序,真的能行么?

2011-09-10 22:29:39 +08:00
 Mr_Vangogh
怎么调试程序?怎么追踪代码?这种问题貌似总要引起大家的争论,别吵好么?这个问题困惑我好久了,大家给我个答案吧。。。
11337 次点击
所在节点    问与答
33 条回复
Quest
2011-09-10 22:32:09 +08:00
选择你喜欢的,而不是听别人的。当然我觉得coding使用纯粹的编辑器而不是IDE让获得了更多乐趣和自由。
Mr_Vangogh
2011-09-10 22:33:08 +08:00
@Quest 不是,我是比较困惑文本编译器那些怎么调试,怎么追踪代码。并不是要选择什么:)
vayn
2011-09-10 22:34:11 +08:00
关于如何使用编辑器调试已经有太多的文章了,Google is your best friend, ever
kaichen
2011-09-10 22:54:55 +08:00
debug的话可以用gdb或者print,看过<coders at work>的话,你会发现大牛们几乎都用print。
webgeekman
2011-09-10 23:00:37 +08:00
@kaichen 能否详细说一下?
kaichen
2011-09-11 00:06:14 +08:00
roamlog
2011-09-11 00:44:10 +08:00
关于调试,我写 ruby 或 rails,从来不调试,都是写测试代码。。。
chloerei
2011-09-11 02:38:47 +08:00
能行,因为大型程序不是靠人去调试的,而是机器自动调试的,生成调试逻辑的代码就叫做测试代码。
Mr_Vangogh
2011-09-11 08:34:09 +08:00
@chloerei 就是说在程序中加一些log一样的东西,然后分析log文件来找到代码中的问题?那追踪代码呢?比如一个地方用到了一个函数,然后你需要找到这个函数的定义,不能直接跳过去,万一文件多了怎么找呢?
reaky
2011-09-11 09:09:59 +08:00
不是有tag文件嘛
holmesabc
2011-09-11 09:50:52 +08:00
其实也应该 看你写什么吧。
文本编辑器感觉写脚本,网页很不错。
如果要写java之类的,估计会把人玩死。

调试方面,我还没有看见周围的人怎么去调(主要是python,偶尔会有ruby),他们都是用的print类似的东西测试,看输出。
断点,单步什么的,都没看他们用过,据说要用的话也是用eclipse去下断。
这也主要是这些脚本语言测试起来方便,特别是web,写好了,F5一下就可以看到效果。
bhuztez
2011-09-11 10:09:21 +08:00
到底有多少会是大型程序
lanisle
2011-09-11 10:18:20 +08:00
这真的是个人喜好,不同的工作场景用不同的工具。工具是提高效率的得力助手,但不要被工具套牢啦~
qiao
2011-09-11 10:58:34 +08:00
@Mr_Vangogh 一般写 C 或 C++ 程序都会使用 ctags,然后给 vim 装上 c.vim 插件,之后便可以非常方便的在函数内跳转。此外还有 tagbar 等插件用于显示函数列表。所以你的这个问题完全不必担心。
Mr_Vangogh
2011-09-11 11:05:17 +08:00
@qiao 嗯,我明白啦:)
chloerei
2011-09-11 13:33:45 +08:00
@holmesabc 对测试还有误解,自动测试跟log是完全不同的。自动测试是写一套代码,去检测程序代码的逻辑。测试的地位在国内还是被低估的,推荐这本书 http://book.douban.com/subject/1230036/ 测试驱动开发(中文版)

不过如何调试跟是否用IDE其实是两个话题,编辑器可以用命令行工具调试,IDE可以写自动测试。到最后决定性的还是看个人喜欢用单独的工具还是喜欢IDE打包。

除了一个例外:Java,整个社区就是假设工作在IDE下的。

“这里的语法设计是不是繁琐了点?”
“没事,他们有IDE,让IDE的人写个代码生成工具”
“XML不好读不好写啊”
“没事,他们有IDE,让IDE的人写个图形编辑工具”

结果出来的东西没有IDE根本玩不转。我的选择是远离这些东西。
Droog
2011-09-11 13:51:59 +08:00
原来也在这上面纠结过。
感觉那种强烈推荐vim以及其他一些文本编辑器做IDE,是一种误区(当然VIM已经不能算作一个简单意义的文本编辑器了),常常也会有筒子举例,大牛们只用VIM,或者其他的编辑器,但,这里有几个大牛呢。
“君子善假于物”,既然有方便的IDE,能提高效率,何乐而不为呢。
至于所谓的,什么没有了IDE就吃不开,这个根本就不用担心。难道有公司说,IDE是禁止使用的,那不是天方夜谭吗。
args
2011-09-11 14:16:00 +08:00
这个真的是个人喜好问题。我用vim的原因就是方便简单,不用去理会其他编辑器那繁多的配置和复杂的操作,而这个可能恰恰是别人不用vim的原因。

至于调试追踪,或许随着自己经验的增加会趋向于使用更简单的方式来完成,比如我刚入门写c程序的时候极喜好用gdb,但后来发现有时即使使用gdb一个简单的if中赋值的bug也会让我调试一天的时间。而现在大多靠经验和打印定位bug,以至于gdb的那些命令都全忘了。
oldman
2011-09-11 16:05:04 +08:00
我觉得这一方面是个人喜好问题,另一方面也是解决问题的思路问题。

一般情况下你有可视化的调试器(比如说vs调试器)时,遇到问题的第一反应就是“咦,怎么会这样呢,我调试下看看”。于是就开了调试器,打上断点,跑一下。

这样的话就是往往你会一头扎到实现里去,只见树木不见森林。其实应该先静下心来想想这样为啥会出问题,为啥出了这个问题我只是靠分析一点结果都拿不到(而一定要靠调试),如果需要调试的话再来调试,同时思考一下这种情况以后是不是可以不通过调试来解决。

还有ide的问题,我觉得用vim和vs(原谅我,windows开发,没办法)最大的区别就是vim写代码让我思路更清晰(因为没有一堆的提示打扰),但是相反,如果我今天就想让它给个提示的时候,它有些时候提供的就不全了。反正各有利弊吧,看自己把握了。
chuck911
2011-09-11 23:11:38 +08:00
不方便测试的程序不是好程序
项目越是大型,越要注意松耦合、面向接口,也就是方便测试
虽然我不是先写测试再写程序,但也深受TDD的思路影响

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/17977

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX