XML文件的组织
前断时间,写了个按键映射的小工具。用XML文件保存配置文件。XML文件主要的内容就是保存键位映射的关系,比如:把H键映射到Left。
最开始的写法是这样的:
<Map from=”H” to=”VK_LEFT” />
这样子解析起来也不麻烦,但感觉写XML文件的时候太啰嗦,就寻思着改成下面的写法:
<Map>H=VK_LEFT</Map>
这样,配合一些智能点的编辑器,最起码能自动闭合标签的,写起来方便了许多。
但是这样,解析起来就有点麻烦了。这个节点,我读出的字符串是"H=VK_LEFT",所以我还要写代码对其进行解析。如果再考虑各种空格的影响,那就有点繁琐了。
其实,比起解决问题的能力,更重要的是消灭问题的能力。之所以我需要写些代码来解析这段字符串,无非就是我贪图XML文件的简洁。但是,XML很大的作用就是用来组织数据的。想到这,我便尝试把这个配置改成:
<Map> <from>H</from> <to>VK_LEFT</to> </Map>
嗯,这下子够规范了。但是,这样的Map一多,写起来便是非常啰嗦,很难一眼看出我做了哪些映射。而且,这样解析起来,不但没有带来便利,反而有时为了美观,会手贱在文本节点中加些空格,使得解析起来又是个问题了(不是所有的XML解析器都有忽略空格的选项)。
总结一下,选择XML结构应优先考虑是否便于解释。在满足这个条件的情况下,可以选择简单、一目了然的结构。至于扩展性,这得综合需求得各方面因素来考虑,在这转一篇相关的文章:程序语言的常见设计错误(2) - 试图容纳世界