正确的使用语句块
来源:互联网 发布:spss数据分析教程视频 编辑:程序博客网 时间:2024/05/22 03:38
犹记得在初看C,C++和Java的编程书籍时,上面就有介绍语句块,但当时甚是不理解什么是语句块。《代码大全》中也有讲说要把相似功能的语句组织到一起形成语句块,然后与其他语句块用空行分隔。但这只是在人的理解上的语句块,并非是真的程序语言意义上的语句块。
程序上的定义,在我的理解来看应该是有着相同的变量作用域的相关一组语句的集合,看起来就是应该用{}括起来的,比如控制结构中的逻辑。我认为最关键的一点就是变量作用域,也就是说,如果能用同一个局部变量,那么就是程序意义上的语句块。来看个例子:
对于第二个case语句,仍可以使用前面case所定义的变量,所以整个switch() {}内都是一个语句块。
但如果给每个case语句加上语句块标志,就不一样了:
加上了{}就把二个case语句分隔了开来,形成了二个语句块,它们有各自的变量作用域,互不影响,即使用名字相同,或再次定义也无妨。
说明这些的目的就在于,要尽可能多的使用{}以形成真正的语句块,最大的好处在于它能形成变量作用域,避免变量的作用域过大,即提高了可读性,也减少了出错的可能。
程序上的定义,在我的理解来看应该是有着相同的变量作用域的相关一组语句的集合,看起来就是应该用{}括起来的,比如控制结构中的逻辑。我认为最关键的一点就是变量作用域,也就是说,如果能用同一个局部变量,那么就是程序意义上的语句块。来看个例子:
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case MENU_GOTO_FILEANT:
- Intent i = new Intent();
- i.setClass(this, FileAntActivity.class);
- startActivity(i);
- break;
- case MENU_TEST_LINEARLAYOUT:
- i.setClass(this, LinearLayoutTest.class);
- startActivity(i);
- break;
- default:
- break;
- }
- return true;
- }
但如果给每个case语句加上语句块标志,就不一样了:
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case MENU_GOTO_FILEANT: {
- Intent i = new Intent();
- i.setClass(this, FileAntActivity.class);
- startActivity(i);
- break;
- }
- case MENU_TEST_LINEARLAYOUT: {
- Intent i = new Intent();
- i.setClass(this, LinearLayoutTest.class);
- startActivity(i);
- break;
- }
- default:
- break;
- }
- return true;
- }
说明这些的目的就在于,要尽可能多的使用{}以形成真正的语句块,最大的好处在于它能形成变量作用域,避免变量的作用域过大,即提高了可读性,也减少了出错的可能。
- 正确的使用语句块
- 正确的使用语句块
- 正确使用Java的foreach语句
- 正确使用goto语句
- 正确使用join语句
- Verilog的块语句
- 语句块的执行
- Java的语句块
- mysql delete语句,表别名的正确使用
- if 语句不使用代码块引起的问题
- if 语句不使用代码块引起的问题
- Finally语句块的执行
- Oracle语句块的写法
- finally语句块的作用
- java的static语句块,普通语句块,构造函数
- C#使用参数化和块语句来提高批处理SQL语句的执行效率
- 使用参数化和块语句来提高批处理SQL语句的执行效率
- 2.2使用synchronized同步语句块
- 判断文件夹下面是否还有文件(递归方式)
- 登录之验证码
- 针对中国加速增长的移动设备市场推出全新组合芯片
- opnet仿真问题总结
- [Android实例] eoe & 友盟教程大赛【ToggleButton使用教程】
- 正确的使用语句块
- dom4j通过xpath查询xml
- poj3352 - Road Construction
- Dom Ready和Dom Load
- iOS应用程序内存调试的代码
- fcntl即F_SETFL,F_GETFL的使用,设置文件的flags
- objectAtIndex返回的是指针,对其进行修改会影响集合中的元素
- ms sql server sql 查询所有数据库、表名、表字段总结
- android系统横竖屏切换问题