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-708E]Student's Camp

    题目大意: 一个n*m的墙,被吹k天风,每块靠边的砖都有p的概率被吹掉. 如果上下两行没有直接相连的地方,我们则认为这一堵墙已经倒塌. 问最后墙不倒塌的概率(模意义). 思路: 动态规划. 用f[i] ...

  2. maven搭建企业级多模块项目

    1.创建一个maven项目 选择pom 完成 2.创建模块 项目右键选择module,创建模块.创建子模块 其余的打包时都为jar 地址:https://github.com/LeviFromCN/m ...

  3. bzoj 2809: [Apio2012]dispatching -- 可并堆

    2809: [Apio2012]dispatching Time Limit: 10 Sec  Memory Limit: 128 MB Description 在一个忍者的帮派里,一些忍者们被选中派 ...

  4. python 基本语法速览,快速入门

    https://zhuanlan.zhihu.com/p/24536868 学习参考于这个博文. 我做一个笔记. 关于python一些常用的语法快速的预览,适合已经掌握一门编程语言的人.零基础,没有任 ...

  5. CMOS DACs act as digitally controlled voltage dividers

    Digital potentiometers, such as Analog Devices’ AD5160, make excellent digitally controlled voltage ...

  6. Maven编译代码的相关命令

    第一.main目录下的主代码编写完毕后,使用Maven进行编译,在项目根目录下运行命令mvn clean compile进       行项目编译. 第二.test目录下的测试用例编写完毕之后就可以调 ...

  7. 【实体 报错 】No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer

    HTTP Status 500 - Could not write content: No serializer found for class org.hibernate.proxy.pojo.ja ...

  8. FIS3配置fis-conf.js

    设置规则的配置接口: fis.match(selector, props); 1.添加md5戳:对 js.css.png 图片引用 URL 添加 md5 戳: fis.match('*.{js,css ...

  9. Android学习之Http使用Post方式进行数据提交(普通数据和Json数据)

    转自:http://blog.csdn.net/wulianghuan/article/details/8626551 我们知道通过Get方式提交的数据是作为Url地址的一部分进行提交,而且对字节数的 ...

  10. 仿LOL项目开发第二天

    仿LOL项目开发第二天 by草帽 接着上节来讲,上节更新还没开始写代码逻辑,今天我们补充完整. 我们找到VersionManager脚本里面的CheckVersion方法: 首先我们想到检测版本,需要 ...