找回密码
 加入
搜索
查看: 6653|回复: 7

[原创] 用户自定义函数编写规范[试译]

  [复制链接]
发表于 2013-1-18 16:52:08 | 显示全部楼层 |阅读模式
本帖最后由 虫子樱桃 于 2013-1-18 17:07 编辑

翻译:虫子樱桃
原文链接:http://www.autoitscript.com/autoit3/udfs/UDF_Standards.htm


  此页内容对如何提交AutoIt自定义函数做了简单的介绍,如果代码依据以下标准进行提交并且包含以下两个文件,那么对我而言将是莫大的帮助。这两个文件一般而言,是这样的:
    Catagory.au3 (在#include语句中引用的文件名)
    Functionname.au3 (在帮助文件中使用的例子文件名称)
值得说明的是,我们只会收录有普遍易用性的用户自定义函数。但是如果您还是想让您的自定义函数被收录:-),那么:
  依照以下对于文件的说明.
  确保您的自定义函数在使用“-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6”参数运行AU3Check时,没有出现错误;
  确保您的自定义函数的编码是整齐的;
  您可以通过论坛消息或者邮件发送包含自定义函数和例子的zip文件给我(GaryFrost 或者 "Gary@ autoitscript.com")
  对于那些想查阅类库/模版文件的童鞋:创建一个模版程序
Thanks,
Gary

用户自定义函数编码标准

函数名称
        所有函数名称必须以一个下划线'_'开头
        函数名中的每个单词首字母必须大写(注:原文中未提明是首字母还是整个单词,根据使用习惯,这里使用首字母)。
        函数名称的首单词需使用一般的分类词如:“Date”, “String”, “Array”, “Network”,等开头以描述函数的功能。如果分类词较长,如“Windows”,那么可以使用该词的缩略词或常用的习惯缩写(例如,“Win”是Windows的习惯缩写,“Net”则是“NetWork”的缩写词)
        所有函数命名规范必须严格遵守AutoIt现有内置函数的命名规范

变量名称
        在美元符号($)后的字母应被用来指定函数中该变量在函数中被引用的数据类型。下面的列表列出的是不同字母前缀及其不同的含义。
        $a<其他字母> - 数组 (紧接着的这字母描述的含义,请参考下面的其他字母前缀说明)
        $b - 二进制数据库
        $h - 文件或窗口句柄
        $i - 整数
        $f - 布尔值(True或者False)
        $n - 浮点数
        $s - 字符串
        $v - 变量 (未知类型/变量类型数据)      
        余下部分的变量名称使用大写的单词来描述变量的作用。类似“$iC”的变量名称是不可被接受的。而"$aiWeekDayNames" 或者 "$iCounter" 这样的变量名将会更有意义。
        所有变量在第一次使用之前必须在UDF的开头使用local进行申明。“Dim”和“Global”关键字在UDF中使用是会引起歧义的,因此需要避免在UDF中使用这两个关键字。
        当函数中有该变量数据在被更新后需要返回时,所有变量名应该使用Byref关键字,通过函数参数进传递。
参数
       参数命名也必须使用与变量名一样的命名规则
       每个参数都必须检查参数的有效性并返回适当的错误代码
      如果参数被用做传递数据回调用脚本 (ByRef),那么函数的说明文档必须明确地写出该情况。

函数说明文档
    所有的函数必须在函数的顶部附上相关的函数说明文档。以下是函数说明文档的格式:
; #FUNCTION# ;===============================================================================
;
; Name...........: _DateDiff
; Description ...: Returns the difference between 2 dates, expressed in the type requested
; Syntax.........: _DateDiff($sType, $sStartDate, $sEndDate)
; Parameters ....: $sType - One of the following:
;                  |D = Difference in days between the given dates
;                  |M = Difference in months between the given dates
;                  |Y = Difference in years between the given dates
;                  |w = Difference in Weeks between the given dates
;                  |h = Difference in hours between the given dates
;                  |n = Difference in minutes between the given dates
;                  |s = Difference in seconds between the given dates
;                   $sStartDate  - Input Start date in the format "YYYY/MM/DD[ HH:MM:SS]"
;                   $sEndDate    - Input End date in the format "YYYY/MM/DD[ HH:MM:SS]"
; Return values .: Success - Difference between the 2 dates.
;                  Failure - Returns 0 and Sets @Error:
;                  |0 - No error.
;                  |1 - Invalid $sType
;                  |2 - Invalid $sStartDate
;                  |3 - Invalid $sEndDate
; Author ........: Jos van der Zande
; Modified.......:
; Remarks .......:
; Related .......: _DateAdd
; Link ..........;
; Example .......; Yes
;
; ;==========================================================================================
Func _DateDiff($sType, $sStartDate, $sEndDate)

.

函数帮助文件文档
   所有提交的UDF函数必须包含一个除UDF外的额外文件以便于收入AutoIt帮助文件中。
(例子:)

#include <Date.au3>

; Calculated the number of seconds since EPOCH (1970/01/01 00:00:00) 
$iDateCalc = _DateDiff( 's',"1970/01/01 00:00:00",_NowCalc())
MsgBox( 4096, "", "Number of seconds since EPOCH: " & $iDateCalc )

; Calculated the number of Hours this year 
$iDateCalc = _DateDiff( 'h',@YEAR & "/01/01 00:00:00",_NowCalc())
MsgBox( 4096, "", "Number of Hours this year: " & $iDateCalc )

评分

参与人数 1金钱 +30 贡献 +2 收起 理由
annybaby + 30 + 2 非常通俗易懂,辛苦了~~~

查看全部评分

发表于 2013-1-18 16:57:48 | 显示全部楼层
学习多谢楼主
发表于 2013-1-21 11:48:42 | 显示全部楼层
挺好的文档,谢谢分享。
发表于 2013-1-23 18:57:37 | 显示全部楼层
支持
规范的编程习惯对自己也有好处
发表于 2013-1-23 20:30:36 | 显示全部楼层
代码风格看出一个人的性格
发表于 2013-1-24 12:07:06 | 显示全部楼层
回复 1# 虫子樱桃


    谢谢楼主,学习一下
发表于 2016-4-16 01:00:19 | 显示全部楼层
用户自定义函数编写规范

评分

参与人数 1威望 -1 收起 理由
afan -1

查看全部评分

发表于 2018-1-12 19:32:20 | 显示全部楼层
感谢分享!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-21 21:59 , Processed in 0.071136 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表