• PHP项目的“苦逼”经历与思考


    PHP项目的“苦逼”经历与思考

           PHP零基础。但因为项目人手不够的原因,被安排到一个用户“定制”项目。

    该项目是用PHP生成的统计数据报表。

    而用户又有新的3个需求,须要在已有的代码基础上完毕。

          一、初识PHP

          因为本人之前没有接触过PHP代码project,所以须要花费一点时间过一下PHP的基本的语法。个人感觉C++非常像。有类的定义、继承和派生。但其又比C++简化非常多,没有C++C的数据类型的概念。全部数据想用什么直接声明赋值就可以。而且。其字符串非常强大。能够嵌套定义,是C的字符串、结构体、联合体、枚举类型等的组合体。可谓“一专多能”。

         做到对基本的语法有大致的了解,一些通用函数基本是现用现查。

          二、代码结构梳理

          定制项目的特点:在已有功能相对完好的基础上。添加或改动新的功能,以达到用户的“定制”需求

    需求会有《**需求说明书》可供參考。

          由于项目周期短。基本是直奔主题。期间採用了“keyword”搜索的方法。缩小代码范围。但由于代码结构甚是庞大,且“先辈”少给代码凝视,整个代码的跟进进展一直非常慢。没有方向感,感觉代码“跳来跳去”。又回头初始读的地方,“串不成线”。

          整个过程持续了5天。龟速前行。

           三、找准“入口”、实现功能

           从项目实现新功能或改动功能的“全景”统筹视角。要达到用户需求。须要下面几步:

           第一步:找到“代码”新增或改动的入口点。可能不止一处,可能会涉及多个PHP文件。在走读代码的过程中,对这些“可疑点”都要堤防并标注便于自己查找的记号。

           第二步:在读懂“可疑点”代码逻辑的基础上新增或改动代码,并自己重复測试,直至达到客户功能。

           第三步:形成补丁包或者增量包,提交測试部门測试,待測试无误后提供用户验收。

           第一步很关键,往往会花去整个项目的近一半的时间。

           期间须要结合新功能的实现及已有代码框架进行思考,以找准“入口”。

    如。要实现报表新增数据,数据从哪而来?数据可能和mysql数据库有关。要从数据库里获取统计分类数据,已有的数据是怎样获取的?新统计数据的获取是否要改动SQL语句才干达到?怎样改动?这样改动前台能显示正确吗?是不是须要先后台验证?……

           四、思考

           从项目高效达成目标的角度和自己欲哭无泪的苦逼经历,特思考下面几点供跨语言开发和未来项目借鉴。

          第一、“工欲善其事,必先利其器”。

          代码初期,因为SourceInsightPHP代码支持的不好,所以用Nodepad++去读代码。其不同PHP文件代码跳转的痛苦可见一斑。

    后来,搜索发现事实上SourceInsightPHP是支持的,网友有提供配置方法。这样,搜索关键词及代码跳转又高效了不少。

    再后来,从高手哪里发现,这样的前台的代码实际上能够通过Subline Text2进行阅读的,试验了下,的确好用,一直用到如今。

          所以,好的代码编辑、编译工具会让你思路相对顺畅。提高工作效率。

          第二、“顺藤才干摸瓜”。

          多么复杂的代码,仅仅要别人能写出来而且能实现功能,我们看不懂。

    不要“骂娘”。不要埋怨代码凝视不够。静下心来花些时间去“顺藤”。去理顺代码逻辑,这样你才干逐步建立起代码框架的总体思维。

         “顺藤”一方面能够走读代码去顺。当代码逻辑很复杂时候,能够通过打印日志的方式去打印关键函数,以此理顺代码的调用关系。

    两种方法结合会事半功倍。

          初期,因为时间原因,能够先徒手在本上画出流程图,供走读代码參考。

    待项目总结时再画出规范流程图。以备后用。

          “藤”理顺了,新增和改动代码就不会那么繁琐。之前也强调,“顺藤”的时间要远远大于“摸瓜”的时间。

    所以,前期要有耐心,切记浮躁。

          第三、细节非常重要。

          我在改动代码时,须要往数组里新加成员。误将“dataRow”写成“dateRow”,PHP误觉得是新的定义成员。并没有报语法错误。导致我在还有一个PHP文件获取新增值总是获取不到。我逐步缩小范围排查。缩小至写入的区域。函数前、函数内部、函数后都新增日志打印对照。这样还是没有发现问题根源。

    但确认问题就出在写入部分,最后1天时间才发现问题所在,就是前面提及的拼写错误。

          事实上类似的错误,一些编译环境都能通过“补全”避免掉,有的语言还会报语法错误。但细心是程序猿的必备的品质,当引以为戒。

          第四、不宜贪多,一个一个来。

          项目需求多时,看到那么多的需求和为数不多的时间easy使得自己凌乱。所以。需求要一个一个去实现。

    不要一把抓。一把抓往往成为沙漏。仅仅能抓住一点。一个小功能完毕实现后,要知道自己的Next。如此NextNext递推下去,项目就能相对紧凑的完毕。

          2014-6-18 pm20:58思于家中床前

     

    作者:铭毅天下

    转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/32175701

    假设感觉本文对您有帮助,请点击支持一下,您的支持是我坚持写作最大的动力,谢谢!

  • 相关阅读:
    数据库常用连接字符串(网址)
    WPF布局(2)控件拖动
    TreeView templete(code project)
    寄宿(host)和应用程序域(appdomain)
    C#DSN操作
    WPF布局(3)坐标(转)
    C#注册表操作
    程序集加载与反射
    关于RichTextBox 及 RTF格式文件的保存
    Ajax实现不刷屏的前提下实现页面定时刷新
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6759047.html
Copyright © 2020-2023  润新知