PHP项目的“苦逼”经历与思考
PHP零基础。但因为项目人手不够的原因,被安排到一个用户“定制”项目。
该项目是用PHP生成的统计数据报表。
而用户又有新的3个需求,须要在已有的代码基础上完毕。
一、初识PHP
因为本人之前没有接触过PHP代码project,所以须要花费一点时间过一下PHP的基本的语法。个人感觉和C++非常像。有类的定义、继承和派生。但其又比C++简化非常多,没有C++、C的数据类型的概念。全部数据想用什么直接声明赋值就可以。而且。其字符串非常强大。能够嵌套定义,是C的字符串、结构体、联合体、枚举类型等的组合体。可谓“一专多能”。
做到对基本的语法有大致的了解,一些通用函数基本是现用现查。
二、代码结构梳理
定制项目的特点:在已有功能相对完好的基础上。添加或改动新的功能,以达到用户的“定制”需求。
需求会有《**需求说明书》可供參考。
由于项目周期短。基本是直奔主题。期间採用了“keyword”搜索的方法。缩小代码范围。但由于代码结构甚是庞大,且“先辈”少给代码凝视,整个代码的跟进进展一直非常慢。没有方向感,感觉代码“跳来跳去”。又回头初始读的地方,“串不成线”。
整个过程持续了5天。龟速前行。
三、找准“入口”、实现功能
从项目实现新功能或改动功能的“全景”统筹视角。要达到用户需求。须要下面几步:
第一步:找到“代码”新增或改动的入口点。可能不止一处,可能会涉及多个PHP文件。在走读代码的过程中,对这些“可疑点”都要堤防并标注便于自己查找的记号。
第二步:在读懂“可疑点”代码逻辑的基础上新增或改动代码,并自己重复測试,直至达到客户功能。
第三步:形成补丁包或者增量包,提交測试部门測试,待測试无误后提供用户验收。
第一步很关键,往往会花去整个项目的近一半的时间。
期间须要结合新功能的实现及已有代码框架进行思考,以找准“入口”。
如。要实现报表新增数据,数据从哪而来?数据可能和mysql数据库有关。要从数据库里获取统计分类数据,已有的数据是怎样获取的?新统计数据的获取是否要改动SQL语句才干达到?怎样改动?这样改动前台能显示正确吗?是不是须要先后台验证?……
四、思考
从项目高效达成目标的角度和自己欲哭无泪的苦逼经历,特思考下面几点供跨语言开发和未来项目借鉴。
第一、“工欲善其事,必先利其器”。
代码初期,因为SourceInsight对PHP代码支持的不好,所以用Nodepad++去读代码。其不同PHP文件代码跳转的痛苦可见一斑。
后来,搜索发现事实上SourceInsight对PHP是支持的,网友有提供配置方法。这样,搜索关键词及代码跳转又高效了不少。
再后来,从高手哪里发现,这样的前台的代码实际上能够通过Subline Text2进行阅读的,试验了下,的确好用,一直用到如今。
所以,好的代码编辑、编译工具会让你思路相对顺畅。提高工作效率。
第二、“顺藤才干摸瓜”。
多么复杂的代码,仅仅要别人能写出来而且能实现功能,我们看不懂。
不要“骂娘”。不要埋怨代码凝视不够。静下心来花些时间去“顺藤”。去理顺代码逻辑,这样你才干逐步建立起代码框架的总体思维。
“顺藤”一方面能够走读代码去顺。当代码逻辑很复杂时候,能够通过打印日志的方式去打印关键函数,以此理顺代码的调用关系。
两种方法结合会事半功倍。
初期,因为时间原因,能够先徒手在本上画出流程图,供走读代码參考。
待项目总结时再画出规范流程图。以备后用。
“藤”理顺了,新增和改动代码就不会那么繁琐。之前也强调,“顺藤”的时间要远远大于“摸瓜”的时间。
所以,前期要有耐心,切记浮躁。
第三、细节非常重要。
我在改动代码时,须要往数组里新加成员。误将“dataRow”写成“dateRow”,PHP误觉得是新的定义成员。并没有报语法错误。导致我在还有一个PHP文件获取新增值总是获取不到。我逐步缩小范围排查。缩小至写入的区域。函数前、函数内部、函数后都新增日志打印对照。这样还是没有发现问题根源。
但确认问题就出在写入部分,最后近1天时间才发现问题所在,就是前面提及的拼写错误。
事实上类似的错误,一些编译环境都能通过“补全”避免掉,有的语言还会报语法错误。但细心是程序猿的必备的品质,当引以为戒。
第四、不宜贪多,一个一个来。
项目需求多时,看到那么多的需求和为数不多的时间easy使得自己凌乱。所以。需求要一个一个去实现。
不要一把抓。一把抓往往成为沙漏。仅仅能抓住一点。一个小功能完毕实现后,要知道自己的Next。如此Next、Next递推下去,项目就能相对紧凑的完毕。
2014-6-18 pm20:58思于家中床前
作者:铭毅天下
转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/32175701
假设感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!