搜索
首页后端开发php教程PHP项目的“苦逼”经历与考虑

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

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

       PHP零基础,但由于项目人手不够的原因,被安排到一个用户“定制”项目。该项目是用PHP生成的统计数据报表。而用户又有新的3个需求,需要在已有的代码基础上完成。

      一、初识PHP

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

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

       二、代码结构梳理

      定制项目的特点:在已有功能相对完善的基础上,增加或修改新的功能,以达到用户的“定制”需求。需求会有《**需求说明书》可供参考。

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

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

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

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

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

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

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

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

     期间需要结合新功能的实现及已有代码框架进行思考,以找准“入口”。如,要实现报表新增数据,数据从哪而来?数据可能和mysql数据库有关,要从数据库里获取统计分类数据,已有的数据是如何获取的?新统计数据的获取是否要修改SQL语句才能达到?如何修改?这样修改前台能显示正确吗?是不是需要先后台验证?……

      四、思考

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

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

      阅读代码初期,由于发现SourceInsightPHP代码支持的不好,所以用Nodepad++去读代码,其不同PHP文件代码跳转的痛苦可见一斑。后来,搜索发现其实SourceInsightPHP是支持的,网友有提供配置方法。这样,搜索关键词及代码跳转又高效了不少。再后来,从高手哪里发现,这种前台的代码实际上可以通过Subline Text2进行阅读的,试验了下,的确好用,一直用到现在。

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

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

      多么复杂的代码,只要别人能写出来并且能实现功能,我们看不懂。不要“骂娘”,不要埋怨代码注释不够,静下心来花些时间去“顺藤”,去理顺代码逻辑,这样你才能逐步建立起代码框架的整体思维。

      “顺藤”一方面可以走读代码去顺,当代码逻辑非常复杂时候,可以通过打印日志的方式去打印关键函数,以此理顺代码的调用关系。两种方法结合会事半功倍。

       初期,由于时间原因,可以先徒手在本上画出流程图,供走读代码参考。待项目总结时再画出规范流程图,以备后用。

       “藤”理顺了,新增和修改代码就不会那么繁琐。之前也强调,“顺藤”的时间要远远大于“摸瓜”的时间。所以,前期要有耐心,切记浮躁。

       第三、细节很重要。

       我在修改代码时,需要往数组里新加成员。误将“dataRow”写成“dateRow”,PHP误认为是新的定义成员,并没有报语法错误。导致我在另一个PHP文件获取新增值总是获取不到。我逐步缩小范围排查,缩小至写入的区域,函数前、函数内部、函数后都新增日志打印对比。这样还是没有发现问题根源。但确认问题就出在写入部分,最后1天时间才发现问题所在,就是前面提及的拼写错误。

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

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

      项目需求多时,看到那么多的需求和为数不多的时间容易使得自己凌乱。所以,需求要一个一个去实现。不要一把抓,一把抓往往成为沙漏,只能抓住一点。一个小功能完成实现后,要知道自己的Next。如此NextNext递推下去,项目就能相对紧凑的完成。

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

 

作者:铭毅天下

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

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

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
继续使用PHP:耐力的原因继续使用PHP:耐力的原因Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

PHP和Python:探索他们的相似性和差异PHP和Python:探索他们的相似性和差异Apr 19, 2025 am 12:21 AM

PHP和Python都是高层次的编程语言,广泛应用于Web开发、数据处理和自动化任务。1.PHP常用于构建动态网站和内容管理系统,而Python常用于构建Web框架和数据科学。2.PHP使用echo输出内容,Python使用print。3.两者都支持面向对象编程,但语法和关键字不同。4.PHP支持弱类型转换,Python则更严格。5.PHP性能优化包括使用OPcache和异步编程,Python则使用cProfile和异步编程。

PHP和Python:解释了不同的范例PHP和Python:解释了不同的范例Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP和Python:深入了解他们的历史PHP和Python:深入了解他们的历史Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

在PHP和Python之间进行选择:指南在PHP和Python之间进行选择:指南Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和框架:现代化语言PHP和框架:现代化语言Apr 18, 2025 am 12:14 AM

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

PHP的影响:网络开发及以后PHP的影响:网络开发及以后Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具