2017-08-05 38 views
0

我一直在試圖讓我的方法很短,並且在此過程中結束了線,如:如何避免將我的變量命名爲與我在ruby中的方法名稱相同的內容?

processor = processor(arg1, arg2)

當它使一個很大的意義的變量具有相同的名稱作爲方法。所以我聽說我可以用self.在這一行中闡明我正在使用這種方法,但這似乎仍然會導致解釋器出現問題,更不用說讀取代碼了。但使用get_的前綴方法也感覺很奇怪。有任何想法嗎?

+1

首先,處理器=處理器(arg1,arg2)是什麼問題?這是合法的,你不需要任何'self'和/或'get_'。 – mudasobwa

+1

'處理器'方法有什麼作用?可能會有更好的名字? 'build_processor'?除此之外:請參閱@mudasobwa的評論。 –

+0

也許這只是我,但我不明白這個問題。無論你想要什麼,你都可以命名變量和方法。只需選擇最合適的名稱。或者我錯過了什麼? – spickermann

回答

2

從句法上,你在做什麼沒有問題,但它確實有可能使你的代碼有點混亂。你可以使用實例變量@processor而不是局部變量processor來使變量和方法之間的區別更加明顯,但取決於你在哪裏使用它,這可能有副作用,因爲它將在整個self中可用,而不僅僅是在本地範圍。

或者,由於您的本地變量在可讀性方面沒有增加太多價值,您可以直接在需要返回值的地方直接調用該方法。

您的版本:

processor = processor(:arg1, :arg2) 
# do some stuff 
do_something_else_with(processor) 

消費直接返回值:

do_something_else_with(processor(:arg1, :arg2)) 

另外值得一提的是,如果你的方法有元數爲0(即無參數),那麼你可以運行進入問題 - 正如你所說的,你必須使用self或在你的方法調用中添加空圓括號(非紅寶石般的):

def processor 
return 'something' 
end 

processor = processor 
#=> nil 

processor 
#=> nil 

processor = processor() 
#=> 'something' 

processor = self.processor 
#=> 'something' 

最終,首先使用不同名稱符合您的利益。不容易,但值得花時間。作爲一名智者once tweeted,「計算機科學中有兩件棘手的事情:緩存失效,命名事物和錯誤的錯誤」。

+0

您的意思是不同的名稱,變量的不同名稱和方法的不同名稱? – meisel

+0

就是這樣。例如,在你的問題中,我可能會去'processed = process(x)' – omnikron

相關問題