2009-10-29 92 views
1

有时我发现自己需要做一些可以自动化或可以手动操作的东西。例如。我只运行了一次特定的脚本8次,在每次运行之间做了一些小改动。我当然可以编写一个脚本来自动执行此操作,但在这种情况下,我决定每次手动运行它都会更快。如何决定何时编写脚本而不是手动编写脚本?

但是有时候我会意识到,在我花了一大堆时间去做一些手动操作的事情之后,我最好先把它自动化。

在我开始一些重复的过程之前,对于经验法则的任何建议都可以帮助我决定是否值得投入时间编写脚本以自动执行它?

澄清:我谈论的东西的种类是系统管理员类型的东西,如移动文件,重命名事物等,以及DBA类型的东西,如运行SQL脚本导入某些数据(这是什么我今天在做)。请注意,我是开发人员,而不是系统管理员或DBA。

回答

4

的原因,我有脚本包括

当:

  • 你这样做第二次

  • 它变得更比一步

  • 很容易出错

  • 很容易忘记如何做手工

8

我是“Three Strikes and you Automate”规则的粉丝,因为在该链接描述。

+0

太棒了。描述我的情绪。它现在正在我的桌子上。 – 2009-10-29 20:51:20

+0

+1我总是遵循这个规则,而且我还没意识到有人把它封装得很好 – 2009-10-29 21:06:45

0

我的规则很简单:从长远来看,我会节省时间做手工或编写剧本。

如果您需要仅执行几次特定任务,然后再也不再执行,则可能不值得编写脚本。但是,如果您只需稍作更改就需要重复执行该任务,则使用脚本可以节省时间。

4

不要只考虑在自动化过程中可能会看到或可能看不到的时间节省。还要考虑手动运行进程可能导致错误的可能性。

正确完成后,自动过程应该尽量减少出错的机会。这可能会导致您自动化,即使它不会节省净时间。

当然,如果一个进程自动运行,一定要密切关注它以确保它没有脱轨。

1

如果自动化操作始终是您重复执行的同一组操作,则自动化会减少错误源。

几年前,当我开始使用我的一个(asp.net)项目时,我有一个手动发布过程,覆盖了3个书面页面。我一步一步将该工作迁移到构建批处理文件(使用命令行选项等来选择单个操作或一切)。

脚本一旦完成,它就完美无瑕地完成了,每次运行都为我节省了一小时的手动工作。

有时,它只是写一个剧本的乐趣;)

1

这是开发者的网站。

如果您认为您可能需要再次执行相同操作,请立即自动执行。但是不要忘记像YAGNI这样的法律(你不会需要它)并且避免在自动化上花费太多时间。现在只需要一点点哄就能找到适合你的东西。

下一次,重构和改进它,但只有一点。记住YAGNI。

第三次尝试将它放在一个漂亮的小包中,您可以在其中输入一些信息,然后运行完成,在错误情况下做出明智的事情并记录错误。

希望你没有使用shell脚本,而是使用像Python这样的真正的脚本语言,你可以调整代码并随时改进它,直到它成为一个能够远程运行的成熟的自动化框架,通过一次调用管理数千台服务器。

0

优秀的程序员往往懒惰,因为他们试图用最少的精力和时间来做事。所以如果它能节省总时间,这可能是值得的。

1

我的经验法则:

  • 如果感觉单调乏味,花了片刻思考aobut你怎么可能自动执行它,多少工作,这将是和多少工作它可以为您节省。
  • 如果这将是非常容易实现自动化或将明显节省了大量的工作,开始自动化马上
  • 如果你决定不来自动化和做手工变得痛苦繁琐,或者如果你决定自动化,但遇到困难,再想一想,这一次更长。
0

我的规则是这样的:当它成为你不再想要考虑的东西时,编写它。如果你仍然在做这件事,那么仍然对这个过程有所了解,或者对结果特别感兴趣,不要编写它。但是,如果它变成了你为了完成某件事而必须做的事情,并且做这件事很麻烦,那就把它编出来。

2

除了显而易见之外,编写脚本的一个原因是因为编写脚本的行为比做任务更有趣,甚至一次 - 您可能会在过程中学到一些东西。

对于很多极客来说,做一些聪明,有趣和有趣的事情胜过其他任何好处;所以在这种情况下,自动化任务可能会很好地满足这些标准,即使花费时间比手动完成任务花费的时间更长!