框架应用中如何更好地解决问题

现代应用开发中或多或少会使用到各种开源,自研的库,框架等,各种资料良莠不齐, 除了部分成熟开源,商业框架的文档做得很好,使用广泛,生态完整,的确很多问题可以处理。 但自研的通常就是重灾区,资料少,不同步, 那么如何在这类这类框架中找到问题处理的方向,甚至解决方案呢?

昨天帮同事处理了一个uee框架使用的问题,可做借鉴。

1.对框架有个基本了解,例如框架的大体结构,层次,work流程。 对于各个部分如何work这块我认为是很关键的, 例如以安全界大哥大struts2为例,理解一个action的生成,要配置哪些文件, 这些文件怎么配合,生效路径是怎样的,和其他框架如spring怎么结合, 整个过程可以能在脑子里放电影式过一遍,当然能高清就最好了。 这个主要是建立框架的使用模型,方便和其他框架进行类比,解决一些基本的使用问题, 并为后续深入打好基础。

2.了解框架的实现原理,假设你有打开uee对应的生成件脚本文件, 就会发现里边有5w行js,连ide都会卡顿一下,怎么破?其实还是有门路的,因为uee是基于ng1的框架, 这个文件里边有一大半是jq和ng1的代码,后面部分才是扩展功能。 所以掌握ng1的框架原理至关重要,例如dirty check,directive这些黑科技, 以昨天的问题为例,就是直接进到对应directive的实现中,对比行为差异, 最后可以发现多配置一个参数就可以解决问题。 理解关键特性的实现原理,这样在调试验证过程中才心里有底,不会瞎蒙。

3.工欲善其事,必先利其器,熟练掌握各种工具,小到调试技巧,大到各种辅助工具。 调试技巧,例如上面的问题调试,一次触发会数十次call,一个个查看很容易miss target,这个时候就应该用条件断点。 类似的技巧还有异常断点(查找某个特定异常),赋值(改变运行路径)等。 如果大段代码不知哪里有bug,可以两分搜索,在断点处验证正确性。 调试不是用来找bug的,它只是验证的过程中顺手找到bug。 至于辅助工具,反编译工具,抓包工具,各种shell命令,脚本语言,技多不压身,总有合适的。

4.注意积累,适时总结。很多人不是厉害,只是踩坑多而已。 所以还是要多填坑,多填别人的坑,这样就显得很厉害了,填坑机会就更多了,这是个良性循环。 当然万事开头难,一开始还是要注重编程规范学习,看点书, 遇到问题的时候多找找资料,争取系统的过一下相关知识点。 例如你今天遇到了classdefnotfoundexception,问题解决了, 那么就看看这种异常有哪些情况下会出现,怎么避免,和其他相关异常有什么区别? 可能有很多人已经知道了,写出来很low,但做一下总结总是有好处的,日积月累,做好填坑的准备是关键。

书写节奏有点乱,非喜勿喷。今日@广州地铁。