说说重复发明轮子的事儿
以下是身边发生的重复发明轮子事儿,如有雷同,纯属巧合。
1. 键盘按键卡死的处理代码
某个程序,按一下回车键是选中列表中的第一条记录,再按一下是将这条记录标记为“已处理”。也就是说,连续按回车键会将大量的记录标记为“已处理——没有人会不停的按回车键,但是,如果是回车键按下去卡住了呢?
因为这个程序用在工业场合,所以按回车键的次数很多,键盘使用的时间长了之后出现卡住的情况比较多。为了解决按键卡死的问题,这个程序里面专门添加了一段代码,用了判断按键是否卡住了。写代码和测试费了一番功夫。
其实,windows已经内置了这个功能,叫做“筛选键”(Filter key),只要在”控制面板->键盘“里设置一下就好。
2. 自定义XML序列化
某个程序,通过XML和其他程序传递数据,需要对XML的内容进行控制,对于特定的接收方删除XML中的一些元素(element)。
这个程序是.NET开发的,生成XML使用了XML序列化的方法,将class的对象序列化为XML;删除XML元素的方法,是直接操作序列化之后的XML,使用类似DOM的方法一个节点一个节点的查找,找到目标元素后删除;如果XML的结构只有一层,问题也不大,但是如果有好几层,想想有多么恐怖,比如
<A>
<B>
<B1>XXX</B1>
<C>
<C1>XXX</C1>
<D>
<D1>XXX</D1>
<D2>XXX</D2>
</D>
</C>
</B>
</A>
其实,.NET提供了两种更便捷的方法来应对这种情况:一是自定义序列化,一是XSLT(XSLT的效率可能稍微低一些)。