如何简化代码?

Mit*_*nik 3 c# silverlight

我刚刚在C#/ Silverlight中创建了我的第一个主要应用程序.最后,总行数超过12,000行代码.考虑到这是一个php/javascript应用程序的重写,我创建了2年,超过28,000行,我实际上为我的成就感到自豪.

在stackoverflow和其他网站上阅读了很多问题和答案之后,我遵循了许多海报的建议:我创建了一些课程,程序,以及我一年前复制和粘贴的东西; 我创建了逻辑图表以找出复杂的功能; 确保没有疯狂的隐藏字符(使用标签代替空格); 和其他一些事情; 必要时发表评论(我有很多评论).

我的应用程序包含4个水平布局的图块,用户控件加载到每个图块中.您可以随时加载一到四个切片.如果你有一次切片加载,切片占用整个画板...如果你有2个加载,每个占用一半,3个三分之一,4个四分之一.

这些切片中的每一个代表(为了该示例)光控制.每个切片中都有3个滑块控件.现在,当我编写滑块的功能时,我在公共函数内部使用了一个switch/case语句,该语句将在指定的切片/滑块上运行命令.这使得一些重复的代码,但我看不到它,因为每个切片的命名不同.所以我会做slice1.my.commands(); slice2.my.commands(); 等等

我的问题是如何进一步清理我的代码?(可悲的是我无法发布任何代码).有没有办法从我的代码中取消这个重复?

rou*_*tic 11

你需要的是与你的朋友的战略模式的接口.例如:

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();
    }
} 
Run Code Online (Sandbox Code Playgroud)

  • 在我的头顶,没有你不能谷歌自己.但如果你真的想要理解这些东西 - 听起来你已经准备好了 - 那就去购买"Head First Design Patterns":http://oreilly.com/catalog/9780596007126.(ps如何在评论中使用markdown?) (2认同)

Ste*_*ven 7

编写更少的代码不应该是您的目标.最后,所有关于TCO(总体拥有成本).

虽然拥有更少的代码可以提高TCO,但有一个因素会对TCO产生更大的影响:可维护性.您应该编写最易维护的代码.首先阅读罗伯特马丁的清洁代码.

更新:

你也说"我有很多评论".这是您可以改进代码的一个方面.正如您将从Martin的书中学到的那样,好的代码几乎不需要任何评论.马丁说"评论是谎言""应保留用于代码和设计的技术说明".

更新2:

当我添加它时,这是罗伯特·马丁的书中我最喜欢的引用:

  • "一个班级或单元应该只有一个,而且只有一个,改变[单一责任原则]" [第138页]
  • "超过三个[方法论证]是非常值得怀疑的,应该避免偏见." [第288页]
  • "功能的第一个规则是它们应该很小.功能的第二个规则是它们应该小于它." [第34页]
  • "功能几乎不应该是20行" [第34页]
  • "函数中的语句都应该以相同的抽象级别编写" [第304页]
  • "应该保留关于代码和设计的技术说明的评论." [第286页]