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. Codeforces Beta Round #9 (Div. 2 Only) B. Running Student 水题

    B. Running Student 题目连接: http://www.codeforces.com/contest/9/problem/B Description And again a misfo ...

  2. mui 图片预览

    1. 图片放大滑动预览需要    mui.zoom.js   mui.previewimage.js 2. 调用  mui.previewImage(); 3. 滑动过程中禁止图片缩放  注释掉下面代 ...

  3. Ext.js 中 25种类型的Ext.panel.Tool

    通过Ext.panel.Panel的tools配置项来设置Ext.panel.Tool实例. 要注意的一点是,Ext框架提供的Ext.panel.Tool仅包含按钮图标而具体的点击事件处理函数需要我们 ...

  4. CentOS 6下搭建LAMP环境

    第一步,使用Xshell管理工具连接远程服务器 第二步,输入服务器账号密码登录远程服务器 如果centos内置的yum源可用的软件偏少或者版本过低,请更新! 首先备份/etc/yum.repos.d/ ...

  5. PHP中getenv()和$_SERVER的区别

    PHP中getenv()和$_SERVER的用法区别: getenv 取得系统的环境变量,环境变量的格式为name=value. 语法: string getenv(string varname); ...

  6. QMsgPack简介

    QMsgPack简介 首先,关于MessagePack协议,访问http://msgpack.org可以了解详细的格式约定及各种语言的实现. MessagePack协议号称比JSON快,但速度的快慢这 ...

  7. 【资料】wod属性

    各个属性的影响力量 st 影响近战远程伤害和体力体质 co 影响体力(比力量的影响大)智力 in 影响法力和魔法防御灵巧 dx 影响近战远程命中和近战躲闪魅力 ch 影响诅咒和治愈能力,诅咒攻击命中和 ...

  8. s:iterator循环输出数字

    1.在action里加上maxNum属性,GET SET方法2.第一种写法(推荐) <s:iterator value="new int[maxNum]" status=&q ...

  9. MFC HTML的img显示摄像头图像

    cv::VideoCapture vc; vc.open(0); cv::Mat temp; vc.read(temp); //cv::resize(temp,temp,cv::Size(320,24 ...

  10. https://github.com/wytings

    博客中写了很多比较杂乱的东西,有时候可能一时看不出效果,毕竟代码问题确实是 “Talk is cheap. Show me the code” 所以,就开了一个github,把一些日常开发和使用的工具 ...