saigon ruby meetup 06/10/2015 - 5 random ruby tips

30
5 RANDOM RUBY TIPS Saigon.rb Ruby Meetup By Steven Yap 6th Oct 2015

Upload: futureworkz

Post on 13-Apr-2017

362 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

5 RANDOM RUBY TIPSSaigon.rb Ruby Meetup

By Steven Yap6th Oct 2015

Page 2: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

Steven [email protected]://github.com/stevenyap

Page 3: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips
Page 4: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips
Page 5: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips
Page 6: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips
Page 7: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips
Page 8: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

• Host Saigon.rb Ruby Meetup• Founder of Futureworkz• Ruby on Rails coder• Agile startup consultant• Pretends to be extrovert• Introvert by nature

Page 9: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

Awesome Ruby on Rails Applications for Startupshttp://www.futureworkz.com

https://github.com/futureworkz/playbook

Page 10: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

5 RANDOM RUBY TIPS

Page 11: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#1: INTERPOLATE, NOT CONCATENATE

# concatenateputs “error description” + e.cause.to_s + “happened on: ” + Time.now.to_s

Page 12: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#1: INTERPOLATE, NOT CONCATENATE

# interpolateputs "error description #{e.cause} happened on: #{Time.now}"

Page 13: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#1: INTERPOLATE, NOT CONCATENATE

# interpolateputs "error description #{e.cause} happened on: #{Time.now}”

# concatenateputs “error description” + e.cause.to_s + “happened on: ” + Time.now.to_s

Page 14: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#1: INTERPOLATE, NOT CONCATENATE

• Easier to read

• Automatic #to_s

• Type less

Page 15: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#2: AVOID DOUBLE NEGATIVES

# Double negativesunless !post.published? # do somethingend

Page 16: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#2: AVOID DOUBLE NEGATIVES

# Be positive!if post.published? # do somethingend

Page 17: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#2: AVOID DOUBLE NEGATIVES

# Be positive!if post.published? # do somethingend

# Double negativesunless !post.published? # do somethingend

Page 18: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#2: AVOID DOUBLE NEGATIVES

• Much easier to read

• Makes you think more positively

• Makes you happier (like Ruby)

Page 19: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#3: ARRAY.INJECT

# Sum up all numbers in an arrayarray = [1,2,3,4,5]sum = 0array.each do |number| sum += numberend

return sum # => 15

Page 20: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#3: ARRAY.INJECT

# Sum up all numbers in an arrayarray = [1,2,3,4,5]array.inject(0) { |sum, number| sum + number } # => 15

Page 21: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#3: ARRAY.INJECT

# Sum up all numbers in an arrayarray = [1,2,3,4,5]array.inject(0) { |sum, number| sum + number } # => 15

# Sum up all numbers in an arrayarray = [1,2,3,4,5]sum = 0array.each do |number| sum += numberend

return sum # => 15

Page 22: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#3: ARRAY.INJECT

• Easier to read (once you get used to it!)

• Shorter code

• Common Ruby idiom

Page 23: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#4: CHAIN ARRAY METHODS

# Given an array, return a new array with # Only even numbers# The numbers are multiplied by 3# Reject all numbers that are greater than 20

array =[1,2,3,4,5,6,7,8,9,10]

result = []array.each do |x| if x % 2 == 0 result << x * 3 if x * 3 < 21 endend

return result # => [6, 12, 18]

Page 24: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#4: CHAIN ARRAY METHODS

# Given an array, return a new array with # Only even numbers# The numbers are multiplied by 3# Reject all numbers that are greater than 20

array =[1,2,3,4,5,6,7,8,9,10]array.select { |x| x % 2 == 0 }.map { |x| x * 3}.reject { |x| x > 20}# => [6, 12, 18]

Page 25: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#4: CHAIN ARRAY METHODS

• More expressive

• Shorter code

• Common Ruby idiom

Page 26: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#5: ZERO DIVISION ERROR

1/0# ZeroDivisionError: divided by 0

Page 27: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#5: ZERO DIVISION ERROR

1/0.0 # => Infinity

Page 28: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips
Page 29: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

#5: ZERO DIVISION ERROR

• No idea how it can be helpful to you

• But it is fun to know

• Makes you happier (like Ruby!)

Page 30: Saigon Ruby Meetup 06/10/2015 - 5 Random Ruby Tips

THANK YOU