如何设计循环避免代码重复,提高代码复用性

循环和数组的搭配使用(提高代码复用性,且适用于动态变化)

提高代码复用性为维护性的方法有很多,比如继承,构造代码块,循环等等,本文讲的是循环。

当有很多类似的东西时,往往导致代码重复,量大,这时要想到用设计循环的方法来减少重复的代码。
为了成功地设计循环,往往需要用到数组。

例如:
    要实例化1000个button,每个button上写着不同的字符串,不用循环就会很多重复代码,而且写起来很费时。
    JButton bt1 = new JButton("开锁");
    JButton bt2 = new JButton("闭锁");
    JButton bt3 = new JButton("全锁");
    .....
这样要写1000行才能写完,非常费时和麻烦,所以要设计循环来解决这个麻烦:
    for(int i=0;i<1000;i++) {
 JButton ### = new JButton(***);//在设计循环时,这里又遇到一个问题,这里只能写1次###,只能写1次***,而有1000个button,需要1000个按钮名和1000个字符串,那么###处该写哪个按钮名呢?***处该写哪个字符串呢?似乎写哪个都不行。。。
        //思路是:把###和***处填的东西设计成与计数器i有关,这样,每次循环的###和***不再是同一个不变的东西。
        //所以,用数组。数组里刚好下标可以写成i
    }
设计成数组,再设计循环:
    JButton [] bt = new JButton[1000];
    String [] str = {"开锁","闭锁","全锁","半锁","内开","外开","回拉"........}//这里字符串的个数和内容都是根据实际的需要来写,实际有1000个不同的没规律的字符串,就要一个一个写1000个字符串。
    for(int i=0;i<1000;i++) {
 JButton bt[i] = new JButton(str[i]);
    }
这样JButton bt1 = new JButton这个代码就只写了1次,不像之前那样写1000次了。
这就是设计循环,并且设计数组,的好处。
我们发现,这里还有可以改进的地方:我们发现,数组bt和数组str的长度必然是相等的,而上面的代码中数组str静态初始化,数组bt动态初始化指定1000,为了与str长度相等,就得认真数str中有多少个元素,数出来1000个,那么bt指定1000,但是,这么多个,万一输错了呢?并且数这件事也很费时和麻烦。。
改进:bt不要指定为1000,而是指定为str.length(length是java中的所有数组自带的属性),即:
    JButton [] bt = new JButton[str.length];
由此导致,下面的循环中的判断条件中也不是写1000了,而是应该写str.length或bt.length:
    for(int i=0;i<bt.length;i++) {
 JButton bt[i] = new JButton(str[i]);
    }
这也非常适用于需要经常需要动态地修改的情况,比如,过几天客户要求再添加一个上面写着“开锁123”的按钮,那么只需要在数组str中多写一个“开锁123”即可,其他所有的地方都不用改动,这就是适用于动态变化。

 

再例如:
    要向一个panel中添加1000个button,不用循环就会很多重复代码,而且写起来很费时。
    this.add(bt1);
    this.add(bt2);
    this.add(bt3);
    .....
这样要写1000行才能写完,非常费时和麻烦,所以要设计循环来解决这个麻烦:
    for(int i=0;i<1000;i++) {
 this.add(???);//在设计循环时,这里又遇到一个问题,这里只有1个add(???),而有1000按钮需要add,且每个按钮的名字不同,那么???处该写哪个按钮的名字呢?似乎写哪个都不行。。。
        //思路是:把???处填的东西设计成与计数器i有关,这样,每次循环的???不再是同一个不变的东西。
        //所以,用数组。数组里刚好下标可以写成i
    }
设计成数组,再设计循环:
    JButton [] bt = new JButton[1000];
    for(int i=0;i<1000;i++) {
 this.add(bt[i]);
    }
改进:
    JButton [] bt = new JButton[str.length];
    for(int i=0;i<str.length;i++) {
 this.add(bt[i]);
    }
这也非常适用于需要经常需要动态地修改的情况,比如,过几天客户要求再添加一个上面写着“开锁123”的按钮,那么只需要在数组str中多写一个“开锁123”即可,其他所有的地方都不用改动,这就是适用于动态变化。


总结:在有很多类似的东西时,往往导致代码重复,量大,这是要想到设计数组和循环来解决这个问题。
      对于需要经常动态变化和修改的情况,也要想到设计数组和循环,并且想到使用属性:数组名.length
PS:java中的数组要么动态初始化,要么静态初始化,要么不初始化,不可以混用,这点要注意。其他java数组的用法(比如多维数组)详见笔记。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值