下班前,花20分钟来记录下暂时做的进度。
对于一个像我这种状况的程序员而言,现在对于写程序最大的困惑已经不是基本语法或者一种语言的运行机制,因为缺乏在大公司参与大项目的经验,我始终不明确,如何保障一个很大很复杂的系统的稳定性,健壮性,还有可扩展性,不过最后一点暂时可以姑且不谈。我见到一些大的系统的设计里面,都会带有一个很复杂的容错的机制,而且会把每一次的异常记录在数据库,甚至还会生成诊断文件——这些都是一个标准的应用程序应该具有的基本能力。在桌面程序里,这很常见,但是在基于网络B-S模式的系统中,只有大公司的产品才会这样做。
所以,我决定寻找一些复杂的比较大的PHP源码来研究,希望可以从中观察到相应的设计思路以及一些具体的实现技巧。
chillyCMS是我开始看的第一个,因为它毕竟不算太大,也基本没用任何其他的框架或者扩展库或者模板之类的,这样比较纯粹。而且它是用新的PHP和MYSQL的版本来实现的。
工欲善其事,必先利其器。PHP项目打开之后,里面的文件如此之多,很难在短时间内先建立一个对于整个系统的设计的全景,所以我这两天在寻找一些支持反向工程的软件工程工具,来自动生成一些可以用来帮助理解系统设计的视图。
目前找到一个叫做Enterprise Architect的软件,它可以自动扫描项目文件夹内的 所有文件,生成类图,但是只是类。一般的PHP项目都不会采用绝对的OOP设计,chillyCMS也是如此,所以这个图的帮助不算太大:
另外关于数据库,找到一个叫做DB Visualizer的软件,可以根据数据库信息生成E-R图: