沉积过后

来源:互联网 发布:手机缴纳淘宝保证金 编辑:程序博客网 时间:2024/04/30 06:36

 网络上的各种blog,看过也写过,却总是没办法找到足够的时间来整理自己的心得。大多数的概念和经验都停留在只言片语的地步,只有在想表达的时候,才发现自己在这方面原来是这么匮乏。

在刚刚过去的几个小时里,唯一做的事情,就是让emacs的next-error能够和最新的WDK产生的错误信息和平共处。很奇怪,MS的WDK自带的 compiler比起前一个版本只有很小的变化(从15.00.30729.165到15.00.30729.207),产生出来的错误信息的格式也几乎完全一样——但是,在每个错误和警告信息前面多了两个字符:1>。就是这要命的两个字符,让原本可以正常工作的next-error变得完全没有作用。仔细看了emacs中和compile相关的文档后,才发现我们可以定制错误信息的格式。

compilation-error-regexp-alist包含了一个列表,每个列表中的项目都是用于错误信息分析的正则表达式。如何在这个alist中加入自己的东西,可是费了劲了。

  1. 直观地想,用add-to-list往里面加入一个条目不久好了吗?可是,在你真正编译任何程序之前,compilation-error-regexp-alist这个变量还根本不存在;
  2. 发现compile模块中竟然有个compilation-mode-hook,太好了,用add-hook增加一个lambda function,每次在compile模式起作用的时候就增加自己的那个regex。实验下来可以工作,但是会导致compilation-error-regexp-alist变得越来越大;
  3. 解决方法很简单,一上来不是没有compilation-error-regexp-alist嘛,用require把compile mode强行加载起来就可以,然后简单一个add-to-list;

其实很多问题确实就是如此,换个思考的方法,可以让我们少走很多弯路。但是——唉,要换个思考的方法,谈何容易。高手之所以能够见招拆招,对症下药,那需要太多的积累。


由此想到的软件工程,所有的用于软件开发的工程方法,他们所要追求的目标,在学校里早就开门见山地提到过了:高内聚、低耦合。Function pointer/OO/AOP/GP,甚而之的idiom/pattern,都是一样。

原创粉丝点击