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

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

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

时间: 2024-10-01 20:10:44

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

我相信我会逆袭的!细数程序猿初尝创业的苦逼经历

浑浑噩噩地过完了这2个月,也是时候坐下来静静地想一想自己这一段时间的付出与收获了.从刚开始的有想法,有激情,到现在的力不从心.是我变了,还是这个世界变得太快?两个月前,我和公司的几个哥们一起聊到生日时送蛋糕的事,都说离得近还可以,离得远可就是没办法了.有的女朋友在外地,生日想玩个浪漫,可是有时又抽不开身,想送份大礼,叫女朋友有面子点,又想叫全世界的人都知道,那就送个蛋糕呗,可是空运啥的真tm麻烦.有的兄弟也说父母在老家的这辈子都没有吃过蛋糕,想送也是麻烦~~~~于是,我有了这样一个想法,做一个可

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

当一个解决方案包含多个WEB项目的时候,只要按F5调试,其它用不着的WEB项目也会自动添加到托盘里.很多新手都不知道如何解决这个问题,我也是刚知道. 在网上找了很多资料看到有2种解决方法: 1.把WEB项目设置为使用IIS调试, 把ASP.NET网站项目设置为使用自定义服务器调试,并指定iis配置的URL. 然后可以任意设置某个WEB项目为启动项目来调试: 2.选中要设置的项目,不要右击里面的属性,而是按F4时显示的属性,下面总是在调试时启动设为false. 个人感觉第二种方法比较适合自己.

【我拼搏的2016】-苦逼运维如何变身为SRE成长经历

提起运维很多人能联想到的字眼就有"苦逼"."辛苦"."加班"."背锅",随着国内互联网大潮的兴起,特别是最近几年互联网行业的火爆,催生了大批运维从业人员.类似于当年网络管理员的职业发展,由于普通人对于该领域专业知识的匮乏和良莠不齐的从业人员素质,拉低了整个社会对于这一职业的认知,和当今的运维职业何其相似. 作为运维大军中的一员,我也是经历过从自己摸索自学到专业培训机构系统化学习,再到逐渐完善知识体系和不断提高眼界认知,过程是极

iOS学习计划,通过一个项目来掌握知识,来改变我苦逼的命运(附代码)

其实自从去年就开始在专研大众点评的第三方开发,一直断断续续.现在是给自己定目标的时候了.从这个项目中可以学到任意的关于Objective-c的知识. 1.网络编程 2.数据解析(json) 3.自定义控件 4.异步加载 5.Objective-c的高级特性,如反射(这里称为反射不知道合适吗,因为我之前学过c#,觉得它和c#的反射非常相似,暂且称为反射). 6.LBS开发. 7.导航.等等 下载 先把自己已经完成的代码上传上去,供大家阅读,如有缺陷,请多多包涵并指出,我们一起进步. 哎.写着写着有

创业干货:牛逼的外衣,苦逼的内裤

如今,出门在外.朋友聚会.相亲拍拖.亲戚互访等场合你不创业你都不好意思开口说话,这是一个很奇特的现象,高层说这是大势所趋,似乎遍地是机会遍地有黄金,阿蒙也一而再再而三地思考过可能的深层次原因,一是可能社会无法提供足够的职业空间,以其因失业所带来的不安,不如创业带来的振奋,创业是因失业而起的:二是技术与趋势带来了大量的机会,而这些机会的成功率是极小极小的,需要大量的创业者去尝试去拼博,最终若大的中国再出现新的BAT:三是可能现在的大学生或非大学生已经不愁温饱不愁其他,以其给别人打工,不如自已开干,

研究生的苦逼与安逸

明天打算回家,在回家之前对我已经过去的生活做个总结. 12年考入本985高校的时候,是高调的,自豪的,对这即将的三年学习时间充满了憧憬和向往,QQ空间里面转的全是怎样有效地度过研究生,如何写高质量paper之类的文章,每天的说说动态也是矫情造作的,想引人注目的,自以为很有个性的. 第一学期属于适应期,经历9个月的考研生活后,发现自己越来越沉默了,面对许多话题都不愿意插嘴,不感兴趣.可是又想突出自己,而好像自己又是平凡普通的.在这样的矛盾中缓缓向前.导师在国庆的时候给了我一篇英文paper,要我把

苦逼的工作内容

1.负责企业EIS系统(企业ERP系统叫法)研发测试,需求整理,系统应用,角色权限分配,跨部门协同测试协调工作等,与研发商.设备供应商沟通部署实施事宜,独立撰写部署实施方案: 2.负责企业蓟县新建园区网络架构部署,数据中心机房部署等事宜(包括园区路由器.交换机.服务器.负载均衡,存储等资源的采购.规划.部署与功能分配,同时包括数据中心机房装修,安防,消防,弱电线路等施工事宜),撰写数据中心机房部署实施方案. 部署方案主要涉及:硬件架构.系统架构.应用软件.存储灾备和IP资源分布等,其中,网络方面

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

前段时间笔者在苦逼地撸代码~最后发现有些复杂的界面在写了一屏幕的findviewbyid~~~另一堆setOnXXXListener~有没有方便一点的方法让我们简单点不用每次都定义一次.find一次,强转一次,set一次~~ 后来笔者在收藏夹里找到同事好久曾经发给我的网址(呵呵,果然是一旦增加了收藏夹就再也不会看了)~~打开发现有个叫做butterknife的东东~ 那么接下来我们来看看ButterKnife如何将我们从findviewbyid中挽救出来的. ButterKnife简单介绍 呵呵

一个苦逼运维的2015结束语——写给过去和未来的自己

> new Date() ISODate("2015-12-31T15:10:26.721Z") 敲下回车才突然反应过来,2015年即将要过去..... 回想12年带个妹子和同寝室的基友一起走出北京站,看着外面灰蒙蒙的天空,激动.迷茫等等复杂情绪的交织让我至今都分不清,当时是以一种怎么样的心情来北漂的.说来好笑,虽然在辽宁上的大学,距离北京也就两三个小时的动车,可就是从没去过北京,对这祖国首都的认识也一直停留在脑海中,从未踏足过这块土地. 也许是缘分,也许是一种初生牛犊的盲目,被