顺序语句

顺序语句是程序语言控制结构中最基础,最简单和最容易理解的一种,它确定了为完成某个功能先做什么,后做什么。分为有依赖关系的顺序语句和无依赖关系的顺序语句。

一、有依赖关系的顺序语句

示例1

var myForm = document.forms[‘myForm‘]
var uname = myForm.uname.value
var pwd = myForm.pwd.value
login(uname, pwd)

这是Web前端开发过程中的一个登录场景,从form表单中获取用户名和密码,调用登录函数完成登录。很明显这几行代码之间有依赖性,第二三句依赖于第一句,第四句依赖于第二三句。它们的依赖关系从代码中发现,有依赖关系的是不能随意调换语句顺序。

示例2

order.computeAdult()
order.computeChild()
order.computeCoupon()
var total = order.computeTotal()

这几句的依赖关系就没有那么明显了,你很难了解它内部的逻辑,即每一个语句被调用后它做了什么,有没有修改公用变量数据,对后续语句有没有影响。这实际是一个旅游订单结算业务,computeAdult计算成人的价格(成人价格*成人数量),computeChild计算儿童的价格(儿童价格*儿童数量),computeCoupon计算优惠券的价格(优惠券面值*数量),computeTotal则等于 "成人+儿童-优惠券"。

对于有依赖关系的顺序语句,应该通过以下方式增强其可读性

1. 使子程序名凸显依赖关系

比如示例2的计算支付总价的,都以computeXXX格式,至少这样能猜到是在做同一件事,需要拆为几个步骤。

2. 利用子程序的参数凸显依赖关系

比如示例2,可以每次都把价格参数传入

order.computeAdult(price)
order.computeChild(price)
order.computeCoupon(price)

由于所有的子程序都使用了price,你会从中得到暗示,这几个子函数可能操作了相同的数据变量

当然还有一种更好方式,把子程序操作的结果变成下一个子程序的输入,这样依赖关系就很显眼了

price = order.computeAdult(price)
price = order.computeChild(price)
price = order.computeCoupon(price)

3. 用注释对复杂的依赖关系进行说明

如果还担心某些依赖关系不够清晰,那就用注释说明它以弥补代码的不足。

二、无依赖关系的顺序语句

无依赖关系的顺序语句即是一条语句并不依赖上一条语句,它们只是各自完成不同的功能,相互之间没有交集。

或许只有的语句可以随意写,比如

var $nav = $(‘#nav‘)
var $toolbar = $(‘#toolbar‘)
var $content = $(‘#content‘)

$toolbar.width(900)
$nav.heiht(300)
$content.css(‘color‘, ‘gray‘)

$toolbar.show()
$content.show()
$nav.show()

这实际在操作三个dom元素,改变后显示出来。作为一个普遍性原则,要让程序自上而下阅读,而不是目光被牵着跳来跳去。改成以下就清晰了许多

var $nav = $(‘#nav‘)
$nav.heiht(300)
$nav.show()

var $toolbar = $(‘#toolbar‘)
$toolbar.width(900)
$toolbar.show()

var $content = $(‘#content‘)
$content.css(‘color‘, ‘gray‘)
$content.show()

这段代码把每一个对象的引用都放在一起,把它们“局部化”。

对于无依赖关系的顺序语句,应该把相关的语句组织在一起。因为它们处理的是相同的数据,执行类似的任务。而一旦把相关的语句组织在一起,可能会发现它们之间有很强的联系,这时你可能会想把这些语句提取到一个子程序里。一个个相互独立的子程序慢慢把功能实现了,代码也清晰了。

时间: 2024-10-12 18:48:58

顺序语句的相关文章

JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)

Java流程控制语句 本博文将对JAVA中组成各种结构的控制语句进行重点介绍,主要内容是区别于C/C++中的流程控制语句的重点解析. 1.顺序语句 顺序结构中的语句可分为:表达式语句.空语句和复合语句三大类. 注: (1).空语句主要用来作为空循环体,其语法格式如下: : //其实就是一个分号 执行一个空语句,就是将控制转到该语句的结束点.这样,如果空语句是可以到达的,则空语句的结束点也是可以到达的. (2).复合语句又称为语句块,若语句块是空的,则控制转到语句块的结束点. 2.if条件语句 J

SQL语句中SELECT语句的执行顺序

SELECT语句的执行的逻辑查询处理步骤: 执行顺序 语句 8 SELECT 9 DISTINCT 11 <TOP_specification> <select_list> 1 FROM <left_table> 3 <join_type> JOIN <right_table> 2 ON <join_condition> 4 WHERE <where_condition> 5 GROUP BY<group_by_li

分支语句

语句的分类:顺序语句,分支语句(选择.条件),循环语句分支语句:1  if(表达式(要么是true,要么是false)){}2  if(){}else{} 二选一3  if(){}elseif(){}···else{} 多选一4  if的嵌套 多选一 嵌套 输入年份,判断是闰年还是平年? 输入日期判断格式是否正确 顺序排列  x,y,z按从小到大的顺序排列 switch case

switch 语句

switch  case   选择顺序语句.    多选一 结构 : switch () { case "" : break; } 练习:输入几月几号,输出他是今年的第几天 1 int m1 = 31, m2 = 28, m3 = 31, m4 = 30, m5 = 31, m6 = 30, m7 = 31, m8 = 31, m9 = 30, m10 = 31, m11 = 30; 2 Console.Write("请输入月份:"); 3 int m = int.

选择语句(分支语句)——if else

每晚必备的作业时间,今儿有点晚了,现在这样生活紧张而充实,感觉回到了幸福的学生时代,可摆在面前的现实在提醒自己时刻不能松懈……跑偏了转回正题,今儿学的分支语句不多就几句,可是用了差不多一整天的时间来理解,吃透和熟悉……语句分类:顺序语句,选择语句(分支语句),循环语句 选择(分支语句)if(){}if(){}else{} 二选一:若if成立,则不去走else,:若if不成立,肯定走else if(){}else if(){}else if(){}else{} 多选一若if成立,那其他的所有都不去

java基础学习总结四(控制语句&lt;顺序、选择、循环&gt;)

一:结构控制语句 结构控制语句分为3种,顺序语句.选择语句.循环语句. 1:顺序语句 就是自上而下的执行程序,默认执行顺序. 2:选择语句 if结构语句:如果满足条件,则执行该语句. if...else结构语句:如果满足条件执行下面的语句,否则执行另外的语句. if...else if...else结构语句:多选择语句 switch结构:对于等值判断时,可以使用switch结构表示,更加直接明了.switch():括号内的内容 必须是int或者是可以间接转换为int的值,byte.short或a

3月7日 分支语句

语句:顺序语句,选择语句,循环语句,嵌套语句. 选择语句: (一)顺序 if(表达式) { } (二)二选一 if(表达式) { } else { } (三)三选一 if(表达式) { } else if() { } else { } (四)嵌套 if(表达式) {if(){} else{} } else {if(){} } //相亲过程 Console.Write("你有房子吗?"); string m = Console.ReadLine(); if(m=="有"

C#语句

一.顺序语句 从上到下依次执行 二.分支语句 1.if语句 A.if(条件) { 满足条件执行 } B.if(条件) { 满足条件执行 } else { 不满足条件执行 } C.if(条件1) { 满足条件1执行 } else if(条件2) { 不满足条件1,但满足条件2时执行 } D.if(条件1) { if(条件2) { 在满足条件1的情况下,也满足条件2执行 } } 案例: 1.输入三个数,找出最大的输出 2.问:你有钱吗?你有房子吗?你有车吗?你有能力吗? E.switch语句 如果可

15-07-02 语句-分支语句

语句: 语句的类型包括声明语句,表达式语句,选择语句,循环语句,跳转语句,异常语句. 一:声明语句:入新的变量和常亮.变量声明可以选择为变量赋值.再常量声明中必须赋值. 例: int i = 0;    //声明变量 i 并赋值,也可以不赋值. double a; 二:表达式语句:用于计算值的表达式语句不许再变量中存储该值. 例: sum = i + j;    //变量 i 和 j 在此之前必须先赋值,而且 sum 也需要声明类型. int x = a + b;   //或者在声明的同时进行运