草庐IT

c++ - 如何重构具有相同行的函数,唯一不同的是一个函数调用?

考虑以下代码片段templatevoidMyDynamicArray::resize(size_tcount){size_tprev_count=Count();if(countprev_count){Reserve(count);for(size_ti=prev_count;i这里是同一个函数的重载templatevoidMyDynamicArray::resize(constT&object,size_tcount){size_tprev_count=Count();if(countprev_count){Reserve(count);for(size_ti=prev_count;

c++ - 将继承重构为组合,在 C++ 中保持多态能力

我将来可能会遇到问题,我希望今天能做好充分的准备。该问题涉及C++上下文中的继承、多态性和组合。我们如何将“继承代码重用”重构为组合,并且仍然能够保持多态方法?我在这里寻找的是关于这个问题的更多“实践”指导。我提供了一个非常简化的示例来向您展示,我相信您将能够阅读它并将其提炼成我需要的答案。classMultilingual_entity{public:enumclasst_languages{LAN_ENGLISH,LAN_RUSSIAN,LAN_CHINESE};private:std::maptexts;public:std::stringset_text(t_languaget

c++ - 重构 3 个循环类

我做了很大的修改,试图阐明我正在寻求什么帮助,并尝试使问题适合StackOverflow。一般问题:我有一个现有的库类,它允许我查询服务器以获取信息。该库类被大量遗留软件广泛使用,因此我可以对其进行的更改有些受限。同样,以更好的方式重新实现它可能不值得花时间。具体问题:我在下面使用3个类创建了我的方法的简化“玩具”模型。实际情况要复杂得多,因为存在多态变体、更多功能、错误处理等。在下面包含的“玩具”模型代码中,Gateway是现有的库类。我试图展示我想如何使用它,包括一个结果集和一种访问该结果集每个成员的方法。这个想法类似于一个实现良好的数据库API的外观,带有语句、结果和行——除了在

当其他属性在ASP.NET MVC Razor中相同时,重构循环合并一个属性

我有一个数据集,该数据集目前会产生一个输出,如下所示:代码:第1部分:视图-@foreach(vardtinModel.PlaceList){@dt.PlaceName@dt.OpenTimings@dt.Slot@dt.ActivityName@dt.Address}第2部分:从数据库检索数据vargPlaceList=(fromlin_appdb.GetPlaceDetailsselectnewGetListPlaces{PlaceName=l.PlaceName,OpenTimings=l.OpenTimings,Slot=l.Slot,Activity=l.Activity,Addre

c++ - 生成用于大规模重构/重命名的 C++ 符号列表

背景我继承了一个遗留的60klocg++项目,我想重构它以在整个项目中强制执行一致的命名约定。问题是否有免费/开源的静态分析工具可以生成以下列表:全局符号类名成员方法(公共(public)/protected/私有(private),如果可能)成员变量静态方法本地符号(可能会忽略这些)我可能遗漏的任何其他符号,但可能会影响代码的阅读者方法我的意图是使用vim来编辑生成的符号列表,然后使用Ruby脚本对符号进行非常粗略的搜索和替换/映射,这样至少命名约定是一致的。这个过程有点难看,我预计初始编译会失败,但如果我能有一组更具可读性的代码,我不介意手动解决问题。大型C++代码库的开发人员使用

Scala光滑乘以过滤器取决于条件。重构

全部。这是我的代码-defsearchGames(location:Location,results:List[TournamentResult],roles:List[Role],player:String,players:List[String],startPl:Int=6,endPl:Int=30,startR:Int=1,endR:Int=1000,sy:Int=2012,ey:Int=2017,sm:Int=0,em:Int=12,sd:Int=0,ed:Int=32)={valfiltered2=if(location!=Location.SUMRAK)games.filter(_

如何进行Python代码的代码重构和优化?

Python是一种高级编程语言,它具有简洁、易于理解和易于维护的特点。然而,代码重构和优化对于保持代码质量和性能至关重要。什么是代码重构?代码重构是指在不改变代码外部行为的情况下,通过修改代码内部结构来提高代码的可读性、可维护性和可扩展性。代码重构可以帮助您减少代码冗余、改善代码结构、提高代码可读性和可维护性。代码重构的步骤:1.确认目标:您需要确定代码重构的目标并制定计划。2.分析代码:分析代码的功能和结构,找出可能存在的问题。3.重构代码:根据目标和分析结果重构代码。4.测试代码:确保重构后的代码没有引入新的问题。什么是代码优化?代码优化是指通过修改代码结构或算法,以提高代码性能、可伸缩性

c++ - 是否可以在不完全重构的情况下在现有 C++ 程序中使用(某些)AOP 概念?

我正在阅读有关AOP的文章,并希望在我的代码中使用(一些)AOP思想和方法。我没有任何第三方扩展,只有MSVS2005环境。那么,是否有可能在我的日常工作中受益于AOP概念而无需完全重构现有代码(2年项目x5名程序员)? 最佳答案 您可以使用AspectC++编译器扩展而无需更改大部分代码。请参阅AspectC++和tutorial 关于c++-是否可以在不完全重构的情况下在现有C++程序中使用(某些)AOP概念?,我们在StackOverflow上找到一个类似的问题:

c++ - 重构单例/全局以使用依赖注入(inject)进行单元测试

我正在开发一个大型代码库,该代码库广泛使用了单例模式以及一些全局模式。我刚刚开始尝试编写一些单元测试,但是单例和全局给我带来了很多问题,在阅读之后,依赖注入(inject)似乎是可行的方法。进行此更改的重构任务非常艰巨,我正在努力找出最佳方法。据我所知,基本的想法是采取这样的事情:foo(){GraphicsCache::Instance()->GetMyImage();//dostuff}然后把它变成这样:foo(GraphicsCache*Cache){Cache->GetMyImage();//dostuff}这样我就可以模拟这些对象并在我的测试中使用这些模拟。但是有很多这些类型

c++ - 在 C++ 遗留应用程序中重构上帝类的过程或步骤?

此应用程序是由以前的开发人员在不了解任何设计原则(SOLID)的情况下编写的。该应用程序最关键的问题是它具有带有大量switch语句的神类。这种不明智的结构使得应用程序难以维护。当然,根本就没有单元测试。首先在switch语句上,我发现有两个主要的潜在类因应用程序而异。所以我会尝试先构建这两个类,然后将相应的代码移动到神类中的类中。这是正确的方法吗?什么是解决这个问题的好方法?BYW,我有一本书“有效地使用遗留代码”。所以你可以建议我也必须阅读这本书的哪一部分:-) 最佳答案 Whatisagoodprocesstoattackth