0

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

但有时我会意识到,在我花了很多时间手动做某事之后,我最好首先将它自动化。

在我开始一些重复的过程之前,有什么经验法则可以帮助我决定是否值得花时间编写脚本来自动化它?

澄清一下:我说的是系统管理员类型的东西,比如移动文件、重命名等等,以及 DBA 类型的东西,比如运行 SQL 脚本来导入某些数据(这就是我今天所做的)。请注意,我是开发人员,而不是系统管理员或 DBA。

4

11 回答 11

8

如该链接所述,我是“三击而你自动化”规则的粉丝。

于 2009-10-29T20:49:47.533 回答
6

我编写脚本的原因包括

什么时候:

  • 你第二次做

  • 它变得不止一步

  • 很容易出错

  • 很容易忘记如何手动操作

于 2009-10-29T20:49:37.333 回答
4

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

如果操作得当,自动化流程应该可以最大限度地减少出错的机会。这可能会导致您实现自动化,即使它不会节省净时间。

当然,另一方面,如果进程自动运行,请务必密切关注它以确保它没有偏离轨道。

于 2009-10-29T20:52:14.020 回答
3

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

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

于 2009-10-30T00:41:59.897 回答
1

如果有一个系统管理的真理,那就是:没有简单的系统管理任务比两次更有趣。如果您发现自己做了两次以上的简单枯燥任务,请将其自动化。

-- http://www.ibm.com/developerworks/linux/library/l-punix.html

于 2009-10-29T20:50:37.697 回答
1

如果您总是重复执行同一组操作,那么自动化可以减少错误来源。

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

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

有时,这只是编写脚本的乐趣;)

于 2009-10-29T20:53:45.400 回答
1

这是一个面向开发人员的网站。

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

下一次,重构和改进它,但只是一点点。记住雅格尼。

第三次,试着把它放在一个漂亮的小包里,你可以给它一些输入,它会运行到完成,在错误条件下做一些明智的事情并记录错误。

希望您使用的不是 shell 脚本,而是真正的脚本语言,如 Python从一次调用。

于 2009-10-29T21:18:44.340 回答
1

我的经验法则:

  • 如果感觉乏味,请花点时间思考如何将其自动化,这将是多少工作以及它可以为您节省多少工作。
  • 如果自动化非常容易或显然可以节省大量工作,请立即开始自动化
  • 如果您决定不自动化并且手动执行它变得非常乏味,或者如果您决定自动化但遇到困难,请再想一想,这次要花更长的时间。
于 2009-10-29T21:35:30.217 回答
0

我的规则很简单:从长远来看,我会节省手动操作还是编写脚本的时间。

如果您只需要执行几次特定任务,然后再也不需要,那么编写脚本可能不值得。但是,如果您需要重复执行任务而只需进行微小的更改,那么编写脚本将节省您的时间。

于 2009-10-29T20:51:09.043 回答
0

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

于 2009-10-29T21:23:23.613 回答
0

我的规则是:当它变成你不再需要考虑的事情时,编写它。如果你还在认真地做这件事,还在学习过程中的一些东西,或者仍然对结果特别感兴趣,那么不要编写脚本。但是,如果它变成了你必须要做的事情才能完成某件事,而这样做是一件苦差事,那就把它写出来吧。

于 2009-10-30T00:16:18.093 回答