Slide 1

Slide 1 text

@PauloAncheta

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

A Pull Request Has Been Submitted

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

1. Remove @instance_variables

Slide 11

Slide 11 text

# test.rb puts @car puts car $ ruby test.rb NameError: undefined local variable or method `car` for main:Object

Slide 12

Slide 12 text

# test.rb puts “#{@car} #{car}” $ ruby test.rb NameError: undefined local variable or method `car` for main:Object

Slide 13

Slide 13 text

# test.rb puts @car.class puts “This car is #{@car}” $ ruby test.rb NilClass This car is

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

# test.rb puts “This car is #{@car.capitalize}” $ ruby test.rb NoMethodError: undefined method `capitalize’ for nil:NilClass

Slide 16

Slide 16 text

2. Avoid Hash[key]

Slide 17

Slide 17 text

Hash[ ]

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

# test.rb hash = {a: {b: {c: {d: “ ”}}}} puts hash[:a][:b][:c][:d] $ ruby test.rb

Slide 21

Slide 21 text

# test.rb hash = {a: {b: {c: {z: “ ”}}}} puts hash[:a][:b][:c][:d] $ ruby test.rb # nil

Slide 22

Slide 22 text

# test.rb hash = {a: {b: {z: {d: “ ”}}}} puts hash[:a][:b][:c][:d] $ ruby test.rb NoMethodError: undefined method `[]' for nil:NilClass

Slide 23

Slide 23 text

# test.rb hash = {a: {b: {c: {d: “ ”}}}} puts hash.dig(:a, :b, :c, :d) $ ruby test.rb

Slide 24

Slide 24 text

# test.rb hash = {a: {y: {c: {d: “ ”}}}} puts hash.dig(:a, :b, :c, :d) $ ruby test.rb # empty output

Slide 25

Slide 25 text

hash = {a: {y: {c: {d: “ ”}}}} puts hash.fetch(:a) .fetch(:b) .fetch(:c) .fetch(:d) $ ruby test.rb KeyError: key not found: :b # test.rb

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

3. (rails) Use ! more

Slide 28

Slide 28 text

3. (rails) Use ! more

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

$ bin/rails c irb(main):1:0> Account.first.update(name: “this is too long”) Account Load (0.4ms) SELECT `accounts`.* FROM `accounts` ORDER BY `accounts`.`id` ASC LIMIT 1 (0.1ms) BEGIN Account Exists (0.2ms) SELECT 1 AS one FROM `accounts` WHERE (`accounts`.`token` = BINARY 'a6db14e97e1f9fe7' AND `accounts`.`id` != 1) LIMIT 1 (0.1ms) ROLLBACK false

Slide 31

Slide 31 text

$ bin/rails c irb(main):1:0> Account.first.update!(name: “this is too long”) Account Load (0.4ms) SELECT `accounts`.* FROM `accounts` ORDER BY `accounts`.`id` ASC LIMIT 1 (0.1ms) BEGIN Account Exists (0.2ms) SELECT 1 AS one FROM `accounts` WHERE (`accounts`.`token` = BINARY 'a6db14e97e1f9fe7' AND `accounts`.`id` != 1) LIMIT 1 (0.1ms) ROLLBACK ActiveRecord::RecordInvalid: Validation failed: Name is too long (maximum is 20 characters) … … …

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Conclusion

Slide 34

Slide 34 text

No content