all the little things (rubyonales)

all the little things (rubyonales)

66ad01cf37c098bfdb76906a490e018f?s=128

Sandi Metz

March 07, 2014
Tweet

Transcript

  1. 5.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        #  ...    end end Friday, March 7, 14
  2. 6.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        #  ...    end end Friday, March 7, 14
  3. 7.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        #  ...    end end Friday, March 7, 14
  4. 8.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        #  ...    end end Friday, March 7, 14
  5. 9.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        #  21  more  lines    def  tick        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end end Friday, March 7, 14
  6. 10.

    @sandimetz Mar 2014    def  tick        #

     22  previous  lines        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end    def  tick        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end end Friday, March 7, 14
  7. 11.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end Friday, March 7, 14
  8. 12.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end 44.7 0 25 50 big conditional Complexity (Flog) Friday, March 7, 14
  9. 13.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end 44.7 0 25 50 big conditional Complexity (Flog) 50 Friday, March 7, 14
  10. 14.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end 44.7 0 25 50 big conditional Complexity (Flog) 45 tick 50 Friday, March 7, 14
  11. 15.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end Friday, March 7, 14
  12. 17.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end Friday, March 7, 14
  13. 18.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end Squint Test Friday, March 7, 14
  14. 19.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end changes in shape Friday, March 7, 14
  15. 20.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end 2 Friday, March 7, 14
  16. 21.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end changes in color Friday, March 7, 14
  17. 22.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end Friday, March 7, 14
  18. 23.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end Friday, March 7, 14
  19. 24.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end 16 if statements Friday, March 7, 14
  20. 25.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end 16 if statements 7 != Friday, March 7, 14
  21. 26.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end 16 if statements 7 != 2 != with && Friday, March 7, 14
  22. 27.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end 16 if statements 7 != 2 != with && 3 magic strings Friday, March 7, 14
  23. 28.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end 16 if statements 7 != 2 != with && 3 magic strings ? magic numbers Friday, March 7, 14
  24. 29.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end magic strings Friday, March 7, 14
  25. 30.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end ‘Aged  Brie’ magic strings Friday, March 7, 14
  26. 31.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end ‘Aged  Brie’ ‘Sulfuras,  Hand  of  Ragnaros’ magic strings Friday, March 7, 14
  27. 32.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end ‘Aged  Brie’ ‘Sulfuras,  Hand  of  Ragnaros’ ‘Backstage  passes    to  a  TAFKAL80ETC  concert’ magic strings Friday, March 7, 14
  28. 33.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end it has tests Friday, March 7, 14
  29. 34.

    @sandimetz Mar 2014 #  Running: S..S.S...S..........S....S..... Fabulous  run  in  0.002800s,

     11071.4286  runs/s,  17857.1429  assertions/s. 31  runs,  50  assertions,  0  failures,  0  errors,  6  skips Friday, March 7, 14
  30. 35.

    @sandimetz Mar 2014 #  Running: S..S.S...S..........S....S..... Fabulous  run  in  0.002800s,

     11071.4286  runs/s,  17857.1429  assertions/s. 31  runs,  50  assertions,  0  failures,  0  errors,  6  skips Friday, March 7, 14
  31. 36.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

       def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound    def  test_backstage_pass_very_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_lower_bound    def  test_backstage_pass_very_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_on_sell_date    def  test_backstage_pass_after_sell_date Friday, March 7, 14
  32. 37.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

       def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound    def  test_backstage_pass_very_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_lower_bound    def  test_backstage_pass_very_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_on_sell_date    def  test_backstage_pass_after_sell_date brie Friday, March 7, 14
  33. 38.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

       def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound    def  test_backstage_pass_very_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_lower_bound    def  test_backstage_pass_very_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_on_sell_date    def  test_backstage_pass_after_sell_date brie sulfuras Friday, March 7, 14
  34. 39.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

       def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound    def  test_backstage_pass_very_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_lower_bound    def  test_backstage_pass_very_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_on_sell_date    def  test_backstage_pass_after_sell_date brie sulfuras backstage  pass Friday, March 7, 14
  35. 40.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

       def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound    def  test_backstage_pass_very_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_lower_bound    def  test_backstage_pass_very_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_on_sell_date    def  test_backstage_pass_after_sell_date brie sulfuras backstage  pass normal Friday, March 7, 14
  36. 41.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound let’s look at a test Friday, March 7, 14
  37. 42.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound Friday, March 7, 14
  38. 43.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound Friday, March 7, 14
  39. 44.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound Friday, March 7, 14
  40. 45.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound name Friday, March 7, 14
  41. 46.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound name quality Friday, March 7, 14
  42. 47.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound name quality days_remaining Friday, March 7, 14
  43. 48.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound Friday, March 7, 14
  44. 49.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound Friday, March 7, 14
  45. 50.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound Friday, March 7, 14
  46. 51.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound Friday, March 7, 14
  47. 52.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound Friday, March 7, 14
  48. 53.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

           item  =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end    def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound reduced by 1 Friday, March 7, 14
  49. 54.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_conjured_item_before_sell_date

       def  test_conjured_item_at_zero_quality    def  test_conjured_item_on_sell_date    def  test_conjured_item_on_sell_date_at_zero_quality    def  test_conjured_item_after_sell_date    def  test_conjured_item_after_sell_date_at_zero_quality end Friday, March 7, 14
  50. 55.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_conjured_item_before_sell_date

       def  test_conjured_item_at_zero_quality    def  test_conjured_item_on_sell_date    def  test_conjured_item_on_sell_date_at_zero_quality    def  test_conjured_item_after_sell_date    def  test_conjured_item_after_sell_date_at_zero_quality end 6 skipped tests Friday, March 7, 14
  51. 56.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_conjured_item_before_sell_date

       def  test_conjured_item_at_zero_quality    def  test_conjured_item_on_sell_date    def  test_conjured_item_on_sell_date_at_zero_quality    def  test_conjured_item_after_sell_date    def  test_conjured_item_after_sell_date_at_zero_quality end Friday, March 7, 14
  52. 57.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_conjured_item_before_sell_date

       def  test_conjured_item_at_zero_quality    def  test_conjured_item_on_sell_date    def  test_conjured_item_on_sell_date_at_zero_quality    def  test_conjured_item_after_sell_date    def  test_conjured_item_after_sell_date_at_zero_quality end Friday, March 7, 14
  53. 61.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_conjured_item_before_sell_date

       def  test_conjured_item_at_zero_quality    def  test_conjured_item_on_sell_date    def  test_conjured_item_on_sell_date_at_zero_quality    def  test_conjured_item_after_sell_date    def  test_conjured_item_after_sell_date_at_zero_quality end Friday, March 7, 14
  54. 62.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_conjured_item_before_sell_date

       def  test_conjured_item_at_zero_quality    def  test_conjured_item_on_sell_date    def  test_conjured_item_on_sell_date_at_zero_quality    def  test_conjured_item_after_sell_date    def  test_conjured_item_after_sell_date_at_zero_quality end I tried Friday, March 7, 14
  55. 63.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_conjured_item_before_sell_date

       def  test_conjured_item_at_zero_quality    def  test_conjured_item_on_sell_date    def  test_conjured_item_on_sell_date_at_zero_quality    def  test_conjured_item_after_sell_date    def  test_conjured_item_after_sell_date_at_zero_quality end but failed Friday, March 7, 14
  56. 64.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_conjured_item_before_sell_date

       def  test_conjured_item_at_zero_quality    def  test_conjured_item_on_sell_date    def  test_conjured_item_on_sell_date_at_zero_quality    def  test_conjured_item_after_sell_date    def  test_conjured_item_after_sell_date_at_zero_quality end miserably Friday, March 7, 14
  57. 69.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test    def  test_normal_item_before_sell_date

       def  test_normal_item_on_sell_date    def  test_normal_item_after_sell_date    def  test_normal_item_of_zero_quality normal Friday, March 7, 14
  58. 70.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        #  ....    def  tick        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end end Friday, March 7, 14
  59. 71.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        #  ....    def  tick        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end end Friday, March 7, 14
  60. 72.

    @sandimetz Mar 2014    def  tick        if

     @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end    def  tick        if  name  ==  'normal'            return        end        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end end Friday, March 7, 14
  61. 73.

    @sandimetz Mar 2014    def  tick        if

     name  ==  'normal'            return        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end    def  tick        if  name  ==  'normal'            return        end        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end end Friday, March 7, 14
  62. 74.

    @sandimetz Mar 2014 #  Running: .S...S...S..SFF....F.....SS.F.. Fabulous  run  in  0.020340s,

     1524.0905  runs/s,  2310.7178  assertions/s.    1)  Failure: GildedRoseTest#test_normal_item_of_zero_quality  [gilded_rose_test.rb:37]: Expected:  4    Actual:  5    2)  Failure: GildedRoseTest#test_normal_item_before_sell_date  [gilded_rose_test.rb:12]: Expected:  9    Actual:  10    3)  Failure: GildedRoseTest#test_normal_item_on_sell_date  [gilded_rose_test.rb:20]: Expected:  8    Actual:  10    4)  Failure: GildedRoseTest#test_normal_item_after_sell_date  [gilded_rose_test.rb:28]: Expected:  8    Actual:  10 31  runs,  47  assertions,  4  failures,  0  errors,  6  skips Friday, March 7, 14
  63. 75.

    @sandimetz Mar 2014 #  Running: .S...S...S..SFF....F.....SS.F.. Fabulous  run  in  0.020340s,

     1524.0905  runs/s,  2310.7178  assertions/s.    1)  Failure: GildedRoseTest#test_normal_item_of_zero_quality  [gilded_rose_test.rb:37]: Expected:  4    Actual:  5    2)  Failure: GildedRoseTest#test_normal_item_before_sell_date  [gilded_rose_test.rb:12]: Expected:  9    Actual:  10    3)  Failure: GildedRoseTest#test_normal_item_on_sell_date  [gilded_rose_test.rb:20]: Expected:  8    Actual:  10    4)  Failure: GildedRoseTest#test_normal_item_after_sell_date  [gilded_rose_test.rb:28]: Expected:  8    Actual:  10 31  runs,  47  assertions,  4  failures,  0  errors,  6  skips 4 failures Friday, March 7, 14
  64. 76.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       if  name  ==  'normal'            return        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    #  ...  40  more  lines    end end Friday, March 7, 14
  65. 77.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       if  name  ==  'normal'            return        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    #  ...  40  more  lines    end    def  normal_tick    end end Friday, March 7, 14
  66. 78.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       if  name  ==  'normal'            return  normal_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    #  ...  40  more  lines    end    def  normal_tick    end end Friday, March 7, 14
  67. 79.

    @sandimetz Mar 2014 #  Running: .S...S...S..SFF....F.....SS.F.. Fabulous  run  in  0.020340s,

     1524.0905  runs/s,  2310.7178  assertions/s.    1)  Failure: GildedRoseTest#test_normal_item_of_zero_quality  [gilded_rose_test.rb:37]: Expected:  4    Actual:  5    2)  Failure: GildedRoseTest#test_normal_item_before_sell_date  [gilded_rose_test.rb:12]: Expected:  9    Actual:  10    3)  Failure: GildedRoseTest#test_normal_item_on_sell_date  [gilded_rose_test.rb:20]: Expected:  8    Actual:  10    4)  Failure: GildedRoseTest#test_normal_item_after_sell_date  [gilded_rose_test.rb:28]: Expected:  8    Actual:  10 31  runs,  47  assertions,  4  failures,  0  errors,  6  skips 4 failures Friday, March 7, 14
  68. 80.

    @sandimetz Mar 2014    def  test_normal_item_before_sell_date        item

     =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end Friday, March 7, 14
  69. 81.

    @sandimetz Mar 2014    def  test_normal_item_before_sell_date        item

     =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick    end end Friday, March 7, 14
  70. 82.

    @sandimetz Mar 2014    def  test_normal_item_before_sell_date        item

     =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick    end end Friday, March 7, 14
  71. 83.

    @sandimetz Mar 2014    def  test_normal_item_before_sell_date        item

     =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick        @quality  -­‐=  1        @days_remaining  -­‐=  1    end end Friday, March 7, 14
  72. 84.

    @sandimetz Mar 2014    def  test_normal_item_before_sell_date        item

     =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick        @quality  -­‐=  1        @days_remaining  -­‐=  1    end end Friday, March 7, 14
  73. 85.

    @sandimetz Mar 2014    def  test_normal_item_before_sell_date        item

     =  GildedRose.new('normal',  10,  5)        item.tick        assert_equal  9,  item.quality        assert_equal  4,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick        @quality  -­‐=  1        @days_remaining  -­‐=  1    end end Friday, March 7, 14
  74. 86.

    @sandimetz Mar 2014 #  Running: .....S...FS....FS.S...FS....S.. Fabulous  run  in  0.029178s,

     1062.4443  runs/s,  1713.6199  assertions/s.    1)  Failure: GildedRoseTest#test_normal_item_of_zero_quality  [gilded_rose_test.rb:38]: Expected:  0    Actual:  -­‐1    2)  Failure: GildedRoseTest#test_normal_item_after_sell_date  [gilded_rose_test.rb:30]: Expected:  8    Actual:  9    3)  Failure: GildedRoseTest#test_normal_item_on_sell_date  [gilded_rose_test.rb:22]: Expected:  8    Actual:  9 31  runs,  50  assertions,  3  failures,  0  errors,  6  skips 3 failures Friday, March 7, 14
  75. 87.

    @sandimetz Mar 2014    def  test_normal_item_on_sell_date        item

     =  GildedRose.new('normal',  10,  0)        item.tick        assert_equal    8,  item.quality        assert_equal  -­‐1,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick        @quality  -­‐=  1        @days_remaining  -­‐=  1    end end Friday, March 7, 14
  76. 88.

    @sandimetz Mar 2014    def  test_normal_item_on_sell_date        item

     =  GildedRose.new('normal',  10,  0)        item.tick        assert_equal    8,  item.quality        assert_equal  -­‐1,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick        @quality  -­‐=  1        @days_remaining  -­‐=  1    end end Friday, March 7, 14
  77. 89.

    @sandimetz Mar 2014    def  test_normal_item_on_sell_date        item

     =  GildedRose.new('normal',  10,  0)        item.tick        assert_equal    8,  item.quality        assert_equal  -­‐1,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick        @quality  -­‐=  1        @days_remaining  -­‐=  1    end end Friday, March 7, 14
  78. 90.

    @sandimetz Mar 2014    def  test_normal_item_on_sell_date        item

     =  GildedRose.new('normal',  10,  0)        item.tick        assert_equal    8,  item.quality        assert_equal  -­‐1,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick            @quality  -­‐=  1        @days_remaining  -­‐=  1    end end Friday, March 7, 14
  79. 91.

    @sandimetz Mar 2014    def  test_normal_item_on_sell_date        item

     =  GildedRose.new('normal',  10,  0)        item.tick        assert_equal    8,  item.quality        assert_equal  -­‐1,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick        if  @days_remaining  >  0            @quality  -­‐=  1        end        @days_remaining  -­‐=  1    end end Friday, March 7, 14
  80. 92.

    @sandimetz Mar 2014    def  test_normal_item_on_sell_date        item

     =  GildedRose.new('normal',  10,  0)        item.tick        assert_equal    8,  item.quality        assert_equal  -­‐1,  item.days_remaining    end class  GildedRose    #  ...    def  normal_tick        if  @days_remaining  >  0            @quality  -­‐=  1        end        if  @days_remaining  <=  0            @quality  -­‐=  2        end        @days_remaining  -­‐=  1    end end Friday, March 7, 14
  81. 93.

    @sandimetz Mar 2014 #  Running: ...S.S.....S..S..SF.....S...... Fabulous  run  in  0.019924s,

     1555.9125  runs/s,  2459.3455  assertions/s.    1)  Failure: GildedRoseTest#test_normal_item_of_zero_quality  [gilded_rose_test.rb:37]: Expected:  0    Actual:  -­‐1 31  runs,  49  assertions,  1  failures,  0  errors,  6  skips 1 failure ?? Friday, March 7, 14
  82. 94.

    @sandimetz Mar 2014 #  Running: ...S.S.....S..S..SF.....S...... Fabulous  run  in  0.019924s,

     1555.9125  runs/s,  2459.3455  assertions/s.    1)  Failure: GildedRoseTest#test_normal_item_of_zero_quality  [gilded_rose_test.rb:37]: Expected:  0    Actual:  -­‐1 31  runs,  49  assertions,  1  failures,  0  errors,  6  skips 1 failure ?? Friday, March 7, 14
  83. 95.

    @sandimetz Mar 2014    def  test_normal_item_of_zero_quality        item

     =  GildedRose.new('normal',  0,  5)        item.tick        assert_equal  0,  item.quality        assert_equal  4,  item.days_remaining    end class  GildedRose      #  ...    def  normal_tick        if  @days_remaining  >  0            @quality  -­‐=  1        end        if  @days_remaining  <=  0            @quality  -­‐=  2        end        @days_remaining  -­‐=  1    end   end Friday, March 7, 14
  84. 96.

    @sandimetz Mar 2014    def  test_normal_item_of_zero_quality        item

     =  GildedRose.new('normal',  0,  5)        item.tick        assert_equal  0,  item.quality        assert_equal  4,  item.days_remaining    end class  GildedRose      #  ...    def  normal_tick        if  @days_remaining  >  0            @quality  -­‐=  1        end        if  @days_remaining  <=  0            @quality  -­‐=  2        end        @days_remaining  -­‐=  1    end   end Friday, March 7, 14
  85. 97.

    @sandimetz Mar 2014    def  test_normal_item_of_zero_quality        item

     =  GildedRose.new('normal',  0,  5)        item.tick        assert_equal  0,  item.quality        assert_equal  4,  item.days_remaining    end class  GildedRose      #  ...    def  normal_tick        if  @days_remaining  >  0            @quality  -­‐=  1        end        if  @days_remaining  <=  0            @quality  -­‐=  2        end        @days_remaining  -­‐=  1    end   end Friday, March 7, 14
  86. 98.

    @sandimetz Mar 2014    def  test_normal_item_of_zero_quality        item

     =  GildedRose.new('normal',  0,  5)        item.tick        assert_equal  0,  item.quality        assert_equal  4,  item.days_remaining    end class  GildedRose      #  ...    def  normal_tick            if  @days_remaining  >  0                @quality  -­‐=  1            end            if  @days_remaining  <=  0                @quality  -­‐=  2            end        @days_remaining  -­‐=  1    end   end Friday, March 7, 14
  87. 99.

    @sandimetz Mar 2014    def  test_normal_item_of_zero_quality        item

     =  GildedRose.new('normal',  0,  5)        item.tick        assert_equal  0,  item.quality        assert_equal  4,  item.days_remaining    end class  GildedRose      #  ...    def  normal_tick        if  @quality  !=  0            if  @days_remaining  >  0                @quality  -­‐=  1            end            if  @days_remaining  <=  0                @quality  -­‐=  2            end        end        @days_remaining  -­‐=  1    end end Friday, March 7, 14
  88. 100.

    @sandimetz Mar 2014 #  Running: S..S.S...S..........S....S..... Fabulous  run  in  0.002800s,

     11071.4286  runs/s,  17857.1429  assertions/s. 31  runs,  50  assertions,  0  failures,  0  errors,  6  skips Friday, March 7, 14
  89. 102.

    @sandimetz Mar 2014    def  normal_tick        if

     @quality  !=  0            if  @days_remaining  >  0                @quality  -­‐=  1            end            if  @days_remaining  <=  0                @quality  -­‐=  2            end        end        @days_remaining  -­‐=  1    end Friday, March 7, 14
  90. 103.

    @sandimetz Mar 2014    def  normal_tick    end    def

     normal_tick        if  @quality  !=  0            if  @days_remaining  >  0                @quality  -­‐=  1            end            if  @days_remaining  <=  0                @quality  -­‐=  2            end        end        @days_remaining  -­‐=  1    end Friday, March 7, 14
  91. 104.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1    end    def  normal_tick        if  @quality  !=  0            if  @days_remaining  >  0                @quality  -­‐=  1            end            if  @days_remaining  <=  0                @quality  -­‐=  2            end        end        @days_remaining  -­‐=  1    end Friday, March 7, 14
  92. 105.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1    end    def  normal_tick        if  @quality  !=  0            if  @days_remaining  >  0                @quality  -­‐=  1            end            if  @days_remaining  <=  0                @quality  -­‐=  2            end        end    end Friday, March 7, 14
  93. 106.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0    end    def  normal_tick        if  @quality  !=  0            if  @days_remaining  >  0                @quality  -­‐=  1            end            if  @days_remaining  <=  0                @quality  -­‐=  2            end        end    end Friday, March 7, 14
  94. 107.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0    end    def  normal_tick            if  @days_remaining  >  0                @quality  -­‐=  1            end            if  @days_remaining  <=  0                @quality  -­‐=  2            end    end Friday, March 7, 14
  95. 108.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1    end    def  normal_tick            if  @days_remaining  >  0                @quality  -­‐=  1            end            if  @days_remaining  <=  0                @quality  -­‐=  2            end    end Friday, March 7, 14
  96. 109.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  normal_tick            if  @days_remaining  >  0                @quality  -­‐=  1            end            if  @days_remaining  <=  0                @quality  -­‐=  2            end    end Friday, March 7, 14
  97. 110.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  normal_tick    end Friday, March 7, 14
  98. 111.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end Friday, March 7, 14
  99. 112.

    @sandimetz Mar 2014 #  Running: S..S.S...S..........S....S..... Fabulous  run  in  0.002800s,

     11071.4286  runs/s,  17857.1429  assertions/s. 31  runs,  50  assertions,  0  failures,  0  errors,  6  skips Friday, March 7, 14
  100. 113.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       if  name  ==  'normal'            return  normal_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    #  ...  40  more  lines    end end Reprise Friday, March 7, 14
  101. 114.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       if  name  ==  'normal'            return  normal_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    #  ...  40  more  lines    end end Friday, March 7, 14
  102. 115.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       if  name  ==  'normal'            return  normal_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    #  ...  40  more  lines    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end end Friday, March 7, 14
  103. 116.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       if  name  ==  'normal'            return  normal_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    #  ...  40  more  lines    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end end normal Friday, March 7, 14
  104. 117.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test #  def  test_normal

     ...  etc    def  test_brie_before_sell_date    def  test_brie_before_sell_date_with_max_quality    def  test_brie_on_sell_date    def  test_brie_on_sell_date_near_max_quality    def  test_brie_on_sell_date_with_max_quality    def  test_brie_after_sell_date    def  test_brie_after_sell_date_with_max_quality #    def  test_sulfuras    ...  etc #    def  test_backstage  ...  etc end brie Friday, March 7, 14
  105. 118.

    @sandimetz Mar 2014    def  tick      if  name

     ==  'normal'            return  normal_tick        end        #  ...    end Friday, March 7, 14
  106. 119.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        end        #  ...    end Friday, March 7, 14
  107. 120.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        end        #  ...    end Friday, March 7, 14
  108. 121.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        end        #  ...    end    def  brie_tick    end Friday, March 7, 14
  109. 122.

    @sandimetz Mar 2014 #  Running: .F...F.....S.S.F..S.FF.S.F.FS.S Fabulous  run  in  0.027410s,

     1130.9741  runs/s,  1678.2196  assertions/s.    1)  Failure: GildedRoseTest#test_brie_on_sell_date_with_max_quality  [gilded_rose_test.rb:78]: Expected:  4    Actual:  5    2)  Failure: GildedRoseTest#test_brie_on_sell_date_near_max_quality  [gilded_rose_test.rb:69]: Expected:  50    Actual:  49    3)  Failure: GildedRoseTest#test_brie_on_sell_date  [gilded_rose_test.rb:61]: Expected:  12    Actual:  10    4)  Failure: GildedRoseTest#test_brie_after_sell_date_with_max_quality  [gilded_rose_test.rb:94]: Expected:  -­‐11    Actual:  -­‐10    5)  Failure: GildedRoseTest#test_brie_before_sell_date_with_max_quality  [gilded_rose_test.rb:54]: Expected:  6    Actual:  7 7 failures Friday, March 7, 14
  110. 123.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        end        #  ...    end    def  brie_tick    end Friday, March 7, 14
  111. 124.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        end        #  ...    end    def  brie_tick    end fast forward... Friday, March 7, 14
  112. 125.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        end        #  ...    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end Friday, March 7, 14
  113. 126.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        end        #  ...    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end brie Friday, March 7, 14
  114. 127.

    @sandimetz Mar 2014 #  Running: ...S......S.....SS.....SS...... Fabulous  run  in  0.003862s,

     8026.9291  runs/s,  12946.6598  assertions/s. 31  runs,  50  assertions,  0  failures,  0  errors,  6  skips Friday, March 7, 14
  115. 128.

    @sandimetz Mar 2014  def  normal_tick        @days_remaining  -­‐=

     1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end Similarity Friday, March 7, 14
  116. 129.

    @sandimetz Mar 2014  def  normal_tick        @days_remaining  -­‐=

     1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end Friday, March 7, 14
  117. 131.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test #  def  test_normal

     ...  etc #  def  test_brie      ...  etc    def  test_sulfuras_before_sell_date    def  test_sulfuras_on_sell_date    def  test_sulfuras_after_sell_date #  def  test_backstage  ...  etc end sulfuras Friday, March 7, 14
  118. 132.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        end        #  ...    end    def  sulfuras_tick    end Friday, March 7, 14
  119. 133.

    @sandimetz Mar 2014 #  Running: ...S......S.....SS.....SS...... Fabulous  run  in  0.003862s,

     8026.9291  runs/s,  12946.6598  assertions/s. 31  runs,  50  assertions,  0  failures,  0  errors,  6  skips 0 failures ?!? Friday, March 7, 14
  120. 134.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        end        #  ...    end    def  sulfuras_tick    end Friday, March 7, 14
  121. 135.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        end        #  ...    end    def  sulfuras_tick    end nothing changes Friday, March 7, 14
  122. 136.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        end        #  ...    end    def  sulfuras_tick    end sulfuras Friday, March 7, 14
  123. 137.

    @sandimetz Mar 2014 class  GildedRoseTest  <  Minitest::Test #  def  test_normal

         ...  etc #  def  test_brie          ...  etc #  def  test_sulfuras  ...  etc    def  test_backstage_pass_long_before_sell_date    def  test_backstage_pass_medium_close_to_sell_date_upper_bound    def  test_backstage_pass_medium_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_medium_close_to_sell_date_lower_bound    def  test_backstage_pass_medium_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_upper_bound    def  test_backstage_pass_very_close_to_sell_date_upper_bound_at_max_quality    def  test_backstage_pass_very_close_to_sell_date_lower_bound    def  test_backstage_pass_very_close_to_sell_date_lower_bound_at_max_quality    def  test_backstage_pass_on_sell_date    def  test_backstage_pass_after_sell_date end backstage Friday, March 7, 14
  124. 138.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'        when  'Aged  Brie'        when  'Sulfuras,  Hand  of  Ragnaros'        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        #  ...    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end backstage Friday, March 7, 14
  125. 139.

    @sandimetz Mar 2014 #  Running: ...S......S.....SS.....SS...... Fabulous  run  in  0.003472s,

     8928.5714  runs/s,  14400.9217  assertions/s. 31  runs,  50  assertions,  0  failures,  0  errors,  6  skips Friday, March 7, 14
  126. 140.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            #  ...    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick    def  sulfuras_tick    def  backstage_tick class  GildedRose    attr_reader  :name,  :quality,  :days_remaining    def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remai    end    def  tick        case  name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAF            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end Friday, March 7, 14
  127. 141.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            #  ...    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick    def  sulfuras_tick    def  backstage_tick class  GildedRose    attr_reader  :name,  :quality,  :days_remaining    def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remai    end    def  tick        case  name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAF            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end Friday, March 7, 14
  128. 142.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            #  ...    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick    def  sulfuras_tick    def  backstage_tick class  GildedRose    attr_reader  :name,  :quality,  :days_remaining    def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remai    end    def  tick        case  name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAF            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end Friday, March 7, 14
  129. 143.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            #  ...    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick    def  sulfuras_tick    def  backstage_tick class  GildedRose    attr_reader  :name,  :quality,  :days_remaining    def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remai    end    def  tick        case  name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAF            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end Friday, March 7, 14
  130. 144.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            #  ...    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick    def  sulfuras_tick    def  backstage_tick class  GildedRose    attr_reader  :name,  :quality,  :days_remaining    def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remai    end    def  tick        case  name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAF            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end Friday, March 7, 14
  131. 145.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            #  ...    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick    def  sulfuras_tick    def  backstage_tick class  GildedRose    attr_reader  :name,  :quality,  :days_remaining    def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remai    end    def  tick        case  name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAF            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end Friday, March 7, 14
  132. 146.

    @sandimetz Mar 2014    def  tick        case

     name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  c            #  ...    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick    def  sulfuras_tick    def  backstage_tick class  GildedRose    attr_reader  :name,  :quality,  :days_remaining    def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remai    end    def  tick        case  name        when  'normal'            return  normal_tick        when  'Aged  Brie'            return  brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            return  sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            return  backstage_tick        end        if  name  !=  'Aged  Brie'  &&  name  !=  'Backstage  passes  to  a  TAF            if  quality  >  0                if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  quality  <  50                  @quality  +=  1                if  name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  days_remaining  <  11                        if  quality  <  50                            @quality  +=  1                        end                    end                    if  days_remaining  <  6                        if  quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  days_remaining  <  0            if  name  !=  "Aged  Brie"                if  name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  quality  >  0                        if  name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  quality  -­‐  quality                end            else                if  quality  <  50                    @quality  +=  1                end            end        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end Friday, March 7, 14
  133. 147.

    @sandimetz Mar 2014 #  Running: ...S......S.....SS.....SS...... Fabulous  run  in  0.003472s,

     8928.5714  runs/s,  14400.9217  assertions/s. 31  runs,  50  assertions,  0  failures,  0  errors,  6  skips Friday, March 7, 14
  134. 149.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end small methods Friday, March 7, 14
  135. 150.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end class  GildedRose    attr_reader  :name,  :quality,  :days_remaining    def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end end big conditional small methods Friday, March 7, 14
  136. 151.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end 0 25 50 big conditional Total Complexity 50 Friday, March 7, 14
  137. 152.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end 0 25 50 big conditional small methods tick normal brie backstage other 40 Total Complexity 50 Friday, March 7, 14
  138. 153.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end 0 25 50 big conditional small methods tick normal brie backstage other 12 40 45 Total Complexity 50 Friday, March 7, 14
  139. 154.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end Complexity 50 big conditional Friday, March 7, 14
  140. 155.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end 0 45 90 Complexity 50 big conditional Friday, March 7, 14
  141. 156.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end 0 45 90 Complexity 50 84 40 small methods big conditional 10 Refactorings Friday, March 7, 14
  142. 158.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end Friday, March 7, 14
  143. 159.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end def  normal_tick Friday, March 7, 14
  144. 160.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end def  normal_tick def  brie_tick Friday, March 7, 14
  145. 161.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end def  normal_tick def  brie_tick def  sulfuras_tick Friday, March 7, 14
  146. 162.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end def  normal_tick def  brie_tick def  sulfuras_tick def  backstage_tick Friday, March 7, 14
  147. 163.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end def  normal_tick def  brie_tick def  sulfuras_tick def  backstage_tick def  conjured_tick Friday, March 7, 14
  148. 164.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end def  normal_tick def  brie_tick def  sulfuras_tick def  backstage_tick def  conjured_tick ??? Friday, March 7, 14
  149. 169.

    @sandimetz Mar 2014    def  normal_tick        @days_remaining

     -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end def  normal_tick def  brie_tick def  sulfuras_tick def  backstage_tick Friday, March 7, 14
  150. 181.

    @sandimetz Mar 2014        def  normal_tick    

           @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end Friday, March 7, 14
  151. 182.

    @sandimetz Mar 2014        def  tick    

           @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end Friday, March 7, 14
  152. 183.

    @sandimetz Mar 2014    class  Normal        def

     tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  153. 184.

    @sandimetz Mar 2014    class  Normal        def

     initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  154. 185.

    @sandimetz Mar 2014    class  Normal        attr_reader

     :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  155. 186.

    @sandimetz Mar 2014        class  Normal    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  156. 187.

    @sandimetz Mar 2014 class  GildedRose      def  normal_tick  

     end    class  Normal        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  157. 188.

    @sandimetz Mar 2014 class  GildedRose      def  normal_tick  

         @item  =  Normal.new(quality,  days_remaining)    end    class  Normal        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  158. 189.

    @sandimetz Mar 2014 class  GildedRose      def  normal_tick  

         @item  =  Normal.new(quality,  days_remaining)        item.tick    end    class  Normal        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  159. 193.

    @sandimetz Mar 2014 class  GildedRose      def  normal_tick  

         @item  =  Normal.new(quality,  days_remaining)        item.tick    end Friday, March 7, 14
  160. 194.

    @sandimetz Mar 2014 class  GildedRose      def  normal_tick  

         @item  =  Normal.new(quality,  days_remaining)        item.tick    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end Friday, March 7, 14
  161. 195.

    @sandimetz Mar 2014 class  GildedRose      def  normal_tick  

         @item  =  Normal.new(quality,  days_remaining)        item.tick    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  quality    end    def  days_remaining    end Friday, March 7, 14
  162. 196.

    @sandimetz Mar 2014 class  GildedRose      def  normal_tick  

         @item  =  Normal.new(quality,  days_remaining)        item.tick    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  quality        return  item.quality  if  item    end    def  days_remaining    end Friday, March 7, 14
  163. 197.

    @sandimetz Mar 2014 class  GildedRose      def  normal_tick  

         @item  =  Normal.new(quality,  days_remaining)        item.tick    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  quality        return  item.quality  if  item        @quality    end    def  days_remaining    end Friday, March 7, 14
  164. 198.

    @sandimetz Mar 2014 class  GildedRose      def  normal_tick  

         @item  =  Normal.new(quality,  days_remaining)        item.tick    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  quality        return  item.quality  if  item        @quality    end    def  days_remaining        return  item.days_remaining  if  item        @days_remaining    end Friday, March 7, 14
  165. 200.

    @sandimetz Mar 2014 class  GildedRose    def  brie_tick    

       @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end Friday, March 7, 14
  166. 201.

    @sandimetz Mar 2014 class  GildedRose    def  brie_tick    

       @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    class  Brie    end Friday, March 7, 14
  167. 202.

    @sandimetz Mar 2014 class  GildedRose    def  brie_tick    

       @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    class  Brie        def  tick        end    end Friday, March 7, 14
  168. 203.

    @sandimetz Mar 2014 class  GildedRose    def  brie_tick    end

       class  Brie        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  169. 204.

    @sandimetz Mar 2014 class  GildedRose    def  brie_tick    end

       class  Brie        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  170. 205.

    @sandimetz Mar 2014 class  GildedRose    def  brie_tick    

       @item  =  Brie.new(quality,  days_remaining)        item.tick    end    class  Brie        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  171. 208.

    @sandimetz Mar 2014 class  GildedRose    def  sulfuras_tick    end

       class  Sulfuras        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end Friday, March 7, 14
  172. 209.

    @sandimetz Mar 2014 class  GildedRose    def  sulfuras_tick    end

       class  Sulfuras        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end Friday, March 7, 14
  173. 210.

    @sandimetz Mar 2014 class  GildedRose    def  sulfuras_tick    

       @item  =  Sulfuras.new(quality,  days_remaining)        item.tick    end    class  Sulfuras        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end Friday, March 7, 14
  174. 212.

    @sandimetz Mar 2014 class  GildedRose    def  backstage_tick    

       @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end Friday, March 7, 14
  175. 213.

    @sandimetz Mar 2014 class  GildedRose    def  backstage_tick    

       @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end    class  Backstage        def  tick        end Friday, March 7, 14
  176. 214.

    @sandimetz Mar 2014 class  GildedRose    def  backstage_tick    end

       class  Backstage        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end Friday, March 7, 14
  177. 215.

    @sandimetz Mar 2014 class  GildedRose    def  backstage_tick    end

       class  Backstage        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end Friday, March 7, 14
  178. 216.

    @sandimetz Mar 2014 class  GildedRose    def  backstage_tick    end

       class  Backstage        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end Friday, March 7, 14
  179. 217.

    @sandimetz Mar 2014 class  GildedRose    def  backstage_tick    end

       class  Backstage        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end Friday, March 7, 14
  180. 218.

    @sandimetz Mar 2014 class  GildedRose    def  backstage_tick    

       @item  =  Backstage.new(quality,  days_remaining)        item.tick    end    class  Backstage        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end Friday, March 7, 14
  181. 220.

    @sandimetz Mar 2014 GildedRose tick Normal tick Brie tick Sulfuras

    attr_reader  :item tick Backstage attr_reader    :quality,    :days_remaining Friday, March 7, 14
  182. 221.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @item  =  Normal.new(quality,  days_remaining)        item.tick    end    def  brie_tick        @item  =  Brie.new(quality,  days_remaining)        item.tick    end    #  etc Friday, March 7, 14
  183. 223.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @item  =  Normal.new(quality,  days_remaining)        item.tick    end    def  brie_tick        @item  =  Brie.new(quality,  days_remaining)        item.tick    end    #  etc Friday, March 7, 14
  184. 224.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @item  =  Normal.new(quality,  days_remaining)        item.tick    end    def  brie_tick        @item  =  Brie.new(quality,  days_remaining)        item.tick    end    #  etc Friday, March 7, 14
  185. 225.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @item  =  Normal.new(quality,  days_remaining)        item.tick    end    def  brie_tick        @item  =  Brie.new(quality,  days_remaining)        item.tick    end    #  etc Friday, March 7, 14
  186. 226.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick    end    def  brie_tick        @item  =  Brie.new(quality,  days_remaining)        item.tick    end    #  etc Friday, March 7, 14
  187. 227.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  brie_tick        @item  =  Brie.new(quality,  days_remaining)        item.tick    end    #  etc Friday, March 7, 14
  188. 228.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  brie_tick        @item  =  Brie.new(quality,  days_remaining)        item.tick    end    #  etc Friday, March 7, 14
  189. 229.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'        when  'Sulfuras,  Hand  of  Ragnaros'        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'        end    end    def  brie_tick        @item  =  Brie.new(quality,  days_remaining)        item.tick    end    #  etc Friday, March 7, 14
  190. 230.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            @item  =  Brie.new(quality,  days_remaining)            item.tick        when  'Sulfuras,  Hand  of  Ragnaros'            @item  =  Sulfuras.new(quality,  days_remaining)            item.tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            @item  =  Backstage.new(quality,  days_remaining)            item.tick        end    end Friday, March 7, 14
  191. 232.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            @item  =  Brie.new(quality,  days_remaining)            item.tick        when  'Sulfuras,  Hand  of  Ragnaros'            @item  =  Sulfuras.new(quality,  days_remaining)            item.tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            @item  =  Backstage.new(quality,  days_remaining)            item.tick        end    end Friday, March 7, 14
  192. 233.

    @sandimetz Mar 2014 class  GildedRose    def  tick    

       case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            @item  =  Brie.new(quality,  days_remaining)            item.tick        when  'Sulfuras,  Hand  of  Ragnaros'            @item  =  Sulfuras.new(quality,  days_remaining)            item.tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            @item  =  Backstage.new(quality,  days_remaining)            item.tick        end    end Friday, March 7, 14
  193. 234.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            @item  =  Brie.new(quality,  days_remaining)            item.tick        when  'Sulfuras,  Hand  of  Ragnaros'            @item  =  Sulfuras.new(quality,  days_remaining)            item.tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            @item  =  Backstage.new(quality,  days_remaining)            item.tick        end    end Friday, March 7, 14
  194. 235.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            @item  =  Brie.new(quality,  days_remaining)            item.tick        when  'Sulfuras,  Hand  of  Ragnaros'            @item  =  Sulfuras.new(quality,  days_remaining)            item.tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            @item  =  Backstage.new(quality,  days_remaining)            item.tick        end    end Friday, March 7, 14
  195. 236.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @item  =  ???    end    def  tick        case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            @item  =  Brie.new(quality,  days_remaining)            item.tick        when  'Sulfuras,  Hand  of  Ragnaros'            @item  =  Sulfuras.new(quality,  days_remaining)            item.tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            @item  =  Backstage.new(quality,  days_remaining)            item.tick        end    end Friday, March 7, 14
  196. 237.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @item  =  ???    end    def  tick        case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            @item  =  Brie.new(quality,  days_remaining)            item.tick        when  'Sulfuras,  Hand  of  Ragnaros'            @item  =  Sulfuras.new(quality,  days_remaining)            item.tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            @item  =  Backstage.new(quality,  days_remaining)            item.tick        end    end Friday, March 7, 14
  197. 238.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @item  =  ???.new(quality,  days_remaining)    end    def  tick        case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            @item  =  Brie.new(quality,  days_remaining)            item.tick        when  'Sulfuras,  Hand  of  Ragnaros'            @item  =  Sulfuras.new(quality,  days_remaining)            item.tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            @item  =  Backstage.new(quality,  days_remaining)            item.tick        end    end Friday, March 7, 14
  198. 239.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @item  =  ???.new(quality,  days_remaining)    end    def  tick        case  name        when  'normal'            @item  =  Normal.new(quality,  days_remaining)            item.tick        when  'Aged  Brie'            @item  =  Brie.new(quality,  days_remaining)            item.tick        when  'Sulfuras,  Hand  of  Ragnaros'            @item  =  Sulfuras.new(quality,  days_remaining)            item.tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            @item  =  Backstage.new(quality,  days_remaining)            item.tick        end    end Friday, March 7, 14
  199. 240.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @item  =  ???.new(quality,  days_remaining)    end    def        case  name        when  'normal'                            Normal        when  'Aged  Brie'                            Brie        when  'Sulfuras,  Hand  of  Ragnaros'                            Sulfuras        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'                            Backstage        end Friday, March 7, 14
  200. 241.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @item  =  ???.new(quality,  days_remaining)    end    def        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Sulfuras        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  201. 242.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @item  =  ???.new(quality,  days_remaining)    end    def  klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Sulfuras        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  202. 243.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Sulfuras        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  203. 244.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :item  

     def  initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Sulfuras        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  204. 245.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Sulfuras        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  205. 246.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end Friday, March 7, 14
  206. 247.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end Friday, March 7, 14
  207. 248.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        return  item.quality  if  item        @quality    end    def  days_remaining        return  item.days_remaining  if  item        @days_remaining    end Friday, March 7, 14
  208. 249.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        return  item.quality  if  item        @quality    end    def  days_remaining        return  item.days_remaining  if  item        @days_remaining    end Friday, March 7, 14
  209. 250.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        return  item.quality  if  item    end    def  days_remaining        return  item.days_remaining  if  item    end Friday, March 7, 14
  210. 251.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        return  item.quality  if  item    end    def  days_remaining        return  item.days_remaining  if  item    end Friday, March 7, 14
  211. 252.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        return  item.quality  if  item    end    def  days_remaining        return  item.days_remaining  if  item    end Friday, March 7, 14
  212. 253.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end Friday, March 7, 14
  213. 254.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  214. 256.

    @sandimetz Mar 2014 GildedRose tick Normal tick Brie tick Sulfuras

    attr_reader  :item tick Backstage attr_reader    :quality,    :days_remaining Friday, March 7, 14
  215. 257.

    @sandimetz Mar 2014 attr_reader  :item GildedRose ItemRole def  tick  

    def  quality def  days_remaining Friday, March 7, 14
  216. 258.

    @sandimetz Mar 2014 attr_reader  :item ItemRole def  tick   def

     quality def  days_remaining GildedRose Friday, March 7, 14
  217. 259.

    @sandimetz Mar 2014 attr_reader  :item def  tick end def  quality

    end def  days_remaining end ItemRole def  tick   def  quality def  days_remaining GildedRose Friday, March 7, 14
  218. 260.

    @sandimetz Mar 2014 attr_reader  :item def  tick    item.tick end

    def  quality    item.quality end def  days_remaining    item.days_remaining end GildedRose ItemRole def  tick   def  quality def  days_remaining Friday, March 7, 14
  219. 261.

    @sandimetz Mar 2014 attr_reader  :item def  tick    item.tick end

    def  quality    item.quality end def  days_remaining    item.days_remaining end GildedRose ItemRole def  tick   def  quality def  days_remaining Friday, March 7, 14
  220. 262.

    @sandimetz Mar 2014 Foo def  tick    item.tick end def

     quality    item.quality end def  days_remaining    item.days_remaining end attr_reader  :item GildedRose ItemRole def  tick   def  quality def  days_remaining Friday, March 7, 14
  221. 263.

    @sandimetz Mar 2014 Foo def  tick    item.tick end def

     quality    item.quality end def  days_remaining    item.days_remaining end attr_reader  :item attr_reader  :rose GildedRose ItemRole def  tick   def  quality def  days_remaining Friday, March 7, 14
  222. 264.

    @sandimetz Mar 2014 Foo def  tick    item.tick end def

     quality    item.quality end def  days_remaining    item.days_remaining end attr_reader  :item attr_reader  :rose def  doit    rose.tick    rose.quality    rose.days_remaining end GildedRose ItemRole def  tick   def  quality def  days_remaining Friday, March 7, 14
  223. 265.

    @sandimetz Mar 2014 Foo def  tick    item.tick end def

     quality    item.quality end def  days_remaining    item.days_remaining end attr_reader  :item attr_reader  :rose def  doit    rose.tick    rose.quality    rose.days_remaining end GildedRose ItemRole def  tick   def  quality def  days_remaining Friday, March 7, 14
  224. 266.

    @sandimetz Mar 2014 Foo def  tick    item.tick end def

     quality    item.quality end def  days_remaining    item.days_remaining end attr_reader  :item attr_reader  :rose def  doit    rose.tick    rose.quality    rose.days_remaining end GildedRose ItemRole def  tick   def  quality def  days_remaining Friday, March 7, 14
  225. 267.

    @sandimetz Mar 2014 Foo def  tick    item.tick end def

     quality    item.quality end def  days_remaining    item.days_remaining end attr_reader  :item attr_reader  :rose def  doit    rose.tick    rose.quality    rose.days_remaining end GildedRose ItemRole def  tick   def  quality def  days_remaining Middleman Friday, March 7, 14
  226. 268.

    @sandimetz Mar 2014 Foo attr_reader  :item attr_reader  :rose GildedRose ItemRole

    def  tick   def  quality def  days_remaining Friday, March 7, 14
  227. 269.

    @sandimetz Mar 2014 Foo attr_reader  :item attr_reader  :rose def  getit

       @rose  =          GildedRose.new(            ‘normal’,  ...)     end GildedRose ItemRole def  tick   def  quality def  days_remaining Friday, March 7, 14
  228. 270.

    @sandimetz Mar 2014 Foo def  initialize(name,...)    @item  =  

         klass_for(name).          new(              quality,              days_remaining) end def  klass_for(name)    case  name    when  'normal'        Normal attr_reader  :item attr_reader  :rose def  getit    @rose  =          GildedRose.new(            ‘normal’,  ...)     end GildedRose ItemRole def  tick   def  quality def  days_remaining Friday, March 7, 14
  229. 271.

    @sandimetz Mar 2014 Foo def  initialize(name,...)    @item  =  

         klass_for(name).          new(              quality,              days_remaining) end def  klass_for(name)    case  name    when  'normal'        Normal attr_reader  :item attr_reader  :rose def  getit    @rose  =          GildedRose.new(            ‘normal’,  ...)     end GildedRose ItemRole def  tick   def  quality def  days_remaining Item Factory Friday, March 7, 14
  230. 272.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  231. 273.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  232. 274.

    @sandimetz Mar 2014 module  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  233. 275.

    @sandimetz Mar 2014 module  GildedRose    attr_reader  :item    def

     initialize(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  234. 276.

    @sandimetz Mar 2014 module  GildedRose    attr_reader  :item    def

     self.for(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  235. 277.

    @sandimetz Mar 2014 module  GildedRose    attr_reader  :item    def

     self.for(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  236. 278.

    @sandimetz Mar 2014 module  GildedRose    attr_reader  :item    def

     self.for(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  237. 279.

    @sandimetz Mar 2014 module  GildedRose    attr_reader  :item    def

     self.for(name,  quality,  days_remaining)        @item  =  klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  238. 280.

    @sandimetz Mar 2014 module  GildedRose    attr_reader  :item    def

     self.for(name,  quality,  days_remaining)        klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  239. 281.

    @sandimetz Mar 2014 module  GildedRose    attr_reader  :item    def

     self.for(name,  quality,  days_remaining)        klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  240. 282.

    @sandimetz Mar 2014 module  GildedRose    def  self.for(name,  quality,  days_remaining)

           klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  241. 283.

    @sandimetz Mar 2014 module  GildedRose    def  self.for(name,  quality,  days_remaining)

           klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  242. 284.

    @sandimetz Mar 2014 module  GildedRose    def  self.for(name,  quality,  days_remaining)

           klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  243. 285.

    @sandimetz Mar 2014 module  GildedRose    def  self.for(name,  quality,  days_remaining)

           klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Middleman Friday, March 7, 14
  244. 286.

    @sandimetz Mar 2014 module  GildedRose    def  self.for(name,  quality,  days_remaining)

           klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    def  tick        item.tick    end    def  quality        item.quality    end    def  days_remaining        item.days_remaining    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Middleman Friday, March 7, 14
  245. 287.

    @sandimetz Mar 2014 module  GildedRose    def  self.for(name,  quality,  days_remaining)

           klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  246. 288.

    @sandimetz Mar 2014 Foo def  self.for(name,...) end attr_reader  :rose def

     getit    @rose  =          GildedRose.for(            ‘normal’,  ...)     end GildedRose Friday, March 7, 14
  247. 289.

    @sandimetz Mar 2014 Foo attr_reader  :rose def  getit    @rose

     =          GildedRose.for(            ‘normal’,  ...)     end ItemRole def  tick   def  quality def  days_remaining def  self.for(name,...) end GildedRose Friday, March 7, 14
  248. 291.

    @sandimetz Mar 2014 module  GildedRose    def  self.for(name,  quality,  days_remaining)

           klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  249. 292.

    @sandimetz Mar 2014 module  GildedRose    def  self.for(name,  quality,  days_remaining)

           klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        #  ...    end    class  Normal    class  Brie    class  Sulfuras    class  Backstage end Friday, March 7, 14
  250. 293.

    @sandimetz Mar 2014 module  GildedRose    class  Normal    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            #  ...        end    end Friday, March 7, 14
  251. 294.

    @sandimetz Mar 2014 module  GildedRose    class  Normal    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            #  ...        end    end    class  Brie        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick          #  ...        end    end Friday, March 7, 14
  252. 295.

    @sandimetz Mar 2014 module  GildedRose    class  Normal    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            #  ...        end    end    class  Brie        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick          #  ...        end    end Friday, March 7, 14
  253. 296.

    @sandimetz Mar 2014 module  GildedRose    class  Normal    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            #  ...        end    end    class  Brie        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick          #  ...        end    end Friday, March 7, 14
  254. 297.

    @sandimetz Mar 2014 module  GildedRose    class  Normal    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            #  ...        end    end    class  Brie        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick Friday, March 7, 14
  255. 298.

    @sandimetz Mar 2014 module  GildedRose    class  Item    end

       class  Normal        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick            #  ...        end    end    class  Brie        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick Friday, March 7, 14
  256. 299.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal        def  tick            #  ...        end    end    class  Brie        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick Friday, March 7, 14
  257. 300.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick Friday, March 7, 14
  258. 301.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick          #  ...        end    end Friday, March 7, 14
  259. 302.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie  <  Item        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick          #  ...        end    end Friday, March 7, 14
  260. 303.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie  <  Item        def  tick          #  ...        end    end Friday, March 7, 14
  261. 304.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie  <  Item        def  tick          #  ...        end    end    class  Sulfuras  <  Item        def  tick        end    end    class  Backstage  <  Item        def  tick Friday, March 7, 14
  262. 307.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie  <  Item        def  tick          #  ...        end    end    class  Sulfuras  <  Item        def  tick        end    end    class  Backstage  <  Item        def  tick Friday, March 7, 14
  263. 308.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie  <  Item        def  tick          #  ...        end    end    class  Sulfuras  <  Item        def  tick        end    end    class  Backstage  <  Item        def  tick Item    quality    days_remaining Friday, March 7, 14
  264. 309.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie  <  Item        def  tick          #  ...        end    end    class  Sulfuras  <  Item        def  tick        end    end    class  Backstage  <  Item        def  tick Item    quality    days_remaining Normal Brie Sulfuras Backstage    quality    days_remaining    tick Friday, March 7, 14
  265. 310.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie  <  Item        def  tick          #  ...        end    end    class  Sulfuras  <  Item        def  tick        end    end    class  Backstage  <  Item        def  tick Item    quality    days_remaining Normal Brie Sulfuras Backstage    quality    days_remaining    tick Friday, March 7, 14
  266. 311.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie  <  Item        def  tick          #  ...        end    end    class  Sulfuras  <  Item        def  tick        end    end Friday, March 7, 14
  267. 312.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie  <  Item        def  tick          #  ...        end    end    class  Sulfuras  <  Item        def  tick        end    end Friday, March 7, 14
  268. 313.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            #  ...        end    end    class  Brie  <  Item        def  tick          #  ...        end    end    class  Sulfuras  <  Item        def  tick        end    end Friday, March 7, 14
  269. 314.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Sulfuras  <  Item        def  tick        end    end Friday, March 7, 14
  270. 315.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Sulfuras  <  Item        def  tick        end    end Friday, March 7, 14
  271. 316.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       def  tick        end    end    class  Sulfuras  <  Item        def  tick        end    end Friday, March 7, 14
  272. 317.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       def  tick        end    end    class  Sulfuras  <  Item        def  tick        end    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Sulfuras        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  273. 318.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       def  tick        end    end    class  Sulfuras  <  Item        def  tick        end    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Sulfuras        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  274. 319.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       def  tick        end    end    class  Sulfuras  <  Item        def  tick        end    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Item        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  275. 320.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       def  tick        end    end    class  Sulfuras  <  Item        def  tick        end    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Item        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  276. 321.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       def  tick        end    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Item        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  277. 322.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       def  tick        end    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Item        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  278. 323.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       def  tick        end    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Item        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end Friday, March 7, 14
  279. 325.

    @sandimetz Mar 2014 module  GildedRose    def  self.for(name,  quality,  days_remaining)

           klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Item        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end end Friday, March 7, 14
  280. 326.

    @sandimetz Mar 2014 module  GildedRose    DEFAULT_CLASS  =  Item  

     SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Item        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end end Friday, March 7, 14
  281. 327.

    @sandimetz Mar 2014 module  GildedRose    DEFAULT_CLASS  =  Item  

     SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        klass_for(name).new(quality,  days_remaining)    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Item        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end end Friday, March 7, 14
  282. 328.

    @sandimetz Mar 2014 module  GildedRose    DEFAULT_CLASS  =  Item  

     SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        klass_for(name).            new(quality,  days_remaining)    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Item        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end end Friday, March 7, 14
  283. 329.

    @sandimetz Mar 2014 module  GildedRose    DEFAULT_CLASS  =  Item  

     SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).            new(quality,  days_remaining)    end    def  self.klass_for(name)        case  name        when  'normal'            Normal        when  'Aged  Brie'            Brie        when  'Sulfuras,  Hand  of  Ragnaros'            Item        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            Backstage        end    end end Friday, March 7, 14
  284. 330.

    @sandimetz Mar 2014 module  GildedRose    DEFAULT_CLASS  =  Item  

     SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).            new(quality,  days_remaining)    end end Friday, March 7, 14
  285. 332.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end module  GildedRose    class  Item        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,      end end Friday, March 7, 14
  286. 333.

    @sandimetz Mar 2014 module  GildedRose    class  Brie  <  Item

           def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end module  GildedRose    class  Item        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,      end end Friday, March 7, 14
  287. 334.

    @sandimetz Mar 2014 module  GildedRose    DEFAULT_CLASS  =  Item  

     SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).            new(quality,  days_remaining)    end end module  GildedRose    class  Item        attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,      end end Friday, March 7, 14
  288. 335.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remainin    end end small objects Friday, March 7, 14
  289. 336.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remainin    end end small objects class  GildedRose    attr_reader  :name,  :quality,  :days_remaining    def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        if  @name  !=  'Aged  Brie'  &&  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC            if  @quality  >  0                if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                    @quality  -­‐=  1                end            end        else            if  @quality  <  50                  @quality  +=  1                if  @name  ==  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @days_remaining  <  11                        if  @quality  <  50                            @quality  +=  1                        end                    end                    if  @days_remaining  <  6                        if  @quality  <  50                            @quality  +=  1                        end                    end                end            end        end        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'            @days_remaining  -­‐=  1        end        if  @days_remaining  <  0            if  @name  !=  "Aged  Brie"                if  @name  !=  'Backstage  passes  to  a  TAFKAL80ETC  concert'                    if  @quality  >  0                        if  @name  !=  'Sulfuras,  Hand  of  Ragnaros'                            @quality  -­‐=  1                        end                    end                else                    @quality  =  @quality  -­‐  @quality                end            else                if  @quality  <  50                    @quality  +=  1                end            end        end    end end big conditional Friday, March 7, 14
  290. 337.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remainin    end end small methods class  GildedRose    attr_reader  :name,  :quality,  :days_remaining    def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end small objects Friday, March 7, 14
  291. 338.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 big conditional small methods small objects tick/for normal brie backstage other Total Complexity 40 50 Friday, March 7, 14
  292. 339.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 big conditional small methods small objects tick/for normal brie backstage other 33 40 50 Total Complexity Friday, March 7, 14
  293. 340.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end big conditional small methods small objects 50 84 40 Total Complexity Friday, March 7, 14
  294. 341.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end 0 45 90 big conditional small methods small objects 50 84 40 Total Complexity Friday, March 7, 14
  295. 342.

    @sandimetz Mar 2014 class  GildedRose    attr_reader  :name,  :quality,  :days_remaining

       def  initialize(name,  quality,  days_remaining)        @name,  @quality,  @days_remaining  =  name,  quality,  days_remaining    end    def  tick        case  name        when  'normal'            normal_tick        when  'Aged  Brie'            brie_tick        when  'Sulfuras,  Hand  of  Ragnaros'            sulfuras_tick        when  'Backstage  passes  to  a  TAFKAL80ETC  concert'            backstage_tick        end    end    def  normal_tick        @days_remaining  -­‐=  1        return  if  @quality  ==  0        @quality  -­‐=  1        @quality  -­‐=  1  if  @days_remaining  <=  0    end    def  brie_tick        @days_remaining  -­‐=  1        return  if  @quality  >=  50        @quality  +=  1        @quality  +=  1  if  @days_remaining  <=  0    end    def  sulfuras_tick    end    def  backstage_tick        @days_remaining  -­‐=  1        return                            if  @quality  >=  50        return  @quality  =  0  if  @days_remaining  <  0        @quality  +=  1        @quality  +=  1  if  @days_remaining  <  10        @quality  +=  1  if  @days_remaining  <  5    end end 0 45 90 big conditional small methods small objects 50 84 40 33 86 Total Complexity Friday, March 7, 14
  296. 343.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 big cond small meth small objs tick/for normal brie backstage other 33 Complexity 40 50 Friday, March 7, 14
  297. 344.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 GildedRose small meth small objs tick/for normal brie backstage other 33 Complexity 40 50 Friday, March 7, 14
  298. 345.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 GildedRose GildedRose(2) small objs tick/for normal brie backstage other 33 Complexity 40 50 Friday, March 7, 14
  299. 346.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 GildedRose GildedRose(2) many objs tick/for normal brie backstage other 33 Complexity 40 50 Friday, March 7, 14
  300. 347.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 GildedRose GildedRose(2) many objs tick/for normal brie backstage other 33 Complexity 40 50 Friday, March 7, 14
  301. 348.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 GildedRose GildedRose(2) many objs Backstage tick/for normal brie backstage other 33 Complexity 40 50 12 Friday, March 7, 14
  302. 349.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 GildedRose GildedRose(2) many objs Backstage average tick/for normal brie backstage other 33 Complexity 40 50 7 12 Friday, March 7, 14
  303. 350.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 GildedRose Backstage Complexity 50 12 Friday, March 7, 14
  304. 351.

    @sandimetz Mar 2014 module  GildedRose    class  Item    

       attr_reader  :quality,  :days_remaining        def  initialize(quality,  days_remaining)            @quality,  @days_remaining  =  quality,  days_remaining        end        def  tick        end    end    class  Normal  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  1            @quality  -­‐=  1  if  @days_remaining  <=  0        end    end    class  Brie  <  Item        def  tick            @days_remaining  -­‐=  1            return  if  @quality  >=  50            @quality  +=  1            @quality  +=  1  if  @days_remaining  <=  0        end    end    class  Backstage  <  Item        def  tick            @days_remaining  -­‐=  1            return                            if  @quality  >=  50            return  @quality  =  0  if  @days_remaining  <  0            @quality  +=  1            @quality  +=  1  if  @days_remaining  <  10            @quality  +=  1  if  @days_remaining  <  5        end    end    DEFAULT_CLASS  =  Item    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage  }    def  self.for(name,  quality,  days_remaining)        (SPECIALIZED_CLASSES[name]  ||  DEFAULT_CLASS).new(quality,  days_remaining)    end end 0 25 50 GildedRose Backstage Complexity 50 12 75% Friday, March 7, 14
  305. 354.

    @sandimetz Mar 2014 module  GildedRose    class  Conjured  <  Item

           def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  2            @quality  -­‐=  2  if  @days_remaining  <=  0        end    end Friday, March 7, 14
  306. 355.

    @sandimetz Mar 2014 module  GildedRose    class  Conjured  <  Item

           def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  2            @quality  -­‐=  2  if  @days_remaining  <=  0        end    end    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage} Friday, March 7, 14
  307. 356.

    @sandimetz Mar 2014 module  GildedRose    class  Conjured  <  Item

           def  tick            @days_remaining  -­‐=  1            return  if  @quality  ==  0            @quality  -­‐=  2            @quality  -­‐=  2  if  @days_remaining  <=  0        end    end    SPECIALIZED_CLASSES  =  {        'normal'                                                                        =>  Normal,        'Aged  Brie'                                                                  =>  Brie,        'Backstage  passes  to  a  TAFKAL80ETC  concert'  =>  Backstage,        'Conjured  Mana  Cake'                                                =>  Conjured  } Friday, March 7, 14
  308. 357.

    @sandimetz Mar 2014 #  Running: ............................... Fabulous  run  in  0.003917s,

     7914.2201  runs/s,  15828.4401  assertions/s. 31  runs,  62  assertions,  0  failures,  0  errors,  0  skips Friday, March 7, 14