Java中重构是什么意思?

Python010

Java中重构是什么意思?,第1张

java重构:指程序员对已有程序在尽量不改变接口的前提下,进行重新编写代码的工作,一般有以下几方面:

1、去除已知bug。

2、提高程序运行效率。

3、增加新的功能。

重构举例:(简化代码、提升效率)

重构前:

if(list != null &&list.size() >0){

for(int i = 0i <list.size()i++){

//skip...  }}

重构后

if(list != null){

for(int i = 0, len = list.size()i <leni++){

//skip...  }}

很多人在进行软件开发和软件维护的时候会发现一个严重的问题,需要对软件代码进行重构,让系统更加稳定的运行。那么在进行代码重构的过程中有哪些常见的问题呢?下面云南电脑培训为大家具体介绍。

1、任务管理问题和离线模式问题。

我们的线服务是众所周知的,我们往往容易受到网上商业逻辑守则的约束,这些守则往往忽略了在线规则的管理和维护。然而,在现场,在线规则和守则也很重要。因此,云南IT培训发现有效维护守则和离线任务是我们面临的问题。

2、特征日志问题

在推荐系统中,我们经常遇到特征的拼写和特征的“穿越时间”问题。特征时间穿越是指,使用在模型训练时无法预测无法得到的“未来信息”,这主要是因为训练label与特征的连接时间不严格。

3、服务监制问题

一个通用的推荐系统应当在基础监视上尽可能通用地再利用,具体的业务应当减少对监视的开发量,并且昆明IT培训发现这样更加方便业务定位问题。

4、离线任务的管理问题

在包含推荐系统的算法方向上,需要构建大量的脱机任务,支持各种数据计算业务,需要支持模型的定时训练工作。但是在实际工作中,我们往往忽略了离线任务代码管理的重要性,当时间变长时,昆明电脑培训发现各种数据和特征的质量往往是不能保证的。

相信大家在开发软件和进行软件维护的时候也会发现,有时候我们会针对一些软件的功能进行代码重构来让系统运行更加的稳定。

今天天津java培训http://www.kmbdqn.cn/就一起来了解一下,在代码重构的过程中都会遇到哪些问题。

1、离线任务和模型的管理问题。

我们做在线服务的都有体会,我们经常容易对线上业务逻辑代码更关注一些,而往往忽视离线代码任务的管理和维护。

但离线代码任务和模型在推荐场景中又至关重要。

因此如何有效维护离线代码和任务,是我们面临的一个问题。

2、特征日志问题。

在推荐系统中,我们常常会遇到特征拼接和特征的『时间穿越』的问题。

所谓特征时间穿越,指的是模型训练时用到了预测时无法获取的『未来信息』,这主要是训练label和特征拼接时时间上不够严谨导致。

如何构建便捷通用的特征日志,减少特征拼接错误和特征穿越,是我们面临的二个问题。

3、服务监控问题。

一个通用的推荐系统应该在基础监控上做到尽可能通用可复用,减少具体业务对于监控的开发量,并方便业务定位问题。

4、离线任务和模型的管理问题。

在包括推荐系统的算法方向中,需要构建大量离线任务支持各种数据计算业务,和模型的定时训练工作。

但实际工作中,我们往往忽略离线任务代码管理的重要性,当时间一长,各种数据和特征的质量往往无法保证。

为了尽可能解决这样的问题,我们从三方面来做,一,将通用推荐系统依赖的离线任务的代码统一到一处管理二,结合公司离线任务管理平台,将所有任务以通用包的形式进行管理,这样保证所有任务的都是依赖新包三,建设任务结果的监控体系,将离线任务的产出完整监控起来。

5、特征日志问题。

AndrewNg之前说过:『挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。

』我们理想中的推荐系统模型应该是有干净的RawData,方便处理成可学习的Dataset,通过某种算法学习model,来达到预测效果不断优化的目的。

但现实中,我们需要处理各种各样的数据源,有数据库的,有日志的,有离线的,有在线的。

这么多来源的RawData,不可避免的会遇到各种各样的问题,比如特征拼接错误,特征『时间穿越』等等。

这里边反应的一个本质问题是特征处理流程的规范性问题。

那么我们是如何来解决这一点呢,先,我们用在线代替了离线,通过在线落特征日志,而不是RawData,并统一了特征日志Proto,如此就可以统一特征解析脚本。