草庐IT

java - 如何重构 "stringly-typed"代码?

我目前正在开发一个代码库,其中有几类变量,例如数据库路径,它们简单地表示为字符串。这些(非)类型的大部分操作都在实用程序类中定义。我创建了一个新类来表示一个数据库,其中的操作定义为传统OOP风格的实例方法。然而,遍历大型代码库并重构它以使用新类型是非常费力的。有没有人对如何快速有效地执行此操作有任何建议? 最佳答案 迁移实用程序类以使用您的新类。那么实用类方法应该只包含两个语句。一个用于创建您的类(class),另一个用于调用您的类(class)。之后,您可以内联实用程序类方法,从而消除对它的需要。完成后,您需要寻找一种方法来避免一

java - 使用版本控制很好地重构

我的一个同事让我检查我的一些代码,他给我发了一个diff文件。一般来说,我对差异或版本控制并不陌生,但由于他所做的更改,差异文件很难阅读。具体来说,他使用了“提取方法”功能并对一些方法进行了重新排序。从概念上讲,很容易理解,但从差异来看,很难说出他做了什么。检查以前的修订版并使用Eclipse的“比较”功能对我来说要容易得多,但它仍然很笨拙。是否有任何版本控制系统存储与重构相关的元数据。当然,它会特定于IDE和编程语言,但我们都使用Eclipse和Java!或许有一些标准可以让IDE和版本控制实现很好地发挥作用? 最佳答案 Ecli

java - 在 Spring 中重构这个的最佳方法?

privatefinalExecutorServiceexecutorParsers=Executors.newFixedThreadPool(10);publicvoidparse(Listobjs){//...bunchofelidedstuff....CompletionServiceparserService=newExecutorCompletionService(executorParsers);for(finalAsupStoreObjobj:objs){parserService.submit(newParseThread(obj));}}我想对“ParseThread

AIGC下一步:如何用AI再度重构或优化媒体处理?

01AIGC时代的媒体内容生产技术架构首先给大家分享阿里云视频云媒体服务的顶层架构设计,这为AIGC的快速落地奠定了基础。媒体服务整体架构分三层。最底层是云原生底座,阿里云视频云构架在分布式云原生框架之上,视频云与我们的客户一样,自身也是云的使用者,可以获得云计算IaaS层弹性、按需按量、规模化的红利。中间层为媒体基础层,即媒体服务的底层技术核心。这一层分为三个部分:左侧的算法区域包括音视频编解码与增强算法、特效渲染算法、视觉AI算法、3A算法等。中间的媒体引擎是执行各类媒体处理任务、AI任务的发动机,负责集成算法及工程优化,设计统一的媒体处理框架,实现媒体处理Pipeline的高质量运行。最

java - 如何使用重构从类中删除泛型类型

我有这门课:publicclassTimeIntCoextendsTimeValueCo{}我决定不再需要T类型,并且在类中不使用它(我知道它始终是Integer)。但是,我对看起来像TimeIntCo的类有很多引用。.有没有办法使用Eclipse重构来删除T键入而不导致引用中出现任何错误?我的意思是一步完成,而不是查找和替换。编辑:更清楚-如果我只是删除T从类里面我有大约10,000个错误,我不想手动执行,而且我不喜欢使用查找和替换,因为我认为重构更安全。 最佳答案 引入一个父类(superclass)publicclassTim

java - 对 javadoc 中方法参数的可重构引用

如何在javadoc中引用方法参数,以便重构引用?例如:publicclassA{privateintfield;/***@paramp*{@link#field}isinitializedusingthevalueofp.*/voidfoo(intp){//...}}如果我重命名上面代码中的参数p,我想要"...usingthevalueofp"相应更改的文本(就像重命名字段会更改{@link#field}一样)。我读了this旧帖子和更多资源,但找不到解决方法。javadoc支持吗? 最佳答案 由于Java删除,方法参数名称是短

java - 这是重构太多了吗?

我尝试重构一段代码,使其使用不同的方法进行一些计算。只是为了说清楚。我想知道的是,写一个单独的方法来找出一个简单的东西,比如一个数字是奇数还是偶数,这是一个好的做法还是一个坏的做法??强>原代码是,intn=11;if(n%2==0){System.out.println("Notselected");}else{booleanisPrime=true;if(n==0||n==1){isPrime=false;}else{inti=2;doublea=Math.sqrt(Math.abs(n));while(i重构后的代码是,intn=11;if(isEven(n)){System.o

数商云:“互联网+”时代,传统批发行业如何重构商业模式

批发业是指批发商向批发、零售单位及其他企业、事业、机关批量销售生活用品和生产资料的活动,以及从事进出口贸易和贸易经纪与代理的活动。目前中国批发市场主要以专业市场为主,而专业批发行业大部分链条冗长,受地理空间限制,对批发商来说其发展受到很大限制,同时对采购商来说线下批发市场进货还需要花费相当多的时间和精力。特别是在如今客流量逐渐减少、商铺租金越来越高、商品信息愈发透明的经营大环境下,批发商户应从传统的经营思想中走出来,利用互联网销售模式,打通供应链上下游,在快速变化的市场中获得更多机会,从根本上摆脱批发市场店铺租金的压力。本文便从四个典型批发行业的发展情况进行简要分析,看企业如何针对行业所遇问题

java - 重构访问遗留系统中存储库的域逻辑

我正在使用具有贫血领域模型的遗留系统。域具有以下实体类:Car、CarType、CarComponent、CarComponentType。对于其中的每一个,都有一个单独的存储库。还有许多服务可以访问这些存储库并包含基本上所有的逻辑。我需要实现一种方法来确定供应商是否可以停产CarComponentType。逻辑如下:只有当今天没有现有汽车使用该组件时,该组件才能停产。最初,我在服务类中实现了它。publicbooleancanBeDiscontinued(CarComponentTypecarComponentType){Listcars=carRepository.getCarsW

java - Java 中不必要的拆箱 - 如何重构代码?

我有以下Java8代码(为演示而简化):publicDoublefooBar(inta){returnDouble.valueOf(a);}现在IntelliJIDEA告诉我在返回语句中有不必要的装箱。如果a是double类型,我会理解这个问题,但是对于int我觉得我需要装箱才能转换为双。是否有重构这段我目前看不到的代码的好方法,或者此时来自IntelliJIDEA的错误消息根本不是最佳的?感谢帮助 最佳答案 如果您使用alt-enter使用建议的分辨率“删除装箱”,结果是这样的:publicDoublefooBar(inta){r