2010-04-13 23:22 CST | posted under: Programming | tags: tools

我始终认为,如果一个人在没有工具帮助的情况下不能做好一件事,那么他/她一定也无法利用工具做好这件事,正如一个连纯文本都组织不好的人,一定也无法写出漂亮的文档,给他/她再好的编辑器也没用。

IDE是程序员们最常用的工具之一,它给我们带来的生产力提升有目共睹。只是,IDE真是万能的吗?IDE的某些特性真的值得大量使用吗?这篇文章就来说说我的体会。

首先,在解决特定问题时,IDE并不总是最有效的。不久前,我和我一个同事一起做重构,目标是去掉系统中其他模块对某个特定模块的依赖,他的办法是打开Eclipse,从资源库同步代码,然后等待编译,完成后查找对某些包某些类的引用,而我的做法是在shell中同步代码,然后执行find命令,查找所有具备某些条件的文件中是否出现这个模块的import,你猜我们谁先完成的这个清单?

其次,对于典型的"企业级"应用,如果你真的需要debugger步进调试来告诉你你自己写的代码是怎样的行为,那你这段代码要么白写,要么你根本不知道自己在干什么。我看到无数刚入行的Java程序员,有事没事就开debugger来调试,试图理解自己rush出来的代码,而不是从头仔细的规划设计,从方法的输入输出着手编写测试,等等。我们在解决实际编程问题的时候,思维是分不同层次的,有时我们站在假想用户的角度,有时我们站在架构的角度,有时我们站在数据结构的角度,但很少需要站在算法实现的角度去考虑。我不是想打击各位的积极性,但算法本身,不论课本上吹得多么神乎其神,在99%的日常编程工作中,都不应该是我们关注的重点,很多类库都提供了算法层面的良好支持,利用好现有API恐怕比你从课本上抄和改算法代码更加有效,也更加稳妥。你的目标不应该只是"调通",而是用清晰、有效、准确的代码表达出你的真实意图。我真的看不出debugger在这个方面有什么积极的作用。

再次,对IDE的过度依赖使得我们很容易产出大量冗余的、晦涩难懂的、buggy的代码。所有的抽象都是有缺陷的,当代码全部正常工作时,没有人质疑抽象带来的好处,但一旦超出抽象的范畴,新出现的这些问题往往需要我们投入比平时大得多的精力去解决。IDE也是这样,它为我们屏蔽掉了很多细节,让我们去关注那些解决实际问题的方案。但是,这些细节真的消失不见了吗?不,它们不但没有因为IDE而消失,相反IDE还额外给我们带来一种被夸大的"安全感":一方面我们追加新的代码成本很低,不论是IDE提供的重构支持,还是对boiler-plate代码的生成,都使得我们很容易产出冗余的代码,而这些代码虽然机器理解,但并不总是适合人类阅读;另一方面IDE的智能补全提示和增量编译使得我们很多时候根本不会意识到我们正犯下的很多低级错误。

那么我们应该抛弃IDE,改用纯文本编辑器来编写像Java这么verbose的代码吗?当然不,我只是想提醒各位IDE重度用户:IDE绝非万能,当你将性命拱手交给它时,希望你知道自己在做什么。

::...
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:

或是邮件反馈可也:
askdama[AT]googlegroups.com


订阅 substack 体验古早写作:


点击注册~> 获得 100$ 体验券: DigitalOcean Referral Badge

关注公众号, 持续获得相关各种嗯哼:
zoomquiet


自怼圈/年度番新

DU22.4
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::