草庐IT

java - 重构自动检测文件的编码

我需要检查编码文件。这段代码有效,但有点长。如何能够对这种逻辑进行任何重构。也许可以为此目标使用其他变体?代码:classCharsetDetectorimplementsChecker{CharsetdetectCharset(FilecurrentFile,String[]charsets){Charsetcharset=null;for(StringcharsetName:charsets){charset=detectCharset(currentFile,Charset.forName(charsetName));if(charset!=null){break;}}retur

java - 重构用于测试的静态方法/静态字段

我有以下遗留代码:publicclassMyLegacyClass{privatestaticfinalStringjndiName="java:comp/env/jdbc/LegacyDataSource"publicstaticSomeLegacyClassdoSomeLegacyStuff(SomeOtherLegacyClasslegacyObj){//dostuffusingjndiName}}此类在J2EE容器中工作。现在我想在容器外测试这个类。什么是最好的策略?基本上允许重构。允许访问LegacyDataSource(测试不必是“纯”单元测试)。编辑:不允许引入额外的运行

当AI开始重构交互体验,众趣科技在思考什么?

《巴黎:现代城市的文明》一书中,真实记录了巴黎如何一步步从边陲小镇变为现代城市。当时巴黎当地的周刊称“我们活在一个发明层出不穷的世纪”。而几百年后的我们,也正处于这样一个世纪。2023年,伴随着生成式AI的爆发,AI大模型正以前所未有的速度重塑世界。2024开年,OpenAI发布的AI视频生成工具产品Sora,再次引发全球热议和关注。另外,据Gartner预测,到2026年超过80%的企业将使用生成式AI的API或模型,或在生产环境中部署支持生成式AI的应用。不可否认,AI正成为各大行业、各大公司争相追赶的“课题”,亦是继移动互联网革命之后的又一波创新浪潮。1、AI正在重构新的交互体验伴随着生

java - 有没有办法在 gradle 中进行源到源的 java 重构?

我得到了一些自动生成的Java代码。我愿意在编译前自动重构。它主要是类重命名和包修改。是否有任何可用的gradle或ant任务? 最佳答案 IgotsomeautomaticallygeneratedjavacodeIwouldliketoautomaticalyrefactorbeforecompilingit.Itismostlyclassrenameandpackagemodification.[题外话:你应该修复生成代码的代码。自动生成代码然后使用其他工具修改它看起来不像是正确的方法。]Eclipse提供refactorin

java - 如何更好地重构可以在 java 中返回 null 的方法链?

我有这样的代码:obj1=SomeObject.method1();if(obj1!=null){obj2=obj1.method2();if(obj2!=null){obj3=obj2.method3();if(obj3!=null){............returnobjN.methodM();}}}....我有将近10步。它看起来非常脆弱且容易出错。有没有更好的方法来检查空链方法?谢谢。 最佳答案 您可以使用java.util.Optional.map(..)链接这些检查:returnOptional.ofNullable

java - 使用相同代码但类型不同的重构方法

我有几个方法做同样的事情,当与MySQL数据库交互时,保存或加载不同类型的参数。目前,我对每种类型都有不同的方法。我如何组合这些方法以便它们支持不同的类型?下面是两个非常相似但使用不同类型的方法的示例:publicstaticvoidsaveLongArray(Connectioncon,intplayerID,StringtableName,StringfieldName,long[]array,long[]originalArray){try{for(inti=0;i请注意,在该示例中,类型都是数字。如果类型完全不同(例如int和String),我该怎么做才能避免使用几乎重复的方法

java - 重构使用流 API 的方法

我目前被告知要计算在某些服务器上挂起的所有.sql文件。手动解决这个非常基本的任务不是一种选择,相反,我编写了一些代码来使用SimpleFileVisitor并将找到的所有sql文件及其父路径存储在Map>中.现在我想接收找到的与其位置无关的sql文件总数。我让它与增强的for一起工作循环(几乎是经典方式):publicintgetTotalAmountOfSqlFiles(Map>sqlFilesInDirectories){inttotalAmount=0;for(Pathdirectory:sqlFilesInDirectories.keySet()){ListsqlFiles=

真香定律!我用这种模式重构了第三方登录

老猫的设计模式专栏已经偷偷发车了。不甘愿做crudboy?看了好几遍的设计模式还记不住?那就不要刻意记了,跟上老猫的步伐,在一个个有趣的职场故事中领悟设计模式的精髓吧。还等什么?赶紧上车吧。一、故事办公室里,小猫托着腮帮对着电脑陷入了思考。就在刚刚,他接到了领导指派的一个任务,业务调整,登录方式要进行拓展。例如需要接入第三方的微信登录,企业微信授权登录等等。原因大概是这样,现在大环境不好,原来面向B端企业员工的电商业务并不好做,新客拓展比较困难,业务想要有更好的起色着实比较困难,所以决策层决定要把登录的口子放开,原来支持手机密码登录以及手机验证码进行登录,现在为了更好地推广,需要支持微信扫码关

java - 用 java lambdas 重构一个 switch case

我正在尝试重构遗留代码,在这种情况下,我有一大块switchcase来决定要执行的命令switch(operation)caseaddition:returnadd(inta,Stringb,Stringc);casemultiply:returnmultiply(inta,intb);casesubstract:returnsubstract(inta,intb);方法1:使用多态性publicinterfaceOperation{voidperformOperation(inta,intb);}然后用可用的实现填充映射:Mapactions=newHashMap();actions

java - 如何重构 XSD 以便解码不返回 JAXBElement

我有以下架构:@javax.xml.bind.annotation.XmlRootElement(name="unit")当我解码这个XML时Name返回的对象是javax.xml.bind.JAXBElement,但是我想得到org.foo.bar.Unit背部。我需要这个,因为在我的案例中,解码是由JAX-RS提供程序或SpringWeb隐式发生的。观察:如果我删除/替换声明,JAXB开始返回org.foo.bar.Unit.如果我删除声明,JAXB开始返回org.foo.bar.Unit(尽管需要在解码期间禁用验证)。因此我会说给定的XSD是证明问题的最小XSD。问题:为什么JA