使用和滥用内部DSL
时间:2012-6-24
内部DSL是可以对特殊各类的问题使用的一种独特的解决方法,不过和其它所有的工具一样,它们都不能被毫无节制地滥用,当你采用基于内部DSL时,你可以获得所有Ruby语法带来的便捷,不过同时也被限制在内部DSL能够解释的有限范围中,比如,你多半无法使用Ruby编写一个直接解释原HTML代码的DSL。
另外一个问题是处理错误信息,除非你考虑得非常仔细,不然内部DSL可能会制造出相当奇怪的错误信息。例如,万一你不幸在backup,pr文件中应该键入b的地方键入了x;
那么你会得到类似如下的错误信息;
./ex6_multi_backup.rb:86;undefined local variable or method 'x'..
对于一个只希望做一些备份处理而对Ruby一无所知的用户来说,这个错误信息就不怎么人性化了,你可以通过细致地编码和正确地使用异常捕获来改善这个问题,不过,这类没有推理的信息始终是使用内部DSLr一个常驻问题。