快捷搜索:  汽车  科技

代码编程的三种方式(高效的编程方式-伪代码编程)

代码编程的三种方式(高效的编程方式-伪代码编程)这个问题是今天工作中的一个小插曲,具体是这样的:伪代码还内含了迭代精进的思想。从一个高层设计开始,首先将高层设计落实为伪代码,然后再将伪代码落实到程序,逐步精进,随着层次降低,也在不停的检查设计方案的合理性。这样可以尽早发现设计上的漏洞,越早发现,修改的成本越低。· 用伪代码描述意图,而不是实现· 伪代码详细到足够低的层次,方便我们可以直接用它来生成伪代码在实现一个内容之前,一般我们都会有设计。当设计以伪代码的形式呈现时,设计一旦做好,基本上就可以直接生成代码了。而且,写过的伪代码摇身一变就成了注释,这样的注释既简洁又高效,可谓一举多得。

代码编程的三种方式(高效的编程方式-伪代码编程)(1)

什么是伪代码

伪代码(Pseudocode)是一种非正式的,类似于英语结构的,用于描述模块结构图的语言。伪代码提供了更多的设计信息,每一个模块的描述都必须与设计结构图一起出现。(百度百科)

伪代码的一些指导原则

· 用类似自然语言的语句描述操作

· 避免使用目标语言中特定的语法元素

伪代码让我们在一个略高于代码的层次上进行设计。在使用特定语言的内容时,我们又降低到了更低的层次上,而且设计还会受限于特定的语言

· 用伪代码描述意图,而不是实现

· 伪代码详细到足够低的层次,方便我们可以直接用它来生成伪代码

伪代码的好处

在实现一个内容之前,一般我们都会有设计。当设计以伪代码的形式呈现时,设计一旦做好,基本上就可以直接生成代码了。而且,写过的伪代码摇身一变就成了注释,这样的注释既简洁又高效,可谓一举多得。

伪代码还内含了迭代精进的思想。从一个高层设计开始,首先将高层设计落实为伪代码,然后再将伪代码落实到程序,逐步精进,随着层次降低,也在不停的检查设计方案的合理性。这样可以尽早发现设计上的漏洞,越早发现,修改的成本越低。

一个伪代码编程实例

这个问题是今天工作中的一个小插曲,具体是这样的:

客户录入了一个表格

代码编程的三种方式(高效的编程方式-伪代码编程)(2)

在录入时顺序是不一定的,但是显示时要首先将车站按照某一顺序排列,然后相同线路的显示在一起,然后线路按照某个规则排序,各线路数据还需要按照批次排序。

需求并不是很复杂,只是麻烦一些,下面是我设计的伪代码(有大神有刚好的思路欢迎补充):

开始 将数据按车站分组 分好组的数据按线路分组 分好组的线路数据按照批次排序 将线路数据排序 返回排序好的线路数据 将车站数据排序 返回排好序的车站数据 返回结果 结束

在设计好以后,我们发现这个问题可以被拆成三个子程序,每个子程序层次都不一样,每个层次只排序自己的一点数据,由内而外排序结束后,整个顺序就已经排好了

这段伪代码已经非常贴近代码,但是未用到任何语言细节,我们试着用java实现它(这里实现最内层的一个子函数,其他部分也类似):

伪代码:

分好组的线路数据按照批次排序

返回排序好的线路数据

首先写出函数声明

public List<Data> sortTrack(List<Data> trackDataUnsort){ }

然后实现伪代码:

分好组的线路数据按照批次排序 trackDataUnsort.sort(Comparitor.comaringInt(Data::getBatch)) 返回排序好的线路数据 return trackDataUnsort;

将伪代码变成注释:

// 分好组的线路数据按照批次排序 trackDataUnsort.sort(Comparitor.comaringInt(Data::getBatch)) // 返回排序好的线路数据 return trackDataUnsort;

整个函数现在这样:

public List<Data> sortTrack(List<Data> trackDataUnsort){ // 分好组的线路数据按照批次排序 trackDataUnsort.sort(Comparitor.comaringInt(Data::getBatch)); // 返回排序好的线路数据 return trackDataUnsort; }

这个函数太简单了,所以下一步考虑将它内联到上一层。这也正验证了之前说的,伪代码可以持续的验证设计的正确性,并随时调整。

关于伪代码编程就先说这么多了,欢迎关注!

猜您喜欢: