26. “The great thing about programming is
pretty much everyone's code is shit.
Writing software is hard, so it's no problem
finding dogs in someone's stuff”
(Zed Shaw)
50. class Movie
def initialize...end
def recommended?
rating >= 8
end
def rating
more_than_five_stars? ? 8 : 1
end
def more_than_five_stars?
@stars > 5
end
end
51. class Movie
def initialize...end
def recommended?
rating >= 8
end
def rating
@stars > 5 ? 8 : 1
end
end
78. class MountainBike
def price
...
end
end
MountainBike.new(:type => :rigid, ...)
MountainBike.new(:type => :front_suspension, ...)
MountainBike.new(:type => :full_suspension, ...)
79. def price
if @type_code == :rigid
(1 + @comission) * @base_price
end
if @type_code == :font_suspension
(1 + @comission) * @base_price +
@front_suspension_price
end
if @type_code == :full_suspension
(1 + @comission) * @base_price+
@front_suspension_price +
@rear_suspension_price
end
end
80. def price
if @type_code == :rigid
(1 + @comission) * @base_price
end
if @type_code == :font_suspension
(1 + @comission) * @base_price +
@front_suspension_price
end
if @type_code == :full_suspension
(1 + @comission) * @base_price+
@front_suspension_price +
@rear_suspension_price
end
if @type_code == :ultra_suspension
...
end
end
86. class RigidMountainBike
include MountainBike
end
class FrontSuspensionMountainBike
include MountainBike
end
class FullSuspensionMountainBike
include MountainBike
end
88. class RigidMountainBike
include MountainBike
def price
(1 + @comission) * @base_price
end
end
89. class FrontSuspensionMountainBike
include MountainBike
def price
(1 + @comission) * @base_price +
@front_suspension_price
end
end
class FullSuspensionMountainBike
include MountainBike
def price
(1 + @comission) * @base_price +
@front_suspension_price +
@rear_suspension_price
end
end
90. def price
if @type_code == :rigid
raise "should not be called"
end
if @type_code == :font_suspension
(1 + @comission) * @base_price +
@front_suspension_price
end
if @type_code == :full_suspension
(1 + @comission) * @base_price+
@front_suspension_price +
@rear_suspension_price
end
end
91. def price
if @type_code == :rigid
raise "should not be called"
end
if @type_code == :font_suspension
raise "should not be called"
end
if @type_code == :full_suspension
raise "should not be called"
end
end
92. def price
if @type_code == :rigid
raise "should not be called"
end
if @type_code == :font_suspension
raise "should not be called"
end
if @type_code == :full_suspension
raise "should not be called"
end
end
93. class RigidMountainBike
include MountainBike
end
class FrontSuspensionMountainBike
include MountainBike
end
class FullSuspensionMountainBike
include MountainBike
end