2012-09-28 46 views
1

my previous question之後,答案(@Andy H)表示相關問題是陳述的順序。因此,一般來說,是否具有「before-after statement dependencies」的「正確」/「正確」?也就是說,舉例來說,如果我有以下工作代碼根據其他陳述的順序進行陳述是否是一個好主意?

class Article < ActiveRecord::Base 
    acts_as_list ... 

    include MyModule 
end 

和下面的代碼做工作

class Article < ActiveRecord::Base  
    include MyModule 

    acts_as_list ... 
end 

有一些「壞」的理由不繼續該課程的實施?也就是說,一般來說,是一個好主意,可以使語句依賴於其他語句的順序?

+1

爲什麼從模塊中添加'acts_s_list'行爲,因爲它們是綁定的? – apneadiving

+0

@apneadiving:有時你會包含一個依賴於類中某些方法的自定義實現的模塊(例如:'<=>'和'Enumerable'),原則上沒有任何問題。 – tokland

回答

2

我認爲這不是一個「好」與「壞」的問題。

它恰好是從上到下執行代碼的情況。

所以,如果你有statement_a一些代碼,依賴於隨後statement_bstatement_a之前把statement_b添加行爲是唯一的解決辦法...

0
  1. 你的情況:是的,這是不能接受的。從概念上講,訂單在那裏並不重要,這是強制執行固定訂單的實施。不太好。

  2. 一般來說:當然像Ruby這樣的非懶惰語言中,語句的順序很重要。但是x = 1; y = 2 * x中的順序「依賴」與涉及狀態和副作用的順序不同(愚蠢的例子:x = []; x << 1 if condition1?; x << 2 if condition2?; x)。