''进位-判断-执行''的通用思想

进位–判断–执行

这是我自己发明的一个规范,我觉得很方便实用,特意献给大家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的资源管理器中的每一个文件,就需要进位判断执行的模型来控制鼠标的坐标,如果点错了位置后果可就难说了.

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

posted @ 2018-02-04 17:14  xosg  阅读(208)  评论(0编辑  收藏  举报