开发过程当中,不免会遇到各种问题,现将我在工做中的开发流程整理成文分享给你们,抛砖引玉,但愿能对你们有所帮助。php
总体来说,个人流程为五个部分,开发->自测->提交->上线->复盘->...以此循环往复。java
当收到一个需求时,先充分理解需求,同时要对需求可能带来的影响点有个大概的认知。与产品及相关测试进行沟通,罗列出功能点清单,有不肯定的点及时提出,并把最终理解好的需求与产品、测试复述沟通一遍,达成最终共识。数据库
理解了需求后,可在草纸上画出大体草图或相关流程设计图,原功能点是怎样的,现需求如何,二者之间的异同点,调整后所影响的范围;或者大体列列实现步骤,先XXX,再XXX,接着XXX,最后XXX,借此把需求进一步理清楚。编程
实现同一需求,可能有多种实现方案。对于影响比较大或使用频率比较高或改动范围广的需求动做,先找相关同事花几分钟讨论并确立下技术实现方案,避免方向的失误或在选择那种实现方案上纠结过长。后端
肯定了技术方案,在时间紧迫的状况下,可按照先正确快速实现,后调优效率的原则进行开发。服务器
从线上(或已指定)分支最新代码拉取一个分支,并通知相关协做开发伙伴及测试,你们在此基础上进行相应的代码开发。网络
开发过程当中,可善用IDE工具,譬如错误提示、代码自动补全、查找替换、统一编码格式等功能,减小初级问题的出现。编程语言
尽量按照通用的,你们广泛承认的编码规范进行代码的书写。能够多借鉴下文档或大厂写的开源代码; PHP 可参考看下 PSR 规范(https://www.php-fig.org/psr/),JAVA 可参考看下阿里新版java开发手册-华山版;良好的编码习惯须要不断的自我训练,屡次重复,慢慢造成习惯。函数
写好注释,重要逻辑或方法可写下实现思路,并在适当的出入参节点或其余重要节点,输出日志,方便往后定位排查问题。工具
代码完成后,对照需求文档,进行自测。是否如实还原实现了需求?有没有遗漏点?省得遗漏开发项。
对各个实现的功能模块进行单元测试,查看常规参数、临界参数的影响?正常流程化操做、跳跃性操做的影响?
先后端页面配合,F12打开控制栏,进行相应的查看、修改、提交等操做,看看接口的传参,请求方式,响应,展现,日志的输出等是否有异常?
切换不一样的帐户,查看是否有异常?
按照测试(功能)用例,测试一遍,查看是否有异常。
对于本身目前所处的开发分支,多是多人协同,每次提交以前,先拉取最新代码,再进行提交以免冲突。提交时,可借助TortoiseGit软件花几分钟进行提交文件的比对和校验,避免少提交代码或把不须要的代码提交至远程分支。本次不须要提交的,可暂时放在暂存区。
与相关开发及测试人员沟通能够合并的代码功能、时机和具体分支。譬如这个功能是本次上线吗?何时能够合并?能够合并到那个分支进行测试环境的测试?提早把事情沟通清楚,避免把本次不须要的代码合并错,同时只需将本次须要的代码合并到相应分支便可。
将代码合并至测试分支时,先拉取最新的开发分支代码,拉取最新的测试分支代码,先将测试分支代码合并至开发分支,若有冲突,解决冲突,合并完毕,本地进行预编译,预编译无误,进行提交至远程开发分支。切换至测试分支,拉取最新代码(避免最近几分钟有人提交代码),将开发分支合并至测试分支,(若有冲突,解决冲突,预编译无误)提交至远程测试分支。
通知测试人员及协做伙伴,已将代码合并并放在测试环境运行。
登录测试环境,观察页面功能是否正常,查看相应功能点是否实现,非流程化操做的影响,切换不一样帐户,查看是否有异同。观察相应的数据表数据变化及相应日志输出,对照是否达到预期。
根据前期功能的实现,概括整理,提早作好的相应调整。
数据库、数据表的备份。
数据库、数据表的结构调整,新增表,或者调整表。
数据表的数据调整。默认字段填充调整等
定时脚本的触发,一次性脚本仍是循环脚本,触发的机制(条件,异常补救措施)。
通知合做的相关业务部门或人员。
其余须要作的操做等。
线上环境的复查,页面的展现,相关的功能点实现,log日志的输出及后期的用户和数据反馈。
对于本次开发过程当中遇到的问题进行分类记录和总结,以便不断的学习和成长。可根据本身的实际须要进行分类,个人分类是:
需求理解类
这个需求,和产品沟通了四个小时,依然没有彻底理解产品的切实需求。
问题剖析为沟通方向不对,不在同一频道上。须要我不断增强与产品的沟通,锤炼沟通的技巧,提问的方式,回答的方式,明确要点,避免无方向的讨论,尽早尽快达成共识,缩短沟通时长。
开发实现类
方案设计时的逻辑错误,流程错误,业务不熟悉,应用场景未明确,业务数据增量的影响,更新数据的前后方式等。
解决方法为增强业务流程的学习,多多使用开发的软件功能或产品,多与产品测试及业务合做部门进行沟通,加深对业务内容的理解和认识。同时不断学习编程语言的设计及原理,提高业务水平和开发水平。
代码规范类
没有创建正确的索引方式,致使数据重复,或者查询缓慢。
对于异常没有捕获,致使正常流程挂掉。
变量类型的定义不规范,异常参数引起异常数据。
一些方法函数的默认值。
方法的调用方式和时机条件。
查询时的where条件及limit限制。
运行环境的差别。
...等。
解决方法为能够多多看看相应的代码规范,模仿加练习,逐步养成规范,避免出现相似的问题。
其余问题类
譬如难以预料的用户操做习惯、环境、网络,服务器供应商的限制等因素。开发实际遇到的问题千奇百怪,难以归类的,都暂属其余。
虽然在开发过程种各类考虑周全、当心谨慎,依旧不免会出现其余难以预料的问题;以上措施不是为了杜绝问题发生,只是为了减小问题发生。遇到bug,不要慌张,保持良好心态,分析解决加总结,找到本身能够实施的模型,不断完善及反复训练,以期达到最优效果。