zoukankan      html  css  js  c++  java
  • ''进位-判断-执行''的通用思想

    进位–判断–执行

    这是我自己发明的一个规范,我觉得很方便实用,特意献给大家XD
    什么意思捏?
    每次写循环的时候,尤其是for循环(不是foreach)时,总是要考虑那个标志变量”i”到底从0开始还是从1开始,每次自增长是在循环前还是循环后,亦或是在中间位置,然后每次判断何时跳出循环的时候也要纠结一会.


    问题就是这个思考的时间我觉得不值,应该像while循环那样直接想出代码.这个问题困到了多时直到java给了我灵感:

    ResultSet.next()

    首先是jdbc中resultset.next()函数,其中的标志变量,也就是上面说到的i,起始位置在第一行记录的前面一个,也就是第0行,每次调用这个函数,标志位进一个整数,然后判断这里行存不存在,如果存在则取出数据.

    BufferedInputStream.readline(byte[])

    然后是这个方法,常用于从字符文件中读取每一行,每次调用这个方法的时候读取的都是上一次读取行的下一行,因为和next()一样,这里也有用于判断的标志位,原理和上面一样.


    所以总结出了这样一个

    进位 – 判断 – 执行

    的三部曲:对于循环的列表,标志位总是从第0个位置开始(这个位置是空的),然后每一次先进标志位,然后对于这个标志位所指向的条目进行判断是否溢出,因为如果这个位置已经超出列表,然后执行的话,很容易出现NullPointerException,或者出现更严重故障,所以先要拿这个标志指针来试探一下这一条是否合适,当然了,不仅是防止循环溢出,还有其他的业务逻辑需要对每一条记录判断类型再作出相应的操作,这样一来,标志位的作用就大了.最后执行相关的业务操作.

    举两个栗子把:

    JSP循环输出表格

    规范的思考模型可以节省你很多时间,输出动态的table关键就是什么时候输出”tr”,有了以上的思维,我们可以给每一个td编号,从1开始递增,假如有5列,就是要在编号1,6,9,14之前和5,10,15,20之后输出tr标签,那么我们标志位i就要从0开始,以此类推,判断输出.

    模拟鼠标点击任务

    有时候我们想完成一些自动化的任务,但一时又找不到能够用于”开挂”的标准库,只能模拟外设操作啦,比如像依次点击windows或unix的资源管理器中的每一个文件,就需要进位判断执行的模型来控制鼠标的坐标,如果点错了位置后果可就难说了.

    真的是不够聪明,才需要这种小技巧来提高效率…

  • 相关阅读:
    Maximum sum
    走出迷宫
    取石子游戏
    全排列
    BZOJ3456 城市规划
    【SHOI2016】黑暗前的幻想乡
    【AHOI2012】信号塔
    HDU5730 Shell Necklace
    线性常系数齐次递推关系学习笔记
    矩阵树定理学习笔记
  • 原文地址:https://www.cnblogs.com/jinhengyu/p/10257813.html
Copyright © 2011-2022 走看看