`

神奇的重构技术

 
阅读更多
代码中经常会出现枚举性的变量,比如血型、性别之类。
以血型为例:

 
class Blood  {
public final static  int  o = 0 ;
public final static  int  A = 1 ;
public final static  int  B = 2 ;
public final static  int  AB = 3 ;

private Blood();
} 
 
 
 class person  {
private  int  _blood;
public  void  setBlood( int  b)  {
   _blood = b;
} 
如果要给一个person的实例设置血型,代码如此:person.setBlood(Blood.A);
这个写法的代码中,setBlood的参数为整型,如果如此调用person.setBlood(9);
编译器无法发现错误,只能靠人为控制,如果在方法setBlood中检测参数的有效性,又超越了该方法的职责。

重构后的代码如下:

final class Blood{
public final static Blood O=new Blood(0);
public final static Blood A=new Blood(1);
public final static Blood B=new Blood(2);
public final static Blood AB=new Blood(3);
private int _bloodCode;
private Blood(int b){
    _bloodCode=b;
  }
public int getCode(){
    return _bloodCode;
  }
}

class person{
private Blood _blood;
public setBlood(Blood b){
    _blood=b;
  }
}
如此,(1)隐藏了血型的编码细节
            (2)方便编译期间发现错误
            (3)避免使用超越数据范围的参数

分享到:
评论
1 楼 风清云淡 2008-08-15  
为什么不用枚举呢?

相关推荐

    47.职业院校教学能力大赛计算机专业《神奇的Vlookup函数》教学设计.docx

    《神奇的VLOOKUP函数》教学设计主要针对中职计算机应用基础课程,旨在教授学生如何高效使用Excel中的VLOOKUP函数。VLOOKUP函数在处理大量数据时具有强大的查找和匹配功能,对于会计专业的学生来说尤其重要,因为他们...

    MyQQ(神奇减少代码版)

    在《MyQQ》项目中,通过精简DBHelp类,可能涉及到的技术包括模块化、重构、算法优化以及数据结构的合理运用等。这些方法旨在减少冗余代码,提高代码的可读性和可维护性,从而使得整个项目在短时间内(10天内)得以...

    大型网站复杂业务持续重构之道——全程领域建模实践

    就象大家所听说过的那些神奇小子创业故事一样,几只从大西洋游回的海龟找到了一个伟大的idea——在互联网上开办在线商店销售宠物。幸亏的是他们找到了投资者而且发展的很不错。但是随着时间的推移,当初“完美”的...

    AI讲座:自编码器——神奇的ML瑞士刀.pdf

    在自编码器的训练过程中,模型试图最小化输入数据与重构数据之间的差异,这通常通过均方误差(Mean Squared Error, MSE)或其他相似的损失函数来度量。通过优化网络参数,自编码器可以学习到数据的内在结构和模式,...

    web开发 CSS 揭秘

    在我所知的技术专家中,没人比Lea Verou更能领会新一代CSS的精髓。”——Jeffrey Zeldman,《网站重构》作者 “Lea Verou那渊博的学识是无法复制的,但她在这本书中倾囊相授,令我们都有机会一窥CSS的强大威力与神奇...

    pokeemerald:神奇宝贝翡翠的反编译

    神奇宝贝翡翠是一款经典的Game Boy ...通过这个项目,开发者不仅可以学习到游戏开发的具体技术,还可以了解到逆向工程和软件重构的实践,同时还能为神奇宝贝系列的粉丝带来新的可能性,比如创建MOD或者复刻作品。

    人月神话中文版

    书中的核心观点之一是“没有银弹”(No Silver Bullet),即不存在一种神奇的方法可以显著提升软件开发的效率。布鲁克斯认为,软件开发的复杂性主要源于其本质上的人工特性,而不仅仅是技术问题。因此,解决软件工程...

    《人月神话》 软件人员必读

    他提出,不存在一种神奇的工具、语言或方法,能够显著提升程序员的生产力,解决所有软件工程难题。这个观点提醒我们,软件开发是一个多因素影响的过程,需要综合考虑技术和管理策略。 3. **模块化设计**:书中提倡...

    speech2sing:语音转换成唱歌

    该技术的名称直译为“语音转换成唱歌”,其核心是将普通人的讲话声音转化为美妙的歌声,实现了语音与音乐之间的神奇转化。这一创新技术的出现,不仅为音乐创作带来了新的可能性,也为娱乐、教育、游戏等领域开辟了新...

    Reflector 反编译工具

    《Reflector:深入理解.NET代码的神奇工具》 在.NET开发领域,Reflector是一款不可或缺的神器,它以其强大的反编译功能,为开发者们揭示了原本封闭的类库内部结构和工作原理。本文将深入探讨Reflector的核心特性、...

    国家集训队2017论文集高清.pdf版下载

    本篇论文介绍了关于“基因组重构”的信息学竞赛题目,探讨了生物学数据处理的相关算法和技术。 以上是对《国家集训队2017论文集》部分章节的主要内容概括。每篇论文都针对特定的信息学竞赛问题进行了深入的研究和...

    王者印记.docx

    - 科学家会利用现代技术对化石进行细致的研究,以获取尽可能多的信息,同时也会采取措施保护这些珍贵的化石不被破坏。 总的来说,【王者印记——恐龙化石的形成】不仅展示了自然界的神奇力量,也体现了生物与环境...

    PKSV - Pokemon Script Viewer-开源

    《PKSV:神奇宝贝脚本查看器/编辑器——开源技术探索》 PKSV,全称为Pokemon Script Viewer,是一款专为解析、编辑和重构神奇宝贝Advance ROM中的脚本而设计的工具。它由C语言编写,提供了两种使用模式:图形用户...

    设计模式 GOF 23

    设计模式并不要求使用独特的语言特性,也不采用那些足以使你的朋友或老板大吃一惊的神奇的编程技巧。所有的模式均可以用标准的面向对象语言实现,这也许有时会比特殊的解法多费一些功夫,但是为了增加软件的灵活性...

    设计模式:可复用面向对象软件的基础--详细书签版

     设计模式并不要求使用独特的语言特性,也不采用那些足以使你的朋友或老板大吃一惊的神奇的编程技巧。所有的模式均可以用标准的面向对象语言实现,这也许有时会比特殊的解法多费一些功夫,但是为了增加软件的灵活性...

Global site tag (gtag.js) - Google Analytics