程序中,变量活动范围有:方法/函数(局部)里的,成员变量(全局变量)

当一个变量从局部变量升级到全局变量,该变量可以跨方法使用,因此在一个方法里对该变量赋值,在另一个方法里就能马上感知到并获取变量的值,体现着监听设计思想。

变量升级,并不是都带来了好的方面。一个变量升级后,就要求程序员考虑是否需要对这个变量进行维护。(所谓维护就是该变量是否处在一个循环中)如果需要维护,即变量处在循环中,则要考虑是否需要对该变量进行初始化和善后处理(因为全局变量是和其他变量或方法相互联系的)如果需要,则进一步考虑变量在循环中从0次,到1次,到2次的变化过程,并从这三次变化过程中提取规律。如果获取规律?程序员的经验以及一些更底层的规律。

把一个变量从局部编程全局的途径有如下方法:

1)利用java语言的特性,从方法变量编程成员变量

2)java语言特性,编程静态变量

3)通过单例,存储在手机内存中

4)放在Application中(严格说,这种方法其实也属于3)中的单例法)

5)存储在本地,需要用到的时候,再从本地获取。比如SharedPeference,IO流写入和读取。

以便变量从全局变量降级成局部变量,带来的好处就是降低了变量维护难度。只需要在该方法作用范围内考虑,同时对变量个体而言,作用范围的缩小,自然增加了变量作用的安全性。

由此,还可以推广到逻辑思考切入点事宜。

一个问题,肯定是处在特定的范围或事件中的。澄清前提,划清界限很有必要。解决一个问题,修复一个bug,首先需要把这个bug产生的起始点找到,这个起始点有时候是浮动的,可以往前多些,也可以往后移些。找到bug的起始点后,还要清楚这个bug的结束点。在这起始点和结束点之间的这一段范围里,我们去修改这个bug。为了定位bug,有时候当第一直觉和感知还无法定位bug的时候,就需要对这一段范围进行切割分段。如何切割?切割的依据是什么?这里涉及到责任链,可以选取一个范围大小的责任链作为参考进行分割,其实也即是业务逻辑功能模块来分割。然后定位到某一段时,再次分割。

这种循序渐进的方式,带来了逻辑的严密,bug就不容易被我们漏过。面对问题,只要有严密的思路和逻辑对bug和问题进行分解、拆分,加上有效时间的累积实践和反馈,就一定能找到解决和修复的方法。

Java中对变量范围转换引发的思考相关推荐

  1. java中把map转换成list

    private String key;     private String value;          //把map转换成list的公共方法     public static List map ...

  2. Java中两数交换引发的值传递问题及解决方案

    Java中两数交换引发的值传递问题及解决方案 今天导师分享了一个有趣的代码,记录一下,让我们一起看看~ //交换两个整数 private static void swap(int i, int j) ...

  3. java 父类强制转换为子类_[java]Java中父类强制转换成子类的原则

    Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用. 例: public class Test { public static void main(Str ...

  4. java中文转简拼_如何将java中的汉字转换成简拼

    有不少小伙伴们在使用java的时候会在想如何将java中的汉字转换成简拼呢?其实将java中的汉字转换成简拼是一件很简单的事情,那么下面我们就和爱站小编一起去学习学习吧. public static ...

  5. java中带符号十六进制转换成十进制详解

    java中带符号十六进制转换成十进制详解 代码如下 代码如下 必须拿ffff进行测试,否则测不出异同 public void test1(){String strHex="ffff" ...

  6. java整数能强转转字符,Java中数据类型默认转换和强制类型转换

    默认转换: a:由低到高一次为:(byte   short    char  )---int ---long ---float --- double b:注意:byte   short    char ...

  7. java中的缩小_在Java中,加宽转换(隐式)和缩小转换(显式)之间有什么区别?...

    Java中的类型转换用于将一种类型的对象或变量转换为另一种类型.当我们将一种数据类型转换或分配给另一种数据类型时,它们可能不兼容.如果合适的话,它将顺利进行,否则会丢失数据. Java中的类型转换类型 ...

  8. Java中由substring方法引发的内存泄漏

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 在Java中我们无须关心内存的释放,J ...

  9. Java中的XSL转换:一种简单的方法

    XSL转换 (XSLT)是将一个XML文档转换为另一个XML文档的强大机制. 但是,在Java中,XML操作相当冗长和复杂. 即使是简单的XSL转换,也必须编写几十行代码-如果需要适当的异常处理和日志 ...

最新文章

  1. 美卫星拍最详细3D地图 覆盖地球99%大陆
  2. c#学习之基础篇(filter 筛选器)
  3. Matrix 矩阵
  4. Yii AR Model 查询
  5. 手把手教你Tomcat配置环境变量以及验证方法
  6. 【计算机网络】——流量控制与可靠传输机制
  7. 数据结构(十六)多源最短路径
  8. Android中插件开发篇之----类加载器
  9. 周报_2013第02周(2013/01/06-2013/01/12)
  10. Vivado ROM IP核
  11. java 正则表达式匹配冒号_用于匹配与冒号连接的单词对的正则表达式
  12. 二十一世纪大学英语读写教程(第二册)学习笔记(原文)——5 - Holding Onto a Dream(坚持梦想)
  13. 15个免费好用的抓包工具
  14. iOS系统语音播报文字
  15. 东莞比较好的java培训学校,先收藏了
  16. 解决Windows server 2003不认U盘
  17. sudo进入root权限时,sudo :unable to resolve host me(此为你的Linux登录用户名): Connection timed out.
  18. 蓝屏代码WHEA_UNCORRECTABLE_ERROR,一次蓝屏但是没有dump日志的一次维修电脑经历
  19. [慈溪2012]书架(bookshelf)
  20. 普林斯顿微积分读本篇九:指数函数和对数函数

热门文章

  1. 项目工作日志20190702
  2. 虚拟机启功失败解决方法
  3. matlab用i3怎么,i3处理器-matalb速度差不多10倍DSP-C语言
  4. ajax 实现总价刷新,jQuery实现购物车的总价计算和总价传值功能
  5. 手把手教你写B端产品PRD
  6. Android查看布局层级
  7. C++ 获取可变模板参数类型
  8. 百度2016校园招聘-开发测试工程师-在线编程题1-商队运输费
  9. 给定经纬度计算距离_根据经纬度计算地球上两点之间的距离js实现代码
  10. python 学习 制作英文学习字典 DAY23