首頁 後端開發 php教程 PHP项目的“苦逼”经历与考虑

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

Jun 13, 2016 pm 12:00 PM
nbsp next 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

熱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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

我後悔之前不知道的 7 個 PHP 函數 我後悔之前不知道的 7 個 PHP 函數 Nov 13, 2024 am 09:42 AM

如果您是經驗豐富的PHP 開發人員,您可能會感覺您已經在那裡並且已經完成了。操作

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

See all articles