相信大家在开发软件和进行软件维护的时候也会发现,有时候我们会针对一些软件的功能进行代码重构来让系统运行更加的稳定。今天云南java培训就一起来了解一下,在代码重构的过程中都会遇到哪些问题。
成都创新互联公司是专业的岫岩网站建设公司,岫岩接单;提供成都网站建设、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行岫岩网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
1、离线任务和模型的管理问题。我们做在线服务的都有体会,我们经常容易对线上业务逻辑代码更关注一些,而往往忽视离线代码任务的管理和维护。但离线代码任务和模型在推荐场景中又至关重要。因此如何有效维护离线代码和任务,是我们面临的一个问题。
2、特征日志问题。在推荐系统中,我们常常会遇到特征拼接和特征的『时间穿越』的问题。所谓特征时间穿越,指的是模型训练时用到了预测时无法获取的『未来信息』,这主要是训练label和特征拼接时时间上不够严谨导致。如何构建便捷通用的特征日志,减少特征拼接错误和特征穿越,是我们面临的二个问题。
3、服务监控问题。一个通用的推荐系统应该在基础监控上做到尽可能通用可复用,减少具体业务对于监控的开发量,并方便业务定位问题。
4、离线任务和模型的管理问题。
在包括推荐系统的算法方向中,需要构建大量离线任务支持各种数据计算业务,和模型的定时训练工作。但实际工作中,我们往往忽略离线任务代码管理的重要性,当时间一长,各种数据和特征的质量往往无法保证。为了尽可能解决这样的问题,我们从三方面来做,一,将通用推荐系统依赖的离线任务的代码统一到一处管理;二,结合公司离线任务管理平台,将所有任务以通用包的形式进行管理,这样保证所有任务的都是依赖新包;三,建设任务结果的监控体系,将离线任务的产出完整监控起来。
5、特征日志问题。
AndrewNg之前说过:『挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。』我们理想中的推荐系统模型应该是有干净的RawData,方便处理成可学习的Dataset,通过某种算法学习model,来达到预测效果不断优化的目的。
但现实中,我们需要处理各种各样的数据源,有数据库的,有日志的,有离线的,有在线的。这么多来源的RawData,不可避免的会遇到各种各样的问题,比如特征拼接错误,特征『时间穿越』等等。
这里边反应的一个本质问题是特征处理流程的规范性问题。那么我们是如何来解决这一点呢,先,我们用在线代替了离线,通过在线落特征日志,而不是RawData,并统一了特征日志Proto,如此就可以统一特征解析脚本。
我晕,楼上,重构可不是“重载构造函数”的简写。软件重构和重写压根不是一个层次上的东西!软件重构是说程序员为了对 已有程序 在尽量不改变接口的前提下 进行如下处理 而做的 重新编写代码的工作1、去除bug2、提高效率3、增加新的功能等等。而方法重写只是大多数面向对象语言提供的一种机制,目的主要是帮助实现“多态”。许多时候java代码的重构确实利用了java的方法重写机制,但是你要理解它们根本不是同一层次上的东西。 重构:站在软件整体设计思想的高度,改变软件内部结构达到提高效率,增加功能,去除bug等工作。方法重写:仅仅是java的一种语言机制,它和继承,超类可以引用子类等机制一同实现“多态”。
首先,重构这个概念,不是JAVA所特有的,而是软件工程的一个概念。
主要是指改善现有的程序代码,使其更方便、简单的使用,提高可重用性、可维护性。
在面向对象C++\C#\JAVA等语言中,重构的概念一般是指对类进行重构,一般在现有类的某些功能方法不能满足扩展需要,或者修复BUG时,就需要重构
重构是一个可迭代的过程,可以对一个功能重复重构,直到其满足软件的需求、维护和可扩展性
重构的方法比较多,一本书也说不完,一些概念性的内容见百科