Slide 1

Slide 1 text

How to read code Shimpei Makimoto! 2014-09-24

Slide 2

Slide 2 text

Shimpei Makimoto! Software Engineer photo by r7kamura @makimoto @makimoto

Slide 3

Slide 3 text

Today's talk w )PXUPSFBEDPEF w &YBNQMFJNBHFQOHJOHPMBOHMJCT w 8IZHP  w TFMGDPOUBJOFE w TJNQMFMBOHVBHFTQFD w OFX w 8IZJNBHFQOH

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

άϦονɾΞʔτΛ८ͬͯަΘ͞ΕΔٞ࿦ͷதʹ͸ɼάϦον͕ΘΕΘΕʹ༩͑Δ৺৅ͦ͜ຊ࣭ͩͱ͢Δཱ৔͕͋Γ·͢ɽͦͷཱ৔ ʹཱͭਓʑ͸ਅͷάϦον͸࠶ݱͰ͖ͳ͍ͱݴ͍ɼͦΕΒ͸ҰॠͰফ͑ڈΔͱݴ͍·͢ɽ࠶ݱͰ͖ͳ͍ͱओு͢ΔҎ্ɼ൴Β͸άϦο νɾΞʔτΛάϦονൈ͖Ͱߏ੒͠ͳͯ͘͸ͳΒͳ͍Ͱ͠ΐ͏ɽҰํͰɼϐΫηϧΛዞҙతʹฒͼସ͑ͨΓมܗͤͨ͞Γͨ͠ਤ૾Λ ΋ͬͯάϦονɾΞʔτͱ͢Δཱ৔͕͋Γ·͢ɽͦͷཱ৔͔ΒݟΔͱɼάϦονɾΞʔτͱ͸άϦονͷࢹ֮ޮՌΛϞνʔϑͱͨ͠ ਓ޻తͳΞʔτ࡞඼ͱ͍͏͜ͱʹͳΓ·͢ɽ ! ͜ͷɼ৺৅ͱͯ͠ͷάϦονͱϞνʔϑͱͯ͠ͷάϦον͸ɼάϦονͱ͍͏ݱ৅Λத৺ʹɼೋۃ΁ဃ཭͠ͳ͕ΒɼάϦονɾΞʔ τΛݻఆ͠͸͡Ί͍ͯ·͢ɽ͓ͦΒ͘কདྷతʹ͸ɼલऀͷओு͸άϦον࿦΍ඒֶͷจ຺΁ྲྀΕͯΏ͘Ͱ͠ΐ͏ɽޙऀ͸ΑΓҰൠత ͳҙຯͰάϦονɾΞʔτͷ໊Λ֫ಘͯ͠Ώ͘ʹҧ͍͋Γ·ͤΜɽάϦονɾϛϡʔδοΫͷઌྫʹؑΈͯ΋ɼͦΕ͸ࣗ͘͝વͳ੒ Γߦ͖ͩͱࢥΘΕ·͢ɽ VDOW   IUUQXXXOUUJDDPSKQ"SDIJWF0QFOTQBDF8PSLTUFYU@5BC@(MJUDI@KIUNM

Slide 6

Slide 6 text

Step 0: Read the spec (roughly) w IUUQXXXXPSH531/( w 3FBEJUSPVHIMZ w *OPVSDBTF l$IVOL4QFDJpDBUJPOTzNBZ CFVTFGVM

Slide 7

Slide 7 text

Step 1: Find files

Slide 8

Slide 8 text

Step 2: Understand data structure (1) http://golang.org/src/pkg/image/png/reader.go

Slide 9

Slide 9 text

Step 2: Understand data structure (2) http://golang.org/src/pkg/image/png/reader.go http://golang.org/pkg/image/

Slide 10

Slide 10 text

Step 3: Specify important public methods http://golang.org/src/pkg/image/png/reader.go http://golang.org/pkg/image/png/

Slide 11

Slide 11 text

Step 4: Reading w GVOD%FDPEF SJP3FBEFS  JNBHF*NBHF FSSPS  w GVOD E EFDPEFS DIFDL)FBEFS FSSPS w GVOD E EFDPEFS QBSTF$IVOL FSSPS w GVOD E EFDPEFS QBSTF*)%3 MFOHUIVJOU FSSPS w GVOD E EFDPEFS QBSTF1-5& MFOHUIVJOU FSSPS w GVOD E EFDPEFS QBSTFU3/4 MFOHUIVJOU FSSPS w GVOD E EFDPEFS QBSTF*%"5 MFOHUIVJOU  FSSFSSPS  w GVOD E EFDPEFS EFDPEF  JNBHF*NBHF FSSPS  w GVOD E EFDPEFS QBSTF*&/% MFOHUIVJOU FSSPS w GVOD E EFDPEFS WFSJGZ$IFDLTVN FSSPS

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

func (d *decoder) decode() (image.Image, error) w TSDQLHJNBHFQOHHP w IUUQTHJTUHJUIVCDPNNBLJNPUP DGDGF

Slide 17

Slide 17 text

wrap up w *OUSPEVDFEIPX*SFBEDPEF w 5PVOEFSTUBOEQPQVMBSBMHPSJUIN SFBEJOHMJCTJOHPMBOHJT WFSZIFMQGVM w *UPPLJNBHFQOHGPSBOFYBNQMF BOEUIFSF`SFNBOZ JNQMFNFOUTGPSQPQVMBSBMHPSJUINJOHPMBOH`TMJCT w *GZPVXBOUUPLOPX([JQDPNQSFTTJPO ZPVNBZSFBE DPNQSFTTH[JQ w *GZPVXBOUUPLOPX*1MPPLVQT ZPVNBZSFBEOFUMPPLVQ