AutoIt 最佳实践/编码风格

Posted

技术标签:

【中文标题】AutoIt 最佳实践/编码风格【英文标题】:AutoIt best practices / coding style 【发布时间】:2012-02-24 22:28:00 【问题描述】:

我维护 Autoit 项目,用于对 Swing 应用程序进行自动化测试。这些测试现在有大约 70 个文件。如果不遵循一些“最佳实践”,很难维护所有这些代码似乎还不够。

我一般有这几种功能:

一些通用功能(插入带有日志记录的文本、从组合框中选择或读取..) 一些特定于屏幕的功能(填写一张表格..) 一些数据/逻辑功能 - 测试应用逻辑和数据处理 测试用例函数 - 结合前 3 个实现一些测试场景

AutoIt 没有类 => 没有继承 => OOP 原则很难应用(:D 清楚)

有人对用 AutoIt 编写的大型应用程序有一些经验吗?我的看法是,AutoIt 适用于小于 500 行的脚本,对于这个大项目来说不是很好的选择。

很遗憾,AutoIt 没有一些有用的 IDE。

【问题讨论】:

【参考方案1】:

AutoIt 开发人员希望确保任何用 AutoIt 编写的作为核心库一部分的函数(简称:UDF)都遵循特定的代码风格。你可以在这里找到这个标准:http://www.autoitscript.com/autoit3/udfs/UDF_Standards.htm 社区中的许多程序员都在这个标准中编写了所有的 AutoIt 代码。

关于 IDE。 SciTE 是经过时间考验的代码编辑器,但作为 IDE,它的性能足够了。还有另外两个由社区开发和维护的 IDE:

图形调试器(F10 下一步功能)http://www.autoitscript.com/forum/topic/21834-graphical-autoit-debugger/

ISN AutoIt 工作室http://www.autoitscript.com/forum/topic/136766-isn-autoit-studio/

最后一个是相当新的,但它看起来非常有前途,它可能更适合您的项目。

最后,我有一个警告。您说“OOP 原则很难应用”,但即使是 OO 程序员,在学习 OOP 之前,您也应该对如何编写非 OO 代码有一个strong核心思想。大多数 OO 语言的核心都是命令式的,所以你应该已经是一个优秀的命令式编码器了。 AutoIt 也是必不可少的。

有用的 IDE 无法解决您的问题!但这会让它们稍微更容易管理。

我不知道您在哪里听说 AutoIt 仅在 500 行以下的脚本中表现良好,但每次您 #include 一个默认库时,您都会添加大约 10000 行代码。如果您可以编写正确的代码,您将构建自己的库,而不会增加其余代码的复杂性。

【讨论】:

我不同意你的观点,即有用的 IDE 将使我的代码稍微更易于管理。由于 CTRL+(单击函数)和 CTRL+SPACE 代码帮助(这部分适用于 scite(仅适用于本机函数),我必须承认,像 eclipse 这样的 IDE 将对所有已编写的代码(不是我编写的)的方向产生巨大影响,程序化编程不是我最强的能力,但继承会立即解决我的问题。 除了官方的 AutoIt 标准页面,还有this page 稍微详细一些,并在某些方面进行了扩展。编辑:补充一下,我亲自编写了 5000 行左右的 AutoIt 项目,其他人写的甚至更大。 +1 ISN AutoIt 看起来真不错。 @UltraMaster 你应该看到 ISN AutoIt 是在多少行中制作的。它纯粹是在 AutoIt 中制作的!【参考方案2】:

由于 AutoIt 没有(如您所提到的)OO 语言的启用特性,我认为这里的部分答案是看看 AutoIt 有什么以及最适合它的范式。我很清楚 AutoIt 是一种旨在使用过程编程方法完成的语言。对我来说,回到那种思维方式的那些方法实际上有点有趣。我的大型程序最终,重点是正确定义计算模块,传递到模块(并返回)的内容。如果您严重错过了 OO 的好处,我认为接下来要关注的是范围界定——尽量保持范围紧凑。

最后一点,我认为使用过程式编程技术通常最终会在功能启动并运行后创建一个单独的重构任务。

A place to start...but this was the dominant paradigm for decades

【讨论】:

【参考方案3】:

你说得对 AutoIt 不是 OOP 语言。它可能不是你要找的东西,但它可能会给你一些想法。看看这里: https://autoit-gui-skeleton.github.io/

AGS - Autoit Gui 骨架

AGS 建议提供一种架构和工具,以使用 AutoIt 高效构建桌面应用程序 Windows。我已经认为它可以让我在维护几个 AutoIt 应用程序时变得更轻松,并且让我免于执行生成 Windows 设置等重复性任务。

尚未发布稳定版本。最后一个版本是v1.0.0-alpha (2018.07.10)

主要特点

Autoit 源代码组织:AGS 建议使用约定和标准化架构来简化代码组织,从而简化其可维护性

Autoit 依赖管理器:为了管理依赖,AGS 使用 NodeJS 生态系统及其依赖管理器 npm 和 Yarn。

生成设置:AGS 提供了一个过程和功能,以促进基于 InnoSetup 解决方案生成 Autoit 应用程序的 Windows 安装程序(设置)。

AGS 架构概述

应用程序的所有 AutoiT 源代码都存储在 ./src 目录中。后者有目录和特殊文件。

见https://autoit-gui-skeleton.github.io/documentation/code-organization

【讨论】:

以上是关于AutoIt 最佳实践/编码风格的主要内容,如果未能解决你的问题,请参考以下文章

React 整洁代码最佳实践

C++最佳实践 | 2. 代码风格

C++最佳实践 | 2. 代码风格

C 编程最佳实践(书写风格)

Swift 风格:函数返回您需要的类型的可选类型以便继续,处理此问题的最佳实践是啥?

结合异步模型,再次总结Netty多线程编码最佳实践