WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十二)重构 – 让代码插上翅膀自由飞翔

 2010-09-30 20:49:35 来源:WEB开发网   
核心提示:上一节,我将游戏地图模式进行了一次重大的变动,C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十二)重构 – 让代码插上翅膀自由飞翔,这在实际开发中意味着项目大规模重置,虽然表面上显得游刃有余,你是否曾想过如此类似的代码一旦多起来,除了你,仅仅一个AllMove()方法的改变即实

上一节,我将游戏地图模式进行了一次重大的变动,这在实际开发中意味着项目大规模重置,虽然表面上显得游刃有余,仅仅一个AllMove()方法的改变即实现了完美转型,这全得归功于前20节所搭建起的相对高度可扩展平台。但是,随着开发不断深入,我慢慢的感到些许的不安,因为代码上的日益松散与结构的渐渐稀疏如同Windows系统的磁盘碎片与日俱增,未来维护时的烦琐与痛心疾首已历历在目。代码向我发出了求救信号,用什么来拯救你-我的代码?是时候亮剑了 –- 我的第一次亲密重构。

下面我将分几点对上一节中的代码进行重构:

一、统一化代码格式,让代码可读性发挥到极至:

我以上一节中创建地图地表层的代码为例:

        private void InitMapSurface() {
            MapSurface.Width = 1750;
            MapSurface.Height = 1440;
            MapSurface.Source = BitmapFrame.Create((new Uri(@http://tech.ddvip.com/2009-07/"Map.jpg", UriKind.Relative)));
            Carrier.Children.Add(MapSurface);
            Canvas.SetLeft(MapSurface, -320);
            Canvas.SetTop(MapSurface, -200);
            MapSurface.SetValue(Canvas.ZIndexProperty, -1);
    }

大家先看InitMap()方法中的前3行代码,它们均以MapSurface打头进行赋值书写;接着看倒数2、3行,却又是以Canvas.Set…()模式来设置MapSurface的属性;更可怕的是最后一行,明明可以写成Canvas.SetZIndex(…)的形式,好歹也与它前面两行凑合凑合,可是这个作者赶着写项目,五花八门的写法都出来了。尽管,这达到实现功能的要求;可是仅仅不上十行的代码可读性已达到了“神出鬼没”的地步,你是否曾想过如此类似的代码一旦多起来,除了你,还有谁能进行维护?上帝知道。

1 2 3 4 5 6  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接