Errata - 99 Bottles of OOP
If you find any errors, please send details to errata@99bottlesbook.com.
Version 2.2.3
| Programming Language |
Beverage |
Location |
Correction |
|---|---|---|---|
| All | All | Everywhere | Replaced "hard coded" and "hardcoded" with "hard-coded". |
| Python | All | Everywhere | Change Python instance method separator from "." to "()." |
| JS, PHP, Ruby | All |
Listing 1.2 Following paragraphs |
Removed duplicate paragraph, modified explanations |
| All | All | Section 1.1.2 | Replaced the dead ABC Metric PDF URL with the working URL. |
| Python | All |
Section 1.1.3 After paragraph beginning "One of many possible" |
Added the missing `Kool-Aid` example. |
| All | All |
Listing 4.57 Preceding paragraph |
a overview —> an overview |
| All | All |
Listing 4.6 Following paragraph |
Replaced the hard-coded word “switch” with the language-specific conditional term (`case`, `match case`, or `switch`). |
| Python | All | Listing 6.22 | Added lines 34-36 |
| Python | All |
Chapter 6 Summary Final paragraph |
Changed factory name from "for" to "given" |
| All | All |
Listing 7.12 3rd paragraph below |
if fact —> in fact |
| All | All |
Figure 8.5 3rd paragraph below |
instead poking —> instead of poking |
| All | All |
Listing "Try the Wishful Code" (8.32 or 8.33 depending on language) Following paragraph |
Added missing word "line". |
| All | All |
Listing "Verse Gets Lyrics" (8.13 or 8.14 depending on language) 2nd paragraph below |
wishing thinking —> wishful thinking |
| Python | All |
Listing 3.13 2nd paragraph below |
Line numbers corrected |
| All | All |
Listing 4.8 5th paragraph above |
insures that —> ensures that |
| All | All |
Listing 4.60 Following paragraph |
the entire switch —> the entire case|match case|switch (language dependent) |
| Python | All | Listing 5.1 | Include missing line 42 |
| JS, PHP, Python | All |
Listing 5.11 Following paragraph |
Corrected line number to refer to correct listing line |
| All | All |
Listing 5.13 Preceding paragraph |
within the Bottle class —> within the Bottles class |
| All | All |
5.7 Summary 5th paragraph below |
entirely on Bottle's tests —> entirely on Bottles's tests |
| All | All |
5.7 Summary 6th paragraph below |
temporary field —> temporary variable |
| Python | All |
Listing 6.1 5th paragraph below |
Added two missing "five plus three" code examples |
| Python | All |
Listing 6.33 2nd paragraph below |
line 3 above —> line 4 above |
| Python | All |
Listing 6.45 3rd paragraph below |
has nine total lines —> has six total lines |
| All | All |
Listing 7.6 3rd paragraph above |
the [] lookup logic —> the key/value lookup logic |
| All | All |
Section 7.6. 3rd paragraph above |
methods would return —> method would return |
| Python | All |
Listing 7.9 Following paragraph |
Line 4 creates —> Line 7 creates |
| Python | All |
Listing 8.5 Following paragraph |
Bottles.verse —> Bottles().verse |
| All | All |
Listing "Lyrics by Wishful Thinking" (8.10 or 8.11 depending on language) 2nd paragraph above |
lyrics from BottleNumber —> lyrics from BottleVerse |
| All | All |
Listing "Wishing to Decouple From BottleVerse" (8.15 or 8.16 depending on language) 2nd paragraph below |
Line beginning "For now just recognize" was written to be more language specific |
| Python | All |
Listing 8.16 Following paragraph |
BottleVerse in referenced —> BottleVerse is referenced |
| All | All |
Section 8.6.2 1st paragraph below code example |
the duration method —> the durability method |
| PHP, Python | All |
Section 8.8 Preceding paragraph |
The lyrics method —> The _lyrics method |
| All | All |
Listing "BottleVerse Class Responds to Lyrics" (8.28 or 8.29 depending on language) Following paragraph |
BottleVerse class has been —> BottleVerse class been |
| Python | All |
Listing 8.29 Following paragraphs |
Refer to factory with "given" rather than "for". |
| All | All |
Listing 9.9 Preceding paragraph |
Rewrite paragraph with language specific references |
| PHP | All | Listing 9.9 | Correct to render the right example code |
| All | All |
Listing 9.14 2nd paragraph above |
tests is tell —> tests is to tell |
| All | All |
Listing 9.17 Preceding paragraph |
rename the test —> rename the class |
| Python | All |
Listing 9.18 Preceding paragraph |
lines 4, 8, and 12 —> lines 1, 8, 12, and 16 |
| Python | All | Listing 9.18 | Added the missing Python import/class lines |
| All | All |
Listing 9.20 4th paragraph below |
Enumerator —> Iterator |
| All | All |
Listing 9.24 Following paragraph |
they test same thing —> they test the same thing |
| Python | All |
Listing 9.36 Following paragraph |
add test_plays_verse_role to any —> add a test for the role to any |
| All | All | Footnote 27 | that group —> that you group |
Submitted by Kirk Brooks, David Fulmer, César Gómez-Mora, Aureliusz Kalinowski, Jakob Krigovsky, Ben Madafiglio, Gonzalo Riestra Menéndez, Daniel Murphy, Leonardo Nobrega, Andrew O'Neill, Danilo Piazzalunga, Andreas Wagner
Version 2.2.1
| Programming Language |
Beverage |
Location |
Correction |
|---|---|---|---|
| Python | All | Figures 8.3, 8.4, 8.5 | Figures were inadvertently omitted, have been added |
| Python | All | Listing 8.5, following paragraph | Removed note (does not apply to Python) |
| Python | All | Listing 8.26, following paragraphs | Replaced 'new' with 'instance creation' |
Submitted by Brian Sizemore
Version 2.2.0
| Programming Language |
Beverage |
Location |
Correction |
|---|---|---|---|
| Python | All | Listing 4.61 | Final line of code was missing, has been added |
Submitted by Jerry Wu
Version 2.1.1
| Programming Language |
Beverage |
Location |
Correction |
|---|---|---|---|
| All | All |
Figure 1.1 3rd paragraph below |
General is shorter —> General is shorter than |
| All | All | Preface | Javascript —> JavaScript |
| All | All |
List 5.10 2rd paragraph below |
from Bottle to BottleNumber —> from Bottles to BottleNumber |
| All | All |
List 5.10 2rd paragraph below |
nothing about Bottle has —> nothing about Bottles has |
Submitted by Josh Lubaway, Ashraf Nazar, Mark Tinsley
Version 2.1.0
| Programming Language |
Beverage |
Location |
Correction |
|---|---|---|---|
| PHP | Beer | Code examples | All examples should refer to beer rather than milk. |
| All | All |
Table 2.2 1st paragraph below |
as least as —> at least as |
| All | All |
Section 6.5 3rd paragraph above |
a object —> an object |
| All | All |
Listing 6.10 Prior paragraph |
makes it is easy —> makes it easy |
| PHP | All |
Chapter 7 Introduction |
BottleNumber.for —> BottleNumber::for |
| PHP | All |
Listing 8.11 2nd paragraph above |
$this->.verseTemplate(number) —> $this->verseTemplate(number) |
| Ruby | All |
Listing 8.24 1st paragraph below |
a object —> an object |
| JavaScript | All |
Section 8.6.3 Bulleted list 4 paragraphs above |
directly available to self —> directly available to this |
| PHP | All |
Section 8.6.3 Bulleted list 4 paragraphs above |
directly available to self —> directly available to $this |
| All | All |
Listing 9.1 5th paragraph below |
tangental —> tangential |
| All | All |
Appendix A, Section 'Doing the Exercise' 3rd paragraph below |
no tests is —> no test is |
Submitted by Blithe Brandon, David Carlin, Matthew Fonda, Gregor Gramlich, Steven Jehannet, Jeff Ramnani
Version 2.0.0
| Programming Language |
Beverage |
Location |
Correction |
|---|---|---|---|
| All | All |
Your Rights As A Reader 2nd paragraph below |
our rights are authors —> our rights as authors |
| All | Milk |
Before You Read This Book 2nd paragraph below |
milk and milk —> beer and milk |
| Ruby | All |
Section 1.1.3 8th paragraph above |
in lambdas are —> in lambdas) are |
| JavaScript | All |
Section 1.1.3 8th paragraph above |
in anonymous functions are —> in anonymous functions) are |
| All | All |
Figure 1.1 2rd paragraph below |
both Incomprehensibly Concise and Concretely Abstract —> Concretely Abstract |
| All | All |
Table 2.2 1st paragraph below |
as least as —> at least as |
| All | All |
Section 5.7 3rd paragraph below |
The total ABC score score, —> The total ABC score, |
| All | All |
Section 6.5 3rd paragraph above |
a object —> an object |
| All | All |
Listing 6.10 Prior paragraph |
makes it is easy —> makes it easy |
| JavaScript | All |
Listing 7.5 Following paragraph |
Line numbers are incorrect —> should read 6-8, 9, 9 and 11 |
| JavaScript | All |
Listing 8.11 Code examples above |
BottleVerse.new(number).lyrics —> Ruby example, please ignore |
| JavaScript | All |
Listing 8.6 Title |
Add Attr Reader and Initialize —> Initialize Number |
| All | All |
Listing 8.7 Title and previous sentence |
BottleNumber —> BottleVerse |
| All | All |
Listing 8.26 Prior paragraph |
died-in-the-wool —> dyed-in-the-wool |
| JavaScript | All |
Listing 9.31 Source code |
on lines 12 and 13 starting, ending —> upper, lower |
Submitted by Brandon Conway, Micah Corn, Lars Eckart, Viktor Fonic, Torbjörn Gannholm, Andris Klaipins, Conor Murray, Santiago Perez, Jeff Ramnani, Javier Rojas, David Sherline
Thanks to all.
1st Edition Errata have been archived.