编写高质量易语言代码注意点

今天在淘百度的时候看到了这篇文章。觉得很不错。就给亲们分享下。

如果你想学好易语言的话请仔细看看以下的内容吧。看完此文之后保证你大有收获。

什么是一个高效的软件?一个高效的软件不仅应该比实现同样功能的软件运行得更快,还应该消耗更少的系统资源。程序的时间效率是指运行速度,空间效率是指程序占用内存或者外存的状况。另外程序的效率我们也可以分为全局效率和局部效率。全局效率是指站在整个系统的角度上考虑的效率,局部效率是指站在模块或函数角度上考虑的效率。

1. 使用整数和长整数

提高代码运行速度最简单的方法莫过于使用正确的数据类型了。也许你不相信,但是 正确地选择数据类型可以大幅度提升代码的性能。在大多数情况下,程序员可以将短整数型、小数型和双精度小数型的变量替换为整数(Integer)或长整数(Long)类型的变量,因为易语言处理整数和长整数的能力远远高于处理其它几种数据类型。

在大多数情况下,程序员选择使用小数型或双精度小数型的原因是因为它们能够保存小数。但是小数也可以保存在整数类型的变量中。例如程序中约定有三位小数,那么只需要将保存在整数型变量中的数值除以1000就可以得到结果。根据我的经验,使用整数和长整数替代短整数型、小数型和双精度小数型后,代码的运行速度可以提高将近10倍。

但是我们也不要老是强调使用使用整数和长整数,因为在程序中数据类型的定义还牵涉一个关键的问题,就是数据的安全,频繁而无规范地定义数据类型会使算法出现漏洞,是数据的安全和临界判断有问题.对财务和工程计算而言,小数点的精度是很敏感的数据,只能用双精度数据来规范.另外, 换成整型也会导致程序可读性急剧下降.

2. 避免使用通用型数据

通用型的变量需要16个字节的空间来保存数据,而一个整数(Integer)只需要2个字节。通常使用通用型变量的目的是为了减少设计的工作量和代码量,也有的程序员图个省事而使用它。但是如果一个软件经过了严格设计和按照规范编码的话,完全可以避免使用变体类型。

3. 尽量避免使用属性

在平时的代码中,最常见的比较低效的代码就是在可以使用变量的情况下,反复使用属性(Property),尤其是在循环中。要知道存取变量的速度是存取属性的速度的20倍左右。下面这段代码是很多程序员在程序中会使用到的:

容器名: 数值 类型:整数型
容器名: 容器 类型:整数型
计次循环首(7,容器)
文本1.内容 = 文本1.内容 + #换行符 + 到文本((数值×容器))
计次循环尾()
下面这段代码的执行速度是上面代码的20倍。
容器名: 文本 类型:文本型
文本 = 文本1.内容
文本 = 文本 + #换行符 + 到文本((数值×容器))
文本1.内容 = 文本
另外要注意,这个涉及一个编程思路,用属性当变量的作法大多数情况可以简化算法。所以有时候也不能一味强调用变量代替属性。

6. 避免调用很短的子程序

调用只有几行代码的子程序也是不经济的--调用子程序所花费的时间或许比执行子程序中的代码需要更长的时间。在这种情况下,你可以把子程序中的代码拷贝到原来调用子程序的地方。

但是有时候小的子程序可能会被调用很多次而不是只有两三次,这时就应该调用它。

7. 减少对子对象的引用

在易语言中,通过使用.来实现对象的引用。例如:
窗口1.编辑框1.内容
在上面的例子中,程序引用了两个对象:窗口1和编辑框1。利用这种方法引用效率很低。但遗憾的是,没有办法可以避免它。我的“多媒体模块”就有这个缺点。

8. 检查文本型数据是否为空

大多数易语言用户在检查文本型数据是否为空时会使用下面的方法:
如果 (文本1.内容 = "" )
注释: 执行操作
结束如果
很不幸,进行字符串比较需要的处理量甚至比读取属性还要大。因此我建议大家使用下面的方法:
如果 (到数值(文本1.内容) = 0 )
另一个不同的意见是:问题在于当文本字串为 "ABC"之类的非数值型时, 到数值("ABC")=0并不表示为空。文本比较的效率并不低,在底层算法中,一般会直接比较长度才会继续比较内容。

9. 使用数组,而不是多个变量

当你有多个保存类似数据的变量时,可以考虑将他们用一个数组代替。在易语言中,数组是最高效的数据结构之一。

10. 尽量使用动态数组,而不是静态数组

使用动态数组对代码的执行速度不会产生太大的影响,但是在某些情况下可以节约大量的资源。

11. 销毁对象

无论编写的是什么软件,程序员都需要考虑在用户决定终止软件运行后释放软件占用的内存空间。但遗憾的是很多用户对这一点好像并不是很在意。正确的做法是在退出程序前需要销毁程序中使用的对象。例如:关闭数据库:关闭(数据库名称)、全部关闭(),关闭打开(播放)的文件,关闭载入的图片等。

中止程序执行时应该要关闭打开的文件(包括数据库文件、图片文件等),但是窗口销毁对销毁窗口及窗口单元来说是自动的,已足够做释放用,在窗口内最好不要随意销毁窗口单元,可能会导致程序运行中的潜在的单元数据访问而崩溃.只有在图形buffer情况才需要经常销毁。

12. 尽量使用内部子程序,减少易模块的数量

因为从易语言连接到一个外部对象需要耗费大量的CPU处理能力。每当你调用接口函数的时候,都会浪费大量的系统资源。
另外只有在易模块中的接口函数或变量被调用时,易语言才将易模块加载到内存中;当易语言应用程序退出时,才会从内存中卸载这些模块。如果代码中只有一个模块,易语言就只会进行一次加载操作,这样代码的效率就得到了提高;反之如果代码中有多个模块,易语言会进行多次加载操作,代码的效率会降低。

13. 使用对象数组

当设计用户界面时,对于同样类型的控件,程序员应该尽量使用对象数组。你可以做一个实验:在窗口上添加100个图片框,每个图片框都有不同的名称,运行程序。然后创建一个新的工程,同样在窗口上添加100个图片框,不过这一次使用对象数组,运行程序,你可以注意到两个程序加载时间上的差别。
也有人认为两者从逻辑上看效率应该差不多。

14. 使用窗口单元“移动”方法

在改变对象的位置时,有些用户喜欢使用“宽度”、“高度”、“顶边”和“左边”属性。例如:
按钮1.宽度 = 100
按钮1.高度 = 100
按钮1.顶边 = 0
按钮1.左边 = 0
实际上这样做效率很低,因为程序修改了四个属性,而且每次修改之后,窗口都会被重绘。正确的做法是使用Move方法:
按钮1.移动(0,0,100,100)

15. 减少图片的使用

图片将占用大量内存,而且处理图片也需要占用很多CPU资源。在软件中,如果可能的话,可以考虑用背景色来替代图片--当然这只是从技术人员的角度出发看这个问题。
但是如果为了优化程序界面,使用图形换来的好处可能远胜节约下的资源,否则就不会有XP,也不会有游戏的进步了。

16. 编译优化

易语言的程序编译有三个选项:“编译”、“独立编译”、“编译生成安装软件”。优先使用的次序应该是“编译生成安装软件”、“编译”、“独立编译”,因为“独立编译”会将易语言系统中所有的支持库都编译进去,而“编译生成安装软件”只选择程序中必要的支持库编译。要脱离易语言环境也可以运行,就不要使用“编译”而应用“编译生成安装软件”或“独立编译”。

总结:执行效率和程序可读性永远是对矛盾,两者应该通盘考虑;资源占用和程序易用性永远是对矛盾,两者也应该通盘考虑。基于此,下面探讨一些提高程序的效率的规则。
【规则1】不要一味地追求程序的效率,应当在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,设法提高程序的效率。
【规则2】以提高程序的全局效率为主,提高局部效率为辅。
【规则3】在优化程序的效率时,应当先找出限制效率的“瓶颈”,不要在无关紧要之处优化。
【规则4】先优化数据结构和算法,再优化执行代码。先考虑某功能是否可以用函数(命令)来实现,如果找不到这样的函数,再考虑用其他代码实现。
【规则5】有时候时间效率和空间效率可能对立,此时应当分析那个更重要,作出适当的折衷。例如多花费一些内存来提高性能。
【规则6】不要在什么时候都只追求紧凑的代码,因为紧凑的代码并不能产生高效的机器码。

(0)

相关推荐

  • 一步一步跟我学易语言之如何较好的输入程序代码

    如何较好地输入程序代码 程序代码输入的几种方法 "易语言"可以直接使用系统汉字输入法,如五笔.全拼.智能ABC.双拼.自然码.二笔输入法等,直接输入中文程序语句. 初次运行易语言时,会在提示夹中显示如何使用易语言的内置输入法.在这里其实已介绍得非常详细了. 这四种内置的输入法分别是:首拼.全拼.双拼.英文.前三种拼音输入法均支持南方音及多音字. 首拼输入法及全拼输入法在系统中被合并为"首拼及全拼输入法",系统自动判别所输入的拼音是首拼方式还是全拼方式. 配置输入法的

  • 一步一步跟我学易语言之如何在程序中使用ActiveX组件

    ActiveX组件 ActiveX(也称为ocx组件),Microsoft对象链接与嵌入定制控件,是目前极为通用的Windows组件格式,易语言从3.2版本开始,就支持了直接在程序中使用此类型的组件.那么,如果您有一个很好用的ActiveX组件,如何使其能够在易语言中使用呢? 步骤如下: 首先,您需要将其包装成可以在易语言中使用的支持库格式,请执行"工具 -> 类型库及OCX组件-〉支持库" 选中您欲在易语言中使用的ocx组件, 如果该组件没有在列表中列出,请单击"注册

  • 一步一步跟我学易语言之初学者的常见问题

    1.初始配置信息 本章及以后所有叙述都假设在安装易语言后,没有使用"工具"→"系统配置"菜单项修改过系统的初始配置信息.如果不能确定,请在启动易语言的同时一直按住Shift键,出现系统界面后再放开,此时将自动清除以前的设置信息. 2.如何去除底图 有时在窗口属性里加了一幅图,现在想去掉,但是没有那个选项,总显示"有数据",此时请选中该属性后直接按Delete键.在最新的版本中,可以用鼠标右键弹出删除的命令. 3.如何消除标签框中"标签&

  • 一步一步跟我学易语言之常数、常量和资源

    常数: 常数为可以直接在程序中使用的数据,它具有以下几种类型: 1.数值型常数.如: 1.100.3.14 等: 2.逻辑型常数.如:真.假 : 3.日期时间型常数.日期时间常数的内容必须用中括号括住,并且应按以下格式之一提供,在书写时年份后的时间部分可以被省略: <1>.[1982年4月23日12时30分25秒] <2>.[1982/4/23/12/30/25] <3>.[1982/4/23/12:30:25] <4>.[1982-4-23-12-30-2

  • 一步一步跟我学易语言之第一个易程序

    开始写第一个易程序 前面我们已经介绍了有关"易语言"界面的一些基本知识,下面就让我们一起来做第一个易程序吧: 在Windows下编程已是非常简单的,比DOS下编程容易得多.因为在DOS下,可视化的程度不高,编程与调试是分开的,要编写一段程序后,再运行一下看看,而且编写菜单与窗口系统非常不容易.而在Windows下,都是所见即所得的编程手法,这样对于普通用户来说,编程就相对容易了. 点击"标签"组件: 在窗体上拉出一个标签组件.形成"标签1". 点

  • 一步一步跟我学易语言之关于程序

    什么是程序? 程序就是运行代码的处发事件.首先我们来认识一下 程序集 ,程序集就是许多子程序的集合每个窗口都有自己的程序集,程序集也可没有窗口如图所示: 下面的 "__启动窗口_创建完毕"程序是窗口组件的触发子程序,那什么是触发子程序呢?触发事件子程序的创建的方法如下图所示. 注:虽然程序集可以改名但窗口组件的触发事件子程序的名称是不可以改的 子程序也可以自己创建,在窗口上单击菜单 "新子程序"如图: 创建完毕我们在子程序的标题上单击 回车键 便会插入参数 (如图)

  • 一步一步跟我学易语言之关于变量

    下面来介绍变量相关的知识. 什么是变量? 顾名思义变量就是一种自身可改变值的可使用的虚拟的质体.简单的说把变量比作一个盒子,当你的东西需要保存时这个盒子派上了用场把你想要存放的东西放到盒子里,如果需要用盒子里的东西就把东西拿出来不需要时再放回去,或这里的部分或全部的不需要了就把这些不需要的拿出去,如果需要更多的就把需要的放进去. 那么我们来创建一个类型为"整数型"的局部变量. 首先在一个子程序下按下 Ctrl+L 插入一个局部变量 就会看见在子程序下出现了变量创建的表格,在类型的那一列

  • 一步一步跟我学易语言之了解易语言的界面

    了解易语言的界面 前面已说过了如何启动易语言,只要双击易语言快捷方式即可.下面,让我们来看看易语言的界面吧. 可以通过菜单"查看"→"工具条",以显示或隐藏这些选择夹: 菜单中列出了易语言的功能命令,通过菜单可完成诸如打开易程序,保存易程序等功能. 新建--新建一个易程序(*.e) 打开--打开一个易程序(*.e) 关闭--关闭已打开的易程序 保存--保存易程序 另存为--以另一个文件名保存易程序 打印--打印程序源代码 系统配置--设置易开发环境选项 支持库配置-

  • 一步一步跟我学易语言之认识窗口组件和子程序

    认识窗口组件(基本常用组件,扩展组件,外部组件) 看到了吗?易语言自带的组件.你会发现,组件工具箱里没有窗口这个组件,其实窗口是一个最基本的组件,其它组件都包容(画)在窗口上.如果要添加窗口,我们可以到易语言菜单的"插入"项,单击"新窗口".或者到工作夹(下图) 要编写出强大.实用的程序,光有窗口是远远不够的,还要有一些常用的组件,如:编辑框.图片框.外形框.画板.分组框.标签.按钮.选择夹.时钟等.它们的添加方法就要简单的多了.用鼠标左键单击要添加的组件,然后将鼠

  • 一步一步跟我学易语言之第二个易程序菜单设计

    下面用一个例程来详细说明,请新建一个程序,进行以下输入操作: 1.在_启动窗口中加入一个画板和一个按钮: 2.使用第二节中所介绍的方法加入四个空常量,将它们分别改为以下内容: 3.使用第三节中所介绍的方法加入一个空图片资源,将其名称改为"测试图片",然后单击"内容"栏或者在其上按下空格,随意导入一个图片文件后,单击"加入/修改到程序并关闭对话框"按钮返回,此时图片数据将被保存入 易程序文件中,图片文件不再被需要: 4.使用第三节中所介绍的方法加入

  • 一步一步跟我学易语言之循环语句

    循环语句 循环,顾名思义,就是反复做同一件事.循环又分为次数循环和条件循环.当我们对一件事重复操作的时候要用到循环语句.在支持库的系统核心支持库中的流程控制里面,有我们以后要用到的循环语句. 次数循环,就是按照一定的次数进行循环.有计次循环首和变量循环首两种. 计次循环首,按照循环次数进行循环,变量1表示当前循环到第几次.开始循环:第一次循环,变量1=1:第二次循环,变量1=2--以此类推.每次循环都是执行循环体内的程序,直到循环完毕才执行以后的程序. 变量循环首,按照指定的起始值和目标值进行循

  • 一步一步跟我学易语言之变量的有效范围

    大家好,今天我们要学习的是变量的知识,还将解答一些初学者的一些常见问题. 什么是变量? 变量是用名称代表一个可变化的值,变量的类型也分多种多样,每种变量类型都是存储的特定的值.变量也好象是一种容器,把所有的数据都存储在变量中. 下面我们就来详细了解变量的有关知识. 变量的有效范围: 所谓变量的有效范围是指,在程序中一个变量可以在哪些地方使用. 变量的有效范围可以分3种: 全局变量 程序集变量 局部变量 现在我们就一一讲解这几种变量的有效范围. 全局变量: 在一个程序中,任何程序集.子程序里都可以

  • 一步一步跟我学易语言之什么是编程

    大家好,今天我们来学习一下什么是编程,如何较好地输入程序代码,还将解答一些初学者的一些常见问题. 什么是编程? 什么是编程呢?简单的说,编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用程序设计语言编写程序代码,并最终得到结果的过程.下面通过分析第一个易程序,来了解什么是编程. 首先我们先来了解一下"_启动窗口"的作用吧,"_启动窗口"的作用是非常重要的,当程序启动后自动调入本窗口. 在属性表中可以看到"名称"一栏的内容为:"

  • 一步一步跟我学易语言之判断与选择

    判断与选择 在编程中,我们写的代码都是按照一定的条件来顺次执行的.当我们要完成某件事情而这件事情又因为不同的原因会产生不同的过程或结果的时候,我们就需要判断所遇到的是哪一种情况,在这种情况下我们要怎么做才可以完成我们要做的事情. 举个日常生活中的简单例子吧.例如:我们住在高楼大厦的18层,上下楼要坐电梯的,这就遇到了电梯的问题.如果某一天电梯坏了,那么我们只能选择走楼梯了:如果电梯正常运行的话,我们是会选择坐电梯的.这就是一个很简单的判断与选择的问题. 根据箭头指向,当电梯=真(电梯是好的),我

  • 一步一步跟我学易语言之关于数组

    什么是数组? 数组就是变量的集合.我们为了节省少用类型重复的变量可把它设为数组. 首先我们把光标停在程序集标题上按下 回车键 就会插入一个程序集变量,我们发现没有静态那一列,可以说明"程序集变量"可以永久储存变量里的内容 (如果有多窗口,许多窗口都需要这个变量我们可把它设为全局变量) ,(如图) (如果想创建全局变量如下图所示) 在上面我们把 "程序集变量"数组的初始成员定为 4 个成员的文本型数组 再创建一个 四个 超级编辑框 和 按钮 及 标签 (如图) 再触发

随机推荐