我刚刚用 C#/Silverlight 创建了我的第一个主要应用程序。最后总行数超过 12,000 行代码。考虑到这是对我用 2 年创建的超过 28,000 行的 php/javascript 应用程序的重写,我实际上为自己的成就感到非常自豪。
在 stackoverflow 和其他在线网站上阅读了许多问题和答案后,我听从了很多张贴者的建议:我为一年前复制和粘贴的东西创建了类、过程等;我创建了逻辑图表来找出复杂的功能;确保没有疯狂的隐藏字符(使用制表符而不是空格);和其他一些东西;在必要的地方发表评论(我有很多评论)。
我的应用程序由 4 个水平放置的图 block 组成,每个图 block 都加载了用户控件。您可以随时加载一到四个切片。如果您加载了一次切片,该切片会占据整个画板...如果您加载了 2 个,则每个占据一半,3 个占三分之一,4 个占四分之一。
这些切片中的每一个都代表(为了这个例子)一个灯光控制。每个切片都有 3 个 slider 控件。现在,当我对 slider 的功能进行编码时,我在公共(public)函数内使用了一个 switch/case 语句,该函数将在指定的切片/ slider 上运行命令。这造成了一些重复的代码,但我没有办法解决它,因为每个切片的名称都不同。所以我会做 slice1.my.commands(); slice2.my.commands();等等
我的问题是如何进一步清理我的代码? (遗憾的是我无法发布我的任何代码)。有什么方法可以从我的代码中删除这种重复?
最佳答案
您需要的是与您的 friend Strategy 模式的接口(interface)。例如:
public interface ISlice
{
public Slider Slide {get;set;}
}
public class Slice1 : ISlice
{
public Slider Slide { get; set; }
}
public static class SliceSlider
{
public static void DoSomethingCoolWithTheSliceSlide(ISlice slice)
{
slice.Slide.LookitMeIAmLearningDesignPatterns();
}
}
关于c# - 如何简化我的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2509264/