2009-10-29 111 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

除了顯而易見之外,編寫腳本的一個原因是因爲編寫腳本的行爲比做任務更有趣,甚至一次 - 您可能會在過程中學到一些東西。

對於很多極客來說,做一些聰明,有趣和有趣的事情勝過其他任何好處;所以在這種情況下,自動化任務可能會很好地滿足這些標準,即使花費時間比手動完成任務花費的時間更長!