关于编写流程的一些经验

             关于编写流程的一些经验
 各位同行有时编写较多的流程。在很多情况下需要修改其他同事的流程。在修改的过程中需要了解流程的结构、看懂原流程各部分编写的情况 ,了解每个变量存放的内容。但由于在编写过程中会不断的修改增加流程,所以有时有些地方的情况变的比较复杂,让后来的同事一时找不到头绪,大大影响了编写的效率。总结以上经验,我觉得如果能做好一下几点,对他人修改流程会有很大帮助:

1)规划变量,打好基础
 变量是流程的主要部分,规划好变量SR0~SR30、IR0~IR30有很重要的意义。先定义好各变量所存放的内容,比如SR1存放用户编号,SR2存放用户密码,SR3存放系统时间,SR4存放金额,IR1存放用户ID,IR2存放语音编号、IR3存放各函数返回代码等等。一般情况下将SR29、SR30,IR29、IR30做为临时变量使用。规划好之后就不要再改动,不要随意在其他地方将不同内容赋与该变量。这样一个变量对应一个内容,就可以很容易的知道流程现在这部分在做什么处理,也方便在流程的任何一个地方调用你想要的变量。

2)做好注释,清晰醒目
 做好注释是使人短时间内看懂流程的好方法。在容易产生误解或没有资料的情况下不能看懂的地方,一定要做好注释。在所有的查询数据库操 作,例如SelectDB、InsertDB、UpdateDB、DeleteDB等地方,一定要将对数据库的操作语句完整的、详细的注释出来。这样在没有DBINTERFACE表资料的情况下也可以迅速修改流程,调用这些数据库接口。但在详细注释的同时也需要注意,只有在有需要的地方注释,不必全部或大部分地方都做满注释。

3)巧用函数,事半功倍
 函数调用是流程当中必不可少的内容。对于整个流程中多次使用到的部分,例如用户ID、密码认证;网关数据查询等,就可使用函数。在变量 合理定义的前提下,可以做到不必理会函数内部做了些什么,只要提供函数需要的数据,就可得出结果。对于考虑到将来可能需要做修改或配合不同地市修改的地方,也应该使用函数。而对于只使用一次,固定不必再次修改而且又较短小的部分,就不必单独写一个函数来调用。过多的使用函数,会使后面的修改有很大困难。其他的编写人员会在众多的函数调用之间搞得理不清流程架构。当许多不同的流程定义了相同的一部分保留变量,例如SR20~SR30、IR20~IR30定义相同,函数又只调用了这几个变量的时候,甚至可以做到将不同流程的同功能函数完全拿过来使用,使就像大规模集成电路中的门电路一样,不必理会它到底做了什么,怎么做,只要知道它要什么,得出什么结果就可以了。所以,合理巧妙的利用函数是非常重要的。
 

4)统一处理,结构分明
 在流程中经常要求返回上级菜单或返回主菜单,有时一些函数调用之后需要处理调用的结果,这都需要函数返回值。如果不能合理安排,统一 处理函数的返回值,就会在返回,错误处理,正常结束时出现很多错误,给修改流程带来很大工作量。其实,函数的返回不过几项,统一处理是比较好的。函数返回一般可分为:函数正常、返回上级、返回主菜单、函数内部有错误(需要单独解释原因)、函数内部有错误(可统一解释原因或不需解释原因)。有时函数正常也需要返回上级或主菜单,不过仍建议分开处理。需要单独解释错误原因的,可在函数中写一段播放错误原因的代码。而其他返回情况则可以定义成为不同的函数返回码。例如定义IR27为函数返回码。那么就定义当IR27=0时函数正常;当IR27=1时函数错误(可统一解释,比如系统忙);当IR27=2时函数返回上级;当IR27=3时函数返回主菜单;当IR27=4时函数中用户输入错误需退出等等。这样当调用任何一个函数时就很容易的处理它的返回结果。需要返回主菜单只需要在函数中赋值IR27=3,在调用它的母函数中再次赋值IR27=3,这样层层处理,就很容易返回到主菜单了。还有例如系统忙提示,也可以只在主菜单写一段播放的代码,不必处处写。

5)做好说明,大有裨益
 足球不是一个人的运动,程序也一样。好的程序都有齐全的、详细的文档辅之。如果时间允许,可以做好流程的说明文档。对于流程中的函数 ,可作详细说明:该函数利用到那些变量;在调用函数前需要赋什么值给什么变量、调用后出来什么结果、结果放在那些变量里、函数返回后有几种情况等等。对于流程中的数据库调用,也可详细说明:DBINTERFACE表内容、所操作表的大致情况、当中的数据情况等等。

6)整理流程,精益求精
 在流程的最后,可以适当整理一下流程。流程在编写过程中会产生一些注释不要的部分,其中有些是完全错误的,大可不必留下,影响美观。 有些可能是这个流程里不需要但是其他地市使用时需要的,就可留下。对于函数,在函数的开始和终结都使用//*******一类的注释行加空行分隔开来。在每个段落间的空行数目要相等。函数编写时每个状态行要靠左,而其他行前面最好统一使用一个TAB键的缩进。注释部分也确保上下对齐列。每个函数开始时用中文写明函数的名称用途等。这样整个流程上看起来整整齐齐,后面修改的人就很容易找到需要的段落,提高效率。  流程不可能一次就写好。在实际编写中我遵守了以上几点,使得流程测试修改时间大大减少。如果大家都能写好整齐清晰的流程,在后来的修改过程中就能顺利一些。如果能统一规划好变量,将来还有可能将一些函数固定,例如错误次数超出处理等这样的函数就可以通用到任何一个流程。  当然,现场有许多不同的网关和业务需求,在编写时也要结合具体情况。希望大家能提供更多的建议和意见,将流程写得更好。

转载于:https://www.cnblogs.com/kikee/archive/2005/04/24/144491.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CodeForces 501B——Misha and Changing Handles

题意:给定一些姓名的原来姓名和修改后的名字,由于一个名字可以被修改多次,所以求所有用户的初始姓名和当前姓名。 思路:暴力。数据量很小,对于每次修改直接判断其是否有原来的名字即可,有的话更新&#xff…

静态多态 动态多态

一. 静态多态 1. 何为静态多态? 又称编译期多态,即在系统编译期间就可以确定程序将要执行哪个函数。例如:函数重载,通过类成员运算符指定的运算。 2. 示例代码 函数重载示例: class A { public:A() {}A( int x ) …

来几个FUNNY PICS,让大家笑一笑!

点解蜡笔小新成日都可以甘猥琐~转载于:https://www.cnblogs.com/hdclub/archive/2005/04/26/145761.html

uva 10954——Add All

<p>题意&#xff1a;给定一个序列&#xff0c;然后从中选择两个数&#xff0c;相加后放入原来的序列&#xff0c;消耗的费用为两个数 的和&#xff0c;问最小的代价。</p><p></p><p>思路&#xff1a;贪心。用优先队列维护&#xff0c;每次取得时…

jsoncpp学习笔记

jsoncpp 一. json基础 类型&#xff1a; 1. Json::Value为主要数据类型&#xff1b; 2. Json::Reader将文件流或字符串创解析到Json::Value中&#xff0c;主要使用parse函数&#xff1b;3. Json::Writer&#xff1a;与JsonReader相反&#xff0c;将Json::Value转换成字符串流…

Together与Visual.Studio.NET的结合使用(三)

通用选项&#xff1a; 图二十九&#xff1a;通用选项 Delete confirmation&#xff1a;此选项定义当你删除一个元素的时候是否需要进行确认。 Automatically enable Together VS.NET support for opened projects&#xff1a;当打开一个已存在的项目时&#xff0c;是…

uva 1152 ——4 Values whose Sum is 0

题意&#xff1a;给定4个n元素集合&#xff0c;要求从每个集合中选择一个数&#xff0c;使得ABcd0&#xff0c;问存在多少种方法。 思路&#xff1a;枚举hash判断。直接枚举4次方的算法会超&#xff0c;那么只需要枚举ab&#xff0c;然后在cd的和中查找等于-&#xff08;ab&…

c++ STL 全排列

在c的STL中有函数可以直接对数组元素进行全排列&#xff0c;即next_permutation和pre_permutation&#xff0c;这两个函数都可以实现全排列&#xff0c;只是排列的顺序不同&#xff0c;next_permutation作用为向后排序&#xff0c;而pre_permutation作用为向前排序。 需要头文…

创建下标为1-10的整形数组

创建下标为1-10的整形数组 Array intArr Array.CreateInstance(typeof(int), newint[]{10}, newint[]{1}); posted on 2005-05-11 16:32 K3 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/sskset/archive/2005/05/11/153238.html

uva 1605 ——Building for UN

题意&#xff1a;给定n&#xff0c;让设计一个大楼&#xff0c;使得n个国家任意两个国家都相邻或上下层。 思路&#xff1a;由于题目中的限定很小&#xff0c;可以这样考虑&#xff0c;只设计两层&#xff0c;每层的第i行为同一个国家&#xff0c;第二层的所有第j列为同一个国家…

友元函数 友元类 友元成员函数

友元 一般来说&#xff0c;类内的私有数据是对外不可见的&#xff0c;但在有些情况下&#xff0c;我们需要在类外对该类的私有数据进行访问&#xff0c;这就需要用到一种新技术——友元&#xff08;friend&#xff09;&#xff0c;即在声明前添加关键字friend。 友元关系是单向…

uva 120——Stacks of Flapjacks

题意&#xff1a;一个非常有趣的问题&#xff0c;就是给一摞煎饼&#xff0c;然后从下面拿起来一张&#xff0c;然后把该张上面的所有馅饼反转&#xff0c;求最后使得馅饼从小到大的最小的步数。 思路&#xff1a;贪心。每次都把没排好序的最大数反转到最上面&#xff0c;然后在…

[Diary]我也要向菁儿检讨一下

看到了CS版&#xff0c;angel 因为没能按时参加聚会发的检讨贴&#xff0c;觉得我也有必要检讨一下。&#xff08;一&#xff09; 菁儿昨天大概很生气吧&#xff0c;前天下午本来答应和她昨天下午一起去参加CS版版聚的&#xff0c;因为学校里难得有一些聚会可以认识一些朋友&am…

继承与动态内存分配

继承与动态内存分配 在基类或派生类中含有指针时&#xff0c;要考虑内存分配情况&#xff08;new与delete&#xff09;&#xff0c;还要考虑在进行对象间赋值时指针隐藏的问题&#xff08;使用默认复制构造函数在析构时会造成原对象中的指针指向的内存空间被释放&#xff0c;为…

再谈VC++中ListControl排序[原创]

2005.01.05发表于blog.csdn.net/zxub  昨天做了ListControl中的排序功能&#xff0c;但是使用后&#xff0c;发现只有在第一次数据完全没排序的时候&#xff0c;排序才是正确的&#xff0c;仔细看了下排序用到的回调函数&#xff1a;  int CALLBACK CStaMDiag::CompareFunc…

uva 11572 ——Unique Snowflakes

题意&#xff1a;给定一个序列&#xff0c;然后在这个序列找到一个连续的串&#xff0c;使得串中没有重复的元素。 思路&#xff1a;单调队列。每次都把该在序列没出现的数加入到序列中&#xff0c;然后向后扫描找到最大的ans。 code&#xff1a; //#incllude <bits/stdc.h&…

使用.NET类库操作CSV文件

CSV文件&#xff0c;是指使用逗号对数据进行分割的文本数据文件。昨天有人提出了一个问题&#xff0c;就是怎么对CSV文件进行操作&#xff0c;并且给出了一个类的定义。我根据这个类定义实现了一个能够读些CSV文件的类。由于涉及到了字符串操作&#xff0c;为了提高查询、替换性…

uva 11054——Wine trading in Gergovia

题意&#xff1a;有n个村庄&#xff0c;每个村庄要么买酒&#xff08;&#xff09;&#xff0c;要么卖酒&#xff08;-&#xff09;&#xff0c;要求供需平衡&#xff0c;求最小代价&#xff08;代价k为把k个单位的酒运到相邻的村庄&#xff09;。 思路&#xff1a;贪心。可以把…

uva 1312——Cricket Field

题意&#xff1a;在w*h的方格内&#xff0c;找出一个最大的正方形&#xff0c;使得正方形内没有点&#xff08;可以在边界有点&#xff09;。 思路&#xff1a;枚举。正方形可以看作是矩形&#xff0c;只不过在取的时候取最短的那条边作为边长&#xff0c;那么枚举出短边最大的…

【操作系统】页面置换算法

页面置换算法 在进程运行过程中&#xff0c;若需要访问的物理块不在内存中&#xff0c;就需要通过一定的方式来将页面载入内存&#xff0c;而此时内存很可能已无空闲空间&#xff0c;因此就需要一定的算法来选择内存中要被置换的页面&#xff0c;这种算法就被称为页面置换算法。…