刚刚从天津搬到北京,好累,先发段代码,让大家帮忙查查错。继续搞之前的问题。
class Text
def demo(_score,_data)
if _score < 60
puts "不及格"
elsif 60 <= _score <= 80
puts "良好"
else
puts "优秀"
end
unless _score < 90
puts "三好生"
else
puts "要好好努力"
end
case _data
when "星期一": puts "今天是星期一"
when "星期二": puts "今天星期二"
when "星期三": puts "今天星期三"
when "星期四": puts "今天星期四"
when "星期五": puts "今天星期五"
else
puts "今天周末"
end
end
end
你是忍受不了 _name 这种命名方式么?我觉得它挺好的,而且 rails 里也有 @_name 这种方式的变量。
eslif 的确不好,也不方便理解,when...case..是最佳选择。
unless .... else ... end
的阅读感极差!!!
60 <= _score <= 80
这样的表达的,事实上,这里只需要用 _score <= 80
就行了when
语句不能用冒号分隔,用 then
或者 分号。_score
都拼错了。。。下划线需要去掉。这条函数接受的是外部参数,下划线会引起混淆。即使是在 Rails 里面,下划线的变量也是少数,代表给库用的而一般不给用户使用。
任何程序,写成一串when "星期一": piuts "今天是星期一"
都是该批评的。
简单一点可以这样
return puts puts "今天周末" if data == "星期六“ || data == ”星期天“
puts ”今天#{data}“
另一个问题是,即使是 demo, 输出的几个部分都毫不相干。应该分成几个函数。
官方风格指导里推荐 case when 垂直对齐
case
when song.name == 'Misty'
puts 'Not again!'
when song.duration > 120
puts 'Too long!'
when Time.now.hour > 21
puts "It's too late"
else
song.play
end
ruby
def demo(_score, _date)
a = meth1(_score)
b = meth2(_score)
c = meth3(_date)
puts a,b,c
end
Google 下 ctags, 如果仅仅用 Ruby 的话,有更好的,叫做:ripper-tags.
就是为所有的方法建立一个索引,这个索引文件按照惯例,叫做 TAGS, 大多数编辑器都支持使用 TAGS 文件来方便的定位一个方法的位置。