如CVS或是Subversion等版本控制系統都有一個"關鍵字替換"功能,就是如果你在source code裡加入了像是$date$或是$author$等字眼,又打開了關鍵字替換功能,那麽$date$會被展開為最後送交的時間戳記,$author$會被展開為送交這份文件的使用者名稱。其他還有更多關鍵字,端看使用的程式和版本。
聽起來很棒,不是嗎?你可以在文件裡自動加上版本管理資訊,每個人看了都一目了然。
聽起來很棒,不是嗎?你可以在文件裡自動加上版本管理資訊,每個人看了都一目了然。
不過很多人不是這麼想的,我們來看看嘴砲名人Linus Trovalds怎麼說。
大致上提到的缺點有這些:
大致上提到的缺點有這些:
它會擾亂merge或是diff工具的行為,因為每次的送交,keyword expansion都會改變,這就導致了VCS每次都要紀錄這些改變,有時候conflict就會發生。想想看你要處理的conflict竟然不是發生在程式碼而是在註解裡的關鍵字吧,心情肯定不會太愉快。
對於二進位檔案[?]來說,keyword expansion是不該發生的。然後你就要小心哪些檔案不該使用keyword expansion。
在VCS裡,這些送交資訊可以很輕易地用log或是info之類的功能查到,而且更詳盡。而當你把source code拿出VCS時,把資訊寫在檔案裡或許是有道理的[?],但是這個工作應該是交給VCS之外的軟體去做,因為它是在拿掉VCS資訊時才做的事。
綜合以上理由,Torvalds老大才會說關鍵字替換是一種弱智的行為,還好他的名字叫Linus Torvalds。
沒有留言:
張貼留言