class Test{
...
};
///@~如果发现分离后代码有问题,可以通过 恢复命令 -b 恢复源文件
历时:2 天
总结:
一开始构思该程序的时候认为会很简单。其实不然。主要工作如下:
1、开始的想法是把所有的实现代码分离出来,但是后来考虑到用户可能并不希望分离所有的代码,因此后来就加上了标签。这样一来用户的自主权更大,解析也会相应的变简单了。
2、开始忽略了引号及注释,导致解析失败,当考虑上了引号和注释后,开发难度有了本质的提高。因为要跳过所有的注释和引号而不解析他们。本以为直接预处理掉所有的注释,但是这样做就会得不偿失了,因为好的注释是很重要的,不能也不应该被处理掉。
3、开始实现的时候没有考虑到要把解析给分离开来,直接混杂在一起,导致程序逻辑变得复杂和难以理解,bug 也因此增多。经过多次尝试,把现在定义的接口作为最终实现的接口。(曾经考虑过定义一个文件解析类,来辅助实现,但后来没有这样做,因为很难完全封装、屏蔽掉对输入文件的操作)。经过最后的修改,不仅代码量减少了,而且程序的逻辑也变得简单明了。
4、在开发的时候最好是先想好接口,把主要逻辑实现,然后再实现接口,这样就可以及早发现接口设计是否合理。如果不合理,那重构的难度也不大。当然,对于不甚了解的知识或细节,可能要事先做可行性分析,比如可以把该细节先实现了,以防到最后才发现该细节无法实现,那时候导致的重构代价将是巨大的!因此在这里就存在一个权衡的问题了,具体问题具体分析,一切都要靠情景!
原文地址:http://blog.csdn.net/feitianhu213/article/details/40861381