LOOPS:
GOOD
if success?
message = 'PASS'
else
puts 'failure'message = 'FAIL'
end
GOOD
if x != 10
...
end
BAD
unless x < 10
...
end
GOOD
if x >= 10
...
end
GOOD
if x > 10
...
end
GOOD
[0, 1, 2, 3].each do |item|
next unless item > 1
puts item
end
STATEMENTS:
The and, or, and not keywords are banned. It's just not worth it. Always use &&, ||, and ! instead.
Do not include space inside block parameter pipes. Include one space between parameters in a block. Include one space outside block parameter pipes.
BAD
{}.each { | x, y |puts x }
GOOD
{}.each { |x, y| puts x }
GOOD
(0...coll).each do |item|
GOOD
nil?
GOOD
x += y
x *= y
x **= y
x /= y
x ||= y
x &&= y
STRINGS:
GOOD
var = "This #{foobar} is interpolated."
GOOD
message = "This is the #{result}."
GENERAL:
Never leave commented-out code in our codebase.
Use snake_case for naming files and directories
Use block comments if comments are more than 2 lines:
BAD
GOOD
=begin
1st comment line
2nd comment line
3rd comment line
=end
FUNCTIONS:
GOOD
def obliterate(things, options = {})
options = {
:gently => true, # obliterate with soft-delete
:except => [], # skip obliterating these things
:at => Time.now, # don't obliterate them until later
}
...
end