• 参数列表vs结构 CQ


    在给函数传值的时候,我们可以通过参数列表的方式,也可以通过定义一个结构的方式。在最近的工作中,我认为前一种方式更好。
    例如以下代码:

    //通过参数列表传递值
    public void Create(long param1, long param2,long param3)
    {
       ..
    }


    //通过结构传递值
    public sealed class ClassOjbect
    {
       
    public long param1;
       
    public long param2;
       
    public long param3;
    }

    public void Create(ClassObject obj)
    {
       ..
    }

    在第一种方法中,如果我们在参数列表中增加一个参数,那么我们就要修改项目中的其它很多地方,因为它是一个公有方法,立即编译,立即报错。
    在第二种方法中,如果我们在ClassObject中增加一个参数,那么我们似乎不需要修改什么地方,因为参数只是对ClassObject的地址进行引用,而不是里面的成员变量,所以在编译时,几乎不会出现什么错误。
    从表面上看,第二种方法更好一些,因为对系统作出修改后,系统本身没有什么不良反应。但是第二中方法却给bug的产生带来了可能。
    因为Create是一个公有方法,对它的调用带有全局性,我们必须能够保证所有调用Create方法的函数都能够为Create新增的参数赋值。而第二种方法不能够给于这种保证,因为系统没有什么反应,我们必须通过查找的方式来找到所有调用Create的地方,然后给ClassObject对象的新增成员变量赋值。
    而第一种方法却能够很好地解决这个问题,因为我们可以通过系统编译时产生的错误信息,准确地找到调用Create的地方。
    虽然第一种方法的改动很大,并且可能影响到其它的模块,但是它让所有的改动都被挡在了编译阶段。我想谁都不会希望由于改动系统中的某个地方而引入新的bug吧。

    但是话又要说两头,第二种方法还是有用武之地的。但是这个话题就到此为止了,希望各位同行也说说自己的看法。
  • 相关阅读:
    TabActivity 、fragemnt+fragment 和 Fragment+Viewpager 优缺点
    Android App的签名打包(晋级篇)
    Android ProgressBar 进度条荧光效果
    Android UI【android 仿微信、QQ聊天,带表情,可翻页,带翻页拖动缓冲】
    Android UI--自定义ListView(实现下拉刷新+加载更多)
    Android平台下利用zxing实现二维码开发
    自定义组件---图片和文字实现ImageButton效果
    JNI由浅入深_10_JNI 综合开发
    开关按钮实现
    Android Asynctask与Handler的比较,优缺点区别,Asynctask源码
  • 原文地址:https://www.cnblogs.com/czy/p/778787.html
Copyright © 2020-2023  润新知