1、首先不要说的,重中之重的需求分析;我做的52fourm这个项目的需求分析真的很糟糕,其中我自己也有很大的一部分责任,其中主要表现为:项目开始启动时候,第一次做的需求分析不是很明确,变数太多,有很多不确定因素,所以这个时候作为开发人员的我们应该主动和策划进行沟通,完善需求分析;当完善完需求分析后,一定要把网站中的主体功能模块列出来,画出功能模块间的相互关系,倘若模块间的相互关联性不是很大,我们可以选取按照单模块开发方式,总->分的思想来开发,但倘若模块间具有高耦合性,那么我们就应该清楚的了解各个功能模块间的相互关系,只有充分理解了各个功能模块间的相互关系我们才能设计出较完美的数据库,否则我们只是在将来的某个时间段突然发现以前的数据库设计得是多么的烂,所以我将数据库设计摆在第一位,这就表明了我们应该学会自己去设计比较完美的以及向后兼容性更加良好的数据库。
2、程序方面,52forum网站主要是采用了ZF框架来开发的,其中有许多可以值得注意的地方,同时也有很多值得以后学习的地方。先说问题:
(1)首先,我认为程序开发方面的一个问题就是,COPY出来再在其他地方用的还是比较多,代码的重用性没有很好的被运用,这就要求我们在写每一个函数或者一个子流程时,自己得想一下,是不是还有其他情况和这个函数或者流程有相似,或者换句话说,他们是一组的,倘若能够归并起来,我们将发现,代码的总行数减少了,而代码的可读性也增强了!这条规则同样可以运用在JS上,只不过同时可能要求HTML采用指定的字符串去标记,以后都是通过这个这个或者这类标记去操这类相关的HTML(比如时间格式的检测)。
(2)其次,命名方面也很重要;好的命名方式应该是见名知意,而我发现,这次我开发的52forum中,在模块里面开发的命名有很多误区,比如说命名可能会出现在不同时间要求同一数据而去写2个不同的函数,所以命名是很重要的,这点我会再去看看相关的资料文献来提高下。同时我觉得文件的命名以及数据库的表名、字段名的命名方式同样也很很重要,所以这里就要求我们用实体关系图来一一列出相关实体的相互关系,同时也将其属性标识出来,倘若以后真的增加了一个同类别的其他实体,我们可以查看同类别的实体的属性来确定数据库字段的命名方式。(很典型的就是52fourm中文章、资料、研讨会都有一个‘基本类型’,由于前期没有画E-R图,结果在写数据库字段的时候,文章、资料、研讨会的基本类型名命名成文章和研讨会都采用base_type标记,而资料的基本类型却命名成data_type标记,这样导致了以后的程序的逻辑方面针对资料要增加一层处理来处理资料的基本类型;还比如,现在上传文章加上了检查文章、上传资料添加上了检查资料是否已经存在,我现在处理的办法是通过2个函数checkArticleExistIfByTitle($title)、checkDataExistIfByTitle($title),两个函数来实现的,同时2个函数分别写在各自的模块中,虽然这看起来没什么,但我们可以创建出一个资料和文章有公共交集的模块,然后在该模块中定义一个checkExistIf($type,$title)的函数,这样就可以增加代码的复用程度,同时也减少了代码的行数,这样的例子还有很多,所有一开始做项目的时候就需要规划好哪些地方需要合并的,哪些地方需要分开单独处理的,把相似的内容提取出来,降低代码的冗余度,提高代码的质量)。
(3) 再次,ZF方面,我个人觉得有必要再充下电,因为很多地方理解不是很透彻,比如说权限控制、会话保持等,平时多看点书,看人家是怎么写的,还有一点就是关于大型的SQL语句部分自己也得注意下,多看下SQL手册,了解其中的一些细节,提高代码的性能!!!
(4)总之,一定要尽最大的努力在前期了解到最多的关于开发软件或网站的“情报信息”--需求分析,这一步是至关重要的,同时也是看待一个公司或者一个员工开发是否规范的凭据之一!
(5)想到什么,以后可以补加上!
浙公网安备 33010602011771号