草庐IT

重构技巧

全部标签

c# - 重构/移动字符串到 App.Config 键

VisualStudio2013和ReSharper都提供了许多方便的代码重构快捷方式。我常用的一个是ReSharper的“将字符串移动到资源文件”,它将硬编码字符串移动到项目中的*.resx文件中。遗憾的是,ReSharper不提供“App.config”作为要移动到的资源文件列表中的一个选项。有谁知道如何使用VS或ReSharper启用或创建“将字符串移动/转换为App.Config键”重构? 最佳答案 配置管理总是特定于程序,在许多情况下是构建系统。并非所有程序都从应用程序/网络配置中读取海峡。事实上,有时您想要创建一个类或接

c# - 如何组织单元测试而不让重构成为噩梦?

我目前组织单元测试的方式归结为以下几点:每个项目都有自己的单元测试专用项目。对于项目BusinessLayer,有一个BusinessLayer.UnitTests测试项目。对于我要测试的每个类,测试项目中都有一个单独的测试类,位于与被测类完全相同的文件夹结构和完全相同的命名空间中。对于来自命名空间BusinessLayer.Repositories的类CustomerRepository,在命名空间BusinessLayerUnitTests.Repositories中有一个测试类CustomerRepositoryTests>.每个测试类中的方法都遵循简单的命名约定MethodNa

c# - 如何关闭 resharper 中的 "Convert Extension Method to Plain Static"自动重构?

在使用Resharper时,由于某些原因,当我调用扩展方法时,它会自动将其转换为静态方法调用。这就是所谓的ConvertExtensionMethodtoPlainStatic重构。foo.Bar()成为MyStaticExtensions.Bar(foo);具有讽刺意味的是,它随后将此标记为代码异味。我该如何关闭它? 最佳答案 Resharper的IntelliSense中嵌入了此功能。我经常使用Linq-to-sql扩展,所以我禁用了这个功能:Resharper-选项-IntelliSense-启用RadiobuttonVisu

c# - 提高速度的不安全 C# 技巧

我不习惯使用指针(例如C++)或不安全的孤岛进行编码:仅使用“安全”C#。现在我想在C#中为.NetMicroFramework实现一个函数,其中紧凑性和性能非常重要。基本上,我会收集4条短裤,从而填充缓冲区(例如字节数组)。假设每个样本都是这样的:structMyStruct{publicshortAn1;publicshortAn2;publicshortAn3;publicshortAn4;}每个样本都是通过计时器事件收集的,因此我无法循环(有几个原因)。我尝试了很多方法来有效地做到这一点,但表现最好的似乎是这个:unsafestructMyStruct2{publicfixed

c# - 寻找如何重构我的算法的想法

我正在尝试自己编写GameofLife,有我自己的一套规则。我想应用的第一个“概念”是社会化(这基本上意味着细胞是想独处还是想与其他细胞成群结队)。数据结构是二维数组(目前)。为了能够将一个单元格移动到/远离一组其他单元格,我需要确定将它移动到哪里。这个想法是,我评估该区域(邻居)中的所有单元格并获得一个向量,它告诉我将单元格移动到哪里。向量的大小为0或1(不移动或移动),角度为方向数组(上、下、右、左)。这是一张表示细胞受力的图像,就像我想象的那样(但范围可能超过5):让我们以这张照片为例:Forcesfromlowerleftneighbour:down(0),up(2),righ

c# - 在 C# 中重构抽象类

抱歉,如果这听起来很简单,但我正在寻找一些帮助来改进我的代码:)所以我目前有以下实现(我也写过):publicinterfaceIOptimizer{voidOptimize();stringOptimizerName{get;}}publicabstractAbstractOptimizer:IOptimizer{publicvoidOptimize(){//Generalimplementationherewithfewcallstoabstractmethods}}publicabstractAbstractPriorityOptimizer:AbstractOptimizer{

c# - 将库重构为异步,如何避免重蹈覆辙?

我有这样一个方法:publicvoidEncrypt(IFilefile){if(file==null)thrownewArgumentNullException(nameof(file));stringtempFilename=GetFilename(file);using(varstream=newFileStream(tempFilename,FileMode.OpenOrCreate)){this.EncryptToStream(file,stream);file.Write(stream);}File.Delete(tempFilename);}不过,我想写另一个方法,非常相

c# - 重构 if-else if - else

我有以下代码示例if(object.Time>0&&=500&&=1000){rate=1.00m}else{rate=0m;}我的问题是我可以使用什么设计模式来让它变得更好?编辑:为了澄清一点,您在此处看到的代码是当前存在于策略模式实现中的代码。我们有3种计算类型,其中2种具有3种不同的“比率”,可以根据您在下面看到的时间使用这些计算。我考虑过为每个比率创建一个策略实现,但随后我会移动确定要使用的策略的逻辑,并使它变得一团糟。谢谢! 最佳答案 如果您真的在寻找一种设计模式,我会选择责任链模式。基本上您的“链接”会尝试处理输入。如果

c# - 重构静态类以与依赖注入(inject)一起使用

我们需要在具有静态方法的代码中使用非托管库。我想在我的代码中将库操作作为依赖项引入。除了具有静态方法之外,该库还有一个初始化方法和一个设置方法,它们都是全局的。所以我不能只将它包装在一个实例类中,因为如果一个实例更改设置,所有其他实例都会受到影响,如果一个实例被初始化,所有其他实例将被重新初始化。我考虑过将其作为单例类引入。这样它将在一个实例类中,但只有一个实例,因此我不必担心更改设置或初始化。您如何看待这种方法?我对依赖注入(inject)模式还很陌生,我不确定单例模式是否是一个好的解决方案?对于类似的案例,您的解决方案是什么?编辑:初始化也需要一个参数,所以我不能只是锁定方法调用并

电脑技巧:教你关闭Win11内存压缩,解决电脑卡顿的问题

很多朋友都注意到,Win11默认开启了内存压缩功能。内存压缩顾名思义,可以压缩内存中的数据,让内存占用更少,同时减少Swap频次,带来更高的I/O效率。但与此同时,压缩数据需要耗费CPU资源,一些朋友使用的是CPU性能较弱的设备,例如轻薄本,开启内存压缩可能会造成卡顿缓慢。同时,内存压缩需要消耗额外的CPU资源,带来更多耗电发热,这对注重续航的设备来说也是不合适的。实际上,微软在Win10中就已经启用了内存压缩机制,在Win11当中继续了这一设定。那么问题来了,如果你不缺内存,但CPU性能较弱,而且需要更长的续航,要如何关闭内存压缩?一起来看看吧!确认内存压缩的开启状态首先,我们要确认内存压缩