日期:2010-04-13  浏览次数:20576 次

  RssBandit项目中的CollapsibleSplitter作为Splitter控件的改进版,提供了我梦寐以求的功能:可以像Splitter控件一样分割两个相邻控件,允许在运行时调整他们的大小,还提供了单击时最小化指定控件的功能,并在小小的分隔条上画出了相当直观的精细图案。


  这个控件有不太令人满意的地方吗?嗯,有的。它永远只能有8个像素宽(纵向摆放的时候),不能将它设成Splliter默认的4个像素宽,也不能异想天开的将它设成16个像素宽。


  打开CollapsibleSplitter的代码文件——我怎么闻到了一股不太美妙的气味呢?哦,那边Martin Fowler同志说了:这是代码的坏气味,该给它除除臭。


  那么我们就来给它消除异味吧。


  先来看看这个玩意到底有些什么坏气味:


  用了太多的switch、if语句,把面向对象的优点抛到爪哇国去了,看看这些代码吧。这是ToggleSplitter()方法里的代码,这个控件中还有很多这样的代码:

以下为引用的内容:

if(controlToHide.Visible)
{
    
if(useAnimations)