我正在编写一个程序来更好地学习编程,我希望使用RSpec,这样我也可以学习。但是,因为代码不是特别RSpec友好,所以我需要将它分解为方法,以便我可以测试它。
我不需要任何人为我编写代码,但也许可以解释我如何分解代码。我是编程新手,这种事情(将事情分解为方法)对我来说是一个非常困难的概念。
这就是我所拥有的:
if params[:url] != ''
url = params[:url] #line created so I can return url more easily (or, in general)
words = params[:word].gsub("\n", ",").delete("\r").split(",") #.delete redundant?
words.reject!(&:empty?)
words.each(&:lstrip!)
return "#{words}", "#{url}" #so that I can return url, not sure how to do that yet
end
代码是一个SERP检查器,需要一个网址和关键字,并检查它们在搜索引擎中的位置。
对于网址,它只是用户希望检查的网站的网址...换句话说,这将是他们希望在Google中检查其网站的关键字..用户可以填写输入形式如此:
Corn on the cob,
Fibonacci,
StackOverflow
Chat, Meta, About
Badges
Tags,,
Unanswered
Ask Question
答案 0 :(得分:1)
您的代码采用草率字符串并将其转换为干净的数组。首先清理字符串,然后抛光数组。您可以为这些操作定义方法。
def clean_up_words(str)
#code to clean str
str
end
def clean_up_list(arr)
#code to clean arr
arr
end
dirty_list = clean_up_words( params[:word]).split(',')
clean_list = clean_up_list( dirty_list )
答案 1 :(得分:1)
def foo params
url = params[:url]
url.empty? ? nil : [params[:word].scan(/[^\s\r,]+/), url]
end
url = params[:url]
。如果你打算这样做,你应该在你引用相同内容的其他地方之前这样做,以减少[]
上的param
号召唤量。scan(/[^\s\r,]+/)
。