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

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

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

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

      一、初识PHP

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

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

      二、代码结构梳理

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

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

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

天。龟速前行。

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

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

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

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

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

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

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

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

       四、思考

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第三、细节非常重要。

天时间才发现问题所在,就是前面提及的拼写错误。

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

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

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

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

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

作者:铭毅天下

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

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

PHP项目的“苦逼”经历与思考的更多相关文章

  1. 献给那些每次调试时都要启动很多WEB项目的苦逼程序猿

    当一个解决方案包含多个WEB项目的时候,只要按F5调试,其它用不着的WEB项目也会自动添加到托盘里.很多新手都不知道如何解决这个问题,我也是刚知道. 在网上找了很多资料看到有2种解决方法: 1.把WE ...

  2. 苦逼三流小公司程序员这半年找工作经历(3)——选择offer

    本文按照企业规模.性质.规模,分成三类,点评一下遇到的这些公司.也算是为半年找工作经历的一个总结. 1,三流小公司 公司规模类似于笔者跳槽前所在企业,性质有外商独资.合资,当然大多数都是民营企业,规模 ...

  3. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  4. 搞IT的技术人员为什么会如此苦逼

    http://www.cnblogs.com/springmvc-hibernate/archive/2012/05/10/2493733.html ————————————————————————— ...

  5. 苦逼IT才能看懂的笑话

    这是苦逼IT才能看懂的笑话1.栈和队列的区别是啥? 吃多了拉就是队列:吃多了吐就是栈 2.世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到她... 3.<c++程 ...

  6. 你还在苦逼地findViewById吗?使用ButterKnife从此轻松定义控件

    前段时间笔者在苦逼地撸代码~最后发现有些复杂的界面在写了一屏幕的findviewbyid~~~另一堆setOnXXXListener~有没有方便一点的方法让我们简单点不用每次都定义一次.find一次, ...

  7. GitHub for mobile 来了,码农苦逼了!

    北京时间 2019 年 11 月 14 日 GitHub Universe 2019 大会上,GitHub 正式发布了 GitHub for mobile,即 GitHub 的移动版本,支持 iOS ...

  8. 无奈而又苦逼的二分版本号回退法定位新引入的bug!!!

    昨天測试人员和开发者都发现, 某新版本号有严重的bug.  群里已经開始嚷嚷了, 但没有谁知道是谁引入的问题.本来呢, 这个问题不应该是由我去定位, 但主管让我帮定位一下, 毕竟时间太紧急, 必须尽快 ...

  9. Pylons安装苦逼之路

    本文介绍一下我在安装pylons的过程中出现的一些错误和解决办法,当然这些都是不完全版. 1.在Serve1(服务器Python版本2.4.3)上面装环境的时候总是出现with_statement有关 ...

随机推荐

  1. 【BZOJ】1042: [HAOI2008]硬币购物

    1042: [HAOI2008]硬币购物 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3307  Solved: 2075[Submit][Stat ...

  2. Java 请求webServce接口 不带参数

    最近对接了个webService的接口取数据,从网上良莠不齐的代码中找到了个方法, 具体作者已经记不住是谁了,现在把代码贴出来,希望可以帮到大家,代码如下,简单粗暴 public String get ...

  3. Codeforces Beta Round #8 B. Obsession with Robots 暴力

    B. Obsession with Robots 题目连接: http://www.codeforces.com/contest/8/problem/B Description The whole w ...

  4. Windows系统默认调试器设置

    Windows系统默认调试器设置 1.使用运行打开drwtsn32 -i 注册华生医生到注册表如图: 2.使用运行打开drwtsn32可以进行一些常用的设置如图: 3. 注册表设置: HKEY_LOC ...

  5. iOS8 NotificationCenter Extension 简介

    在最新的WWDC14上面,苹果发布了iOS8的一些新特性,而其中最让程序员兴奋的特性莫过于Extension,或者称之为Widget. 下面就来尝鲜试验一把. 一.Extension简介 首先,苹果只 ...

  6. .NET:负载平衡的主意事项

    允许局域网发现和共享. 设置固定IP. 网站的IP设置为“全部未分配”. 注意:如果停止IIS的话,不会对负载平衡有影响,负载还是会分配停止了的IIS所在在的电脑,只有停止服务器了,负载不会再分配给停 ...

  7. oracle sql 优化大全

    转自: http://panshaobinsb.iteye.com/blog/1718233 http://yulimeander.blog.sohu.com/115850824.html 最近遇到了 ...

  8. 在CMD下如何搜索某个名字的文件?

    命令如下: dir FileYouWantToFind.txt /a /s   效果如图:   偷看Kun总操作学来的 ^_^

  9. Vue组件开发实践之scopedSlot的传递

    收录待用,修改转载已取得腾讯云授权 导语 现今的前端开发都讲究模块化组件化,即把公共的交互和功能封装到一个个的组件之中,在开发整体界面的时候就能像搭积木一样快速清晰高效.在使用Vue开发我们的vhtm ...

  10. office excel2013如何启用solver选项

    Excel要启用solver很多地方说是要单独安装插件,我认为不同版本可能操作不同.此时office2013已经足够强大,可以通过下面的方法来启用solver 1:在office2013 Excel中 ...