我想在我的 NATURAL 程序的一行中加入一些说明。像这样 :
**before
Statement1
Statement2
Statement3
**after
Statemen1 statement2 statement3
我知道在大多数语言中这很容易做到,但我不确定在 Natural 中是否可行。
我想在我的 NATURAL 程序的一行中加入一些说明。像这样 :
**before
Statement1
Statement2
Statement3
**after
Statemen1 statement2 statement3
我知道在大多数语言中这很容易做到,但我不确定在 Natural 中是否可行。
语言中没有任何限制可以防止将语句放在一行。例如,这是一行中的整个程序。
DEFINE DATA LOCAL 1 #A (A10) END-DEFINE MOVE 'XX' TO #A WRITE #A END
但是,这确实不好玩,并且适用于所有语言。对于必须维护代码的下一个人,请记住这一点。
引用英国飞行王牌道格拉斯·巴德 (Douglas Bader) 和其他人的话说
“规则是为了智者的指导和傻瓜的服从”
我总是说:
“唯一永远有效的规则是没有规则永远有效”
在编程中,我们有许多有用的规则,其中之一是:
“每个语句都换行”
......遵循这句格言是明智的,但也有例外。
有时,您实际上可以通过打破规则来提高代码的可读性。
这是一个示例(用 Natural 编写):
define data
local 1 DATE-FROM (D) /* (D=Natural Date-Format)
1 DATE-TO (D)
end-define
DATE-FROM := *DatX /* System Variable = "Today"
DATE-TO := DATE-FROM + 1
perform P800-WRITE-DATE
DATE-FROM := DATE-TO
DATE-TO := DATE-FROM + 2
perform P800-WRITE-DATE
DATE-FROM := DATE-TO
DATE-TO := DATE-FROM + 3
perform P800-WRITE-DATE
DATE-FROM := DATE-TO
DATE-TO := DATE-FROM + 4
perform P800-WRITE-DATE
define subroutine P800-WRITE-DATE
write DATE-FROM(em=DD.MM.YYYY)
DATE-TO (em=DD.MM.YYYY)
end-subroutine
END
现在,我将把它的操作写如下:
DATE-FROM := *DatX DATE-TO := DATE-FROM + 1 perform P800-WRITE-DATE
DATE-FROM := DATE-TO DATE-TO := DATE-FROM + 2 perform P800-WRITE-DATE
DATE-FROM := DATE-TO DATE-TO := DATE-FROM + 3 perform P800-WRITE-DATE
DATE-FROM := DATE-TO DATE-TO := DATE-FROM + 4 perform P800-WRITE-DATE
它更容易理解、发现拼写错误并提供质量。
今天的输出是:
28.02.2021 01.03.2021
01.03.2021 03.03.2021
03.03.2021 06.03.2021
06.03.2021 10.03.2021
回到最初的问题:
在 Natural 中,您可以用“;”结束语句 但这不是必需的。以下是完全有效的:
DATE-FROM := *DatX ; DATE-TO := DATE-FROM + 1 ; perform P800-WRITE-DATE;
DATE-FROM := DATE-TO ; DATE-TO := DATE-FROM + 2 ; perform P800-WRITE-DATE;
DATE-FROM := DATE-TO ; DATE-TO := DATE-FROM + 3 ; perform P800-WRITE-DATE;
DATE-FROM := DATE-TO ; DATE-TO := DATE-FROM + 4 ; perform P800-WRITE-DATE;
当我们在这里时,另一个小的打字辅助是连续字符“-”,最初是为了在下一行继续文字而设计的,但也可以用来增加可读性:
define data
local 1 DATE-A8 (a8)
end-define
DATE-A8 := '20211231'
DATE-A8 := '2021' - '12' - '31'
DATE-A8 := '2021'
- '12'
- '31'
END
我希望你觉得这很有用。