百度工程师教你快速提升研发效率小技巧

AlgoRider
• 阅读 988

百度工程师教你快速提升研发效率小技巧

互联网的发展,无时无刻不在争分夺秒,更快速的研发落地,意味着能抢占市场先机,所以研发效率一直是研发工程师关注的核心问题之一。本文以Web项目为例,从架构设计、辅助工具、编码技巧、测试提效等视角,给出一些可快速落地的实用小技巧,希望对大家有所帮助。

01架构设计:前后端分离架构

传统MVC模型应用中,前后端在开发、部署环节存在不同程度依赖和耦合,随着业务体积不断膨胀,不仅导致开发效率低下,代码也难以维护,前后端完全分离架构则能很好解决这些问题。

前后端分离架构模式实现:在开发环节进行前后端代码存放分离、开发职责分离,在部署环节进行应用部署分离,前后端之间通过HTTP请求进行通讯 。前后端分离的开发模式与传统模式相比,提升开发效率、增强代码可维护性。我们在实施过程中主要从以下几个方面切入:

一、职责分离:前后端代码库分离,后端专注于后端控制层(RestfulAPI)、服务层、数据访问层;前端专注于前端控制层(Nodejs)、视图层。

二、开发方式:前后端分离是各自分工,并行协同敏捷开发,后端提供Restful API,并给出详细文档说明及测试用例,以保证API的可用性,降低集成风险;前端人员发送API请求(GET, POST等)获取数据(JSON,XML)进行页面的组装和渲染。

三、交互方式:前后端之间通过HTTP进行交互,API完成之前,前端人员会使用mock server进行模拟测试,后端人员使用相应工具进行API单元测试(如:junit),不用互相等待;API完成之后前后端再对接测试。当然并不是所有的接口都可以提前定义,有一些是在开发过程中进行调整的。

四、部署方式:前后端资源进行分离部署,前后端可利用nginx做反向代理,如:Java + nodejs + nginx 方式进行交互。

02辅助工具:巧用脚手架

软件工程领域,脚手架可以解释为帮助开发人员在开发过程中使用的开发工具、开发框架,使用脚手架你无须从头开始搭建或者编写底层软件,帮助我们大幅减少重复工作。

在工作中,当项目涉及多人配合,非研发工作量就会占很大比例,这些工作很枯燥,却又不得不做。在常规的Web团队开发工作中,我们要频繁对测试数据增删查改,要维护每个接口的文档,要对未完成的接口进行Mock,这些工作甚至占用时长比编写代码还要久。脚手架工具,能帮我们解决这些麻烦,下面举几个例子:

一、测试数据修改:常用的有phpMyAdmin,几分钟即可配置完成,生成一个可对mysql进行管理的后台,可视化便捷管理测试数据,PM也能轻松使用。

二、文档的生成:有很多配置化的工具,接口文档可选择TypeDoc、Doxgen等,功能文档可选择mkdoc,通过简单的配置,就能完成文档编写工作。

三、接口Mock:可选择Rap、Nei、Easy-Mock等,单独前端也可以用mock.js,前后端开发解耦,互相不阻塞等待,也减少很多沟通成本。

由于程序员都很讨厌重复,每个类似问题都会有很多工具。上面只是列出几个常见场景帮助打开思路,遇到其他场景也可以多去搜索工具,尽量自动化解决。

03编码技巧:高质量前端编码

提升前端代码质量,是提升前端研发效率的重要举措。合理的代码逻辑 、模块设计以及完备的工程化手段,能够保证模块稳定快速的迭代交付。

在实际开发中,常见的优化方案有以下几点:

一、注重逻辑抽象**:同样的代码在多处重复出现,这样显然会提高代码的维护成本。我们应当对重复代码进行逻辑抽象,提升代码复用性,并对这些抽象做好单元测试。

二、合理设计模块:新增一个简单功能时,需要修改多处代码。这说明功能缺少封装,或者模块划分是不合理的。应当重新设计和划分模块,或者封装通用的功能 、沉淀机制。

三、去除过多全局依赖:只修改了一处功能,却在其他意想不到的地方引发了Bug。这常常出现在较为复杂的模块中,新增功能依赖某种全局状态,而模块中分布着太多的全局变量和事件中心。面对这种情况,我们应当改造旧代码,逐渐去除对全局状态的依赖,并创建不依赖全局状态的新机制,在新的需求中去使用它。

四、一个变量只描述一种含义:当同一个变量的内容和含义随着程序运行不断发生改变,会使该变量的实际取值难以预测,也就很难推断所在程序的行为。所以当值含义发生变化时,应当用新的变量指向它,变量名描述新值的内容和含义。

五、git提交规范:为了保证需求的高效率交付,团队应当制定统一的git提交规范,便于查找、合并和回滚。提交应当遵守 commitizen 规范,我们可以通过引入 commit 工具管理提交,以及增加流水线任务阻塞最终发布,来强制保证提交的规范性。

04测试提效:自动化测试提速

在前端自动化测试的过程中,case的操作步骤之间需要等待页面的加载完成。页面的加载速度受各种不可控因素的影响:包括接口响应速度、网络速度、设备性能、前端渲染以及过渡动画时长等。为了确保测试用例的执行稳定,在书写case的过程中通常会设置一个比正常耗时更长的等待时间,这也就导致了自动化测试用例执行过程缓慢。

为了提高用例的执行效率,可以在执行过程中使用计算机视觉技术来实现自动判定页面是否加载完成。实现的思路如下:由于在发生设备交互后,设备的界面会从最初的稳定态过渡到一个空白的中间态,然后再由中间态逐步加载完成进入下一个稳定态。根据此现象可以利用驱动(例如 minicap)快速地截取设备界面的图像信息,然后通过实时分析当前界面的页面空白信息,以及结合前后多帧之间的变化情况判断页面是否达到稳定状态。

计算机视觉技术的引入,实现了不同环境下的自适应。在加载速度较快场景降低了等待时长提高效率,在加载较慢场景增加了等待时长确保case的稳定性。

推荐阅读:

百度一线工程师浅谈日新月异的云原生

【技术加油站】揭秘百度智能测试规模化落地

【技术加油站】浅谈百度智能测试的三个阶段

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Wesley13 Wesley13
4年前
UIWebView长按保存图片和识别图片二维码的实现方案(使用缓存)
0x00需求:长按识别UIWebView中的二维码,如下图长按识别二维码0x01方案1:给UIWebView增加一个长按手势,激活长按手势时获取当前UIWebView的截图,分析是否包含二维码。核心代码:略优点:流程简单,可以快速实现。不足:无法实现保存UIWebView中图片,如果当前We
java一生之敌 java一生之敌
3年前
JVM的内存模型和优化方式
一、JVM的内存模型1.!图片(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/52b2220f04010eb329efbef966f9fa40.png)其中s0,s1为幸
梦
5年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Wesley13 Wesley13
4年前
Java工程师研发面经大合集
百度研发面经整合版软件研发工程师基础研发工程师百度智能云百度核心搜索部!(https://oscimg.oschina.net/oscnet/36c0e7d02b82eea308b754edce463dfa09e.jpg)百度今年的提前批有点奇怪,好像都不走流程,牛客上好几个
Wesley13 Wesley13
4年前
FPGA+CPU助力数据中心实现图像处理应用体验与服务成本新平衡
!(https://oscimg.oschina.net/oscnet/b27bc0d4a279e71e209ef9a9520ee00c145.jpg)图片逐渐成为互联网主要的内容构成,相应的图片处理需求也在高速成长,移动应用与用户生产内容(UGC)正在驱动数据中心图像处理的业务负载快速增加。本文深维科技联合创始人兼CEO樊平详细剖析了
Stella981 Stella981
4年前
30天如何实现超级APP从0到1开发?京东mPaaS EMOP最佳示范来了
!(https://pic3.zhimg.com/80/v2af9f6637b50b09be60b00a42f3812d5e_1440w.jpg)当前,随着移动通信市场的成熟,企业提供服务的商业模式也随之改变,几乎每一个涉足移动互联网的企业都要拥有一款自己的APP。在此过程中,企业如何解决用户体验、质量把控、业务验证和研发速度等方面的挑战,对于快速
【最佳实践】京东小程序-LBS业务场景的性能提升 | 京东云技术团队
一、前言1.1京东LBS门详业务介绍京东LBS门详目前已经支持了仓网、药急送、天选、小时达POP多种业务,并且具备了多端的能力,一套代码可以在京东app、健康app、微信小程序中运行,一定程度上研发效率的提升能够更加快速的支持业务迭代。随着业务需求猛增、各
程序员小五 程序员小五
3个月前
零研发实现AI对话,有没有好用的服务商?
在竞争激烈的数字时代,智能对话能力已成为企业提升用户体验、优化运营效率的关键。然而,技术门槛高、研发成本大、周期长等因素让许多企业望而却步。幸运的是,如今市场上涌现出一批提供“零研发”解决方案的服务商,让企业无需从零构建技术团队,也能快速拥有先进的AI对话