用goto是一个个人爱好的问题。“我”的意见是,十个goto中有九个可以用相应的结构化结构来替换。在那些简单情形下,你可以完全替换掉goto,在复杂的情况下,十个中也有九个可以不用;你可以把部分代码写成一个小的子程序调用;用嵌套的if语句;用状态变量代替;或者重新设计控制条件的结构。消除goto是很难的,但它却是很好的脑力活动。

如果100个用goto的情形中有一个靠goto很好地解决问题的方法,这时你要把它用的好些。只要问题能够解决,我们是不约束用不用goto的,当时应当注意,最好还是少用或者是不用goto语句编程。

下面对用goto的方法做一些总结:

  1. 若语言不支持结构化语句,那就用goto去模仿结构化控制结构,但一定要写的正确。不要把goto灵活性用的出了格;
  2. 能用结构化的地方尽量不用goto;
  3. 评价goto的性能的方法是看其是否提高效率,在多数情况下,你可以把goto替换而增加可读性且不失效率。在少数例外情况下,用goto确实有效且不能用别的方法来代替;
  4. 每个程序之多使用一个goto语句,除非你是用它来模仿结构化的结构;
  5. 使用goto语句转向循环面前而不要往后转移,除非是在模仿结构化结构中;
  6. 保证goto转向的语句标号都要用上,若没有用到的,则表明除了部分代码外,或该转向那部分代码没有标上标号。所有给出的标号都要用上,若没有用上,就去掉;
  7. 应保证goto语句不会产生执行不到的代码;
  8. 用不用goto应全面考虑,程序员对用不用goto考虑后,选择了goto,那么这个goto可能是好的选择;
  参考资料:《代码大全》

在程序中,你敢怎样使用“goto”语句!的更多相关文章

  1. c#程序中使用"like“查询access数据库语句的问题

    在写使用access数据库的c#程序过程中,遇到各种莫名奇妙的问题.例如使用"like"进行模糊查询,在access查询视图中要使用"*"做模糊匹配(sql中是 ...

  2. 程序中使用事务来管理sql语句的执行,执行失败时,可以达到回滚的要求。

    1.设置使用事务的SQL执行语句 /// <summary> /// 使用有事务的SQL语句 /// </summary> /// <param name="s ...

  3. java中goto语句

    goto是java中一个保留字,但在语言中并未使用它. goto语句起源于汇编语言的程序控制,是源码级上的跳跃,这使其招致了不好的声誉,若一个程序总是从一个地方跳转到另一个地方, 还有什么办法能识别程 ...

  4. 通过goto语句学习if...else、switch语句并简单优化

    goto语句在C语言中实现的就是无条件跳转,第二章一上来就介绍goto语句就是要通过goto语句来更加清楚直观的了解控制结构. 我理解的goto语句其实跟switch语句有相似之处,都是进行跳转.不同 ...

  5. Go 语言 goto 语句

    Go 语言的 goto 语句可以无条件地转移到过程中指定的行. goto语句通常与条件语句配合使用.可用来实现条件转移, 构成循环,跳出循环体等功能. 但是,在结构化程序设计中一般不主张使用goto语 ...

  6. C语言 goto语句

    /* goto语句 */ #include <stdio.h> #include <stdlib.h> #include <string.h> /* goto语句也 ...

  7. Java基础(2):Java中的四个跳转语句总结goto,break,continue,return

    跳转控制语句 Java中的goto是保留字,目前不能使用.虽然没有goto语句可以增强程序的安全性,但是也带来很多不便,比如说,我想在某个循环知道到某一步的时候就结束,现在就做不了这件事情.为了弥补这 ...

  8. 在应用程序中实现对NandFlash的操作

    以TC58NVG2S3ETA00 为例: 下面是它的一些物理参数: 图一 图二 图三 图四 图五 图6-0 图6-1 说明一下,在图6-1中中间的那个布局表可以看做是实际的NandFlash一页数据的 ...

  9. 原来java中也有类似goto语句的标签啊--java label标签

    http://blog.sina.com.cn/s/blog_6d5354cd0100xjg7.html ——————————————————————————————————————————————— ...

随机推荐

  1. Request.ServerVariables["Url"]

    Request.ServerVariables["Url"] 返回服务器地址 Request.ServerVariables["Path_Info"] 客户端提 ...

  2. WRTnode 的 HTTP Web PWM 调光实验(2016-05-16)

    前言 这里是节取自 物联网的任意门——WRTnode2R 评测 中的 http web PWM 调光灯实验,所以有一些前置设置如果没有描述清楚可参考该处. 正文 步骤一:编辑 html 文件放在 /w ...

  3. iOS中解析json多种方法

    我感觉JSON解析,重要的是JSON解析之后对结果的处理JSON解析后是个dictionary,但是字典中有可能包含字典和数组,数组中还可以包含字典.向客户端请求的返回数据解析下面就简单介绍一下JSO ...

  4. Hadoop运行中遇到的错误调试

    在运行Hadoop的过程中遇到的最多的问题就是DataNode不能正常的启动,各种问题都有可能,说一下我遇到的两种情况: (1)第一种情况是Master的防火墙没有关闭.这样在启动Hadoop的时候, ...

  5. YII2 Gridview

    YII2 Gridview 部分使用规则 1.页面显示的时间戳转换 a. [ 'label'=>'创建日期', 'attribute' => 'created_at', 'filter' ...

  6. [LeetCode]题解(python):026-Remove Duplicates from Sorted Array

    题目来源: https://leetcode.com/problems/remove-duplicates-from-sorted-array/ 题意分析: 给定一个排好序的数组,去除重复的数,返回新 ...

  7. 块元素block,内联元素inline; inline-block;

    block:块元素的特征 div ol li 等: 1.只有高度不设置宽度的时候默认撑满一行: 2.默认块元素不在一行: 3.支持所以CSS命令: inline:内联元素的特征 span i stro ...

  8. 引用 IP电话的原理结构及其关键技术

    引用 茫然 的 两种将字符串转换成浮点数的方法 方法一: char szString[] = "-2876.99812376443"; double db1; db1 = atof ...

  9. gcc编译4个阶段

    gcc的编译流程分为四个步骤,分别为:· 预处理(Pre-Processing)  -E· 编译(Compiling)         -S· 汇编(Assembling)        -c· 链接 ...

  10. JavaEE Tutorials (7) - 在会话bean中使用异步方法调用

    7.1异步方法调用88 7.1.1创建异步业务方法88 7.1.2从企业bean客户端调用异步方法897.2async示例应用90 7.2.1async—war模块的架构91 7.2.2运行async ...