对BlogMax第一个版本的开发做个小结

生活工作思考BBSMAXBLOGMAX by 达达 at 2008-01-26

BlogMax的第一个版本的项目范围只划定为完成最基本的单用过户Blog功能。项目初期花了一个礼拜时间快速搭建了一个开发框架,就是上篇文章中我描述的那些功能,包括ORM,数据层辅助组件,对象工厂,模板引擎等。

搭建完整个项目的基础结构后,小余参与到了项目中。对亏有了小余的加入,帮我分担了很多工作。我们的分工是,我做页面,规划功能,解决一些比较有难度的问题,小余则将我做的页面做成模板引擎可以识别的动态页面。

做页面我可是头一遭。。。从来没有很完整的设计过一套页面。不过幸亏有google的万能配色,让我省了很多事情 ,界面上可以总结两点:

  1. 明确的功能规划和UI布局设计,可以让开发人员对功能实现更明确,开发效率可以得到很大提供
  2. 灵活的HTML结构,即可以让开发人员在将页面动态化时更容易,也使后期调整维护更方便

基本上这两点我都还挺满意

而新设计的模板系统,以外部注册标签的形式对模板系统进行扩展。对以后的插件开发提供更大的适用范围。插件也可以注册自己的模板标签,能有机会提供UI上的展示。

模板系统的形式上是不错的。但是由于初期时间匆忙没办法太详细的对模板引擎内部结构做比较很里的规划。模板解析器中囤积了大量正则表达式,这将非常难以维护和修改。

目前我正在重新设计模板系统的内部实现,外部的使用形式还是保持不变。内部将不同的语法支持分散到不同的类。最近因为这东西,狂啃编译原理。。。还好其实这里面需要用到的东西不会非常深。

抽象的实体类和数据层,在项目中的确提高了一些开发效率。但是为动态实现抽象基类而写的CodeDom的代码却非常难以维护。不管怎么整理我想都是没办法让我满意的。这个代码生成过程太不透明。程序员很难知道对象工厂调用了哪个类型提供器,这个类型提供器针对他给定的抽象类创建了多少代码。遇到问题时也很难单步跟踪调试。

所以接下来我不打算继续适用CodeDom来动态创建类型和编译了。考虑于IDE结合直接生成静态代码,参与项目编译。程序员也能对生成的代码进行跟踪调试。针对以后的开发和维护更有帮助。

目前的SQLite版本我是通过实体类的代码反向生成SQLite数据库的。索引和触发器另外一个文档维护。但总觉得还是不太好。又想不出什么比较好的管理数据库版本的方式。可能最后还是得回归原始的sql脚本管理了。

从项目的进度安排上我想定得太紧了些,因为我认为应该把长时间熬夜和周末加班写代码当成不正常的现象,而不是程序员应得的,不管做的是不是自己兴趣的事情。

要锻炼好的项目管理。就应该按正规的方式去思考。不是所有人都兴趣写代码或者长时间对着电脑。记得帅帅说过一句话,每个人都有自己的圈子,都有自己的生活和事情。所以作为工作狂的管理者不能把每个人都当成和自己一样的工作狂。凡事应该多替手下的人考虑考虑。

还好,我从来没让小余加班过,不知道在小余心里我算不算是个好头儿,哈哈。

不过第一个版本定的时间比较紧是有原因的,先前我花了很多时间在研究技术上面,虽然不能说完全浪费掉时间(我觉得一个礼拜能把基本结构搭好都是因为先前有这方面的思考和准备),但是的确是浪费了很多时间,也让我自己陷入一种很糟糕的状态。还好,我觉得这种错误以后应该不会再犯了。

这也算是我的年底总结,多谢几位朋友的帮助,让我再年底可以扭转局面,不至于年底总结啥都没有。。。希望好的状态可以在新的一年继续保持下去