Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Goでのチーム開発に途中参画した私が納得して実装を進めるためにやったこと ~ 命名編 ~

Goでのチーム開発に途中参画した私が納得して実装を進めるためにやったこと ~ 命名編 ~

オンボーディング時に抱いた疑問から、Goの思想を再度振り返った上でチーム内で改めてコーディングルールのすり合わせを行った結果の一例の紹介です。

Avatar for m_t_tion1

m_t_tion1

June 09, 2024
Tweet

More Decks by m_t_tion1

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ 2 Kaoru Muta ໂా ܆ (ϝϯτε) ੜ·ΕҭͪେࡕͰࠓ΋େࡕʹ͍·͢ 2024೥2݄ʹגࣜձࣾBuySell Technologies

    join. ങऔج൫/๚໰ങऔʹಛԽͨ͠αʔϏεͷ৽ن։ൃʹैࣄ ങऔɾࠪఆ ങऔछผʹԠͨ͡࠷దͳγεςϜߏங Visit -๚໰ങऔ- Store -ళฮങऔ- ങऔ ϦϢʔεϓϥοτϑΥʔϜCosmos ࣗࣾ։ൃͷϦϢʔεಛԽۀ຿جװγεςϜͰ͋ΓαʔϏε܈ͷू߹ମ @m_t_tion1
  2. ຊൃදͷཁ఺ͱϞνϕʔγϣϯ 3 ʮڷ (=Go)ʹೖΒ͹ڷʹै͑ʯΛνʔϜͰୡ੒͢ΔͨΊʹ ίʔσΟϯάʹؔ͢Δҙࢥ౷ҰΛνʔϜ಺ͰߦͬͨΒɺ ίʔυʹҰ؏ੑ͕ग़ͨ & ϨϏϡʔίετͱ೰ΈϙΠϯτ͕গͳ͘ ͳͬͨ࿩ ཁ఺

    Ϟνϕ ҎԼͷ఺Λօʹฉ͍ͯΧδϡΞϧʹσΟεΧογϣϯ͍ͨ͠ • ౰ൃදͰऔΓ্͛Δࣄ৅ʹࣅͨૺ۰ͨ͜͠ͱ͕͋Δ͔ ◦ ૺ۰ͨ͠৔߹͸ɺͲ͏ରॲ͔ͨ͠ ◦ ͠ͳ͔ͬͨ৔߹͸ɺެࣜͷϧʔϧʹै͏ͷΈͰ े෼ͩͬͨͷ͔
  3. ΦϯϘʔσΟϯά࣌ͷܦݧ 4 • ࠓ·ͰJavaϝΠϯͰॻ͍͍ͯͨΤϯδχΞ • GoͰ࡞͍ͬͯΔ0 → 1ͷ৽ن։ൃͷ్தͰJOIN • طଘίʔυΛ֬ೝ͠ΩϟονΞοϓ

    ঢ়گ ײ૝ • Go͸දݱੑ͕௿͘ɺॻ͖ํͷ͹Β͖ͭ͸গͳ͍͸ͣ (গͳ͘ͱ΋JavaΑΓ͸) ͔͠͠ɺҎԼͷ఺Ͱ͹Β͖͕ͭɾɾ ◦ ม਺໊ͷলུͷ࢓ํ ◦ ϙΠϯλͷ࢖͍ॴ...etc ίʔυϨϏϡʔͷίετ૿Ճ, ॻ͖ํʹ໎͍͕ੜ͡ΔՄೳੑ
  4. ΦϯϘʔσΟϯά࣌ͷܦݧ 5 • ࠓ·ͰJavaϝΠϯͰॻ͍͍ͯͨΤϯδχΞ • GoͰ࡞͍ͬͯΔ0 → 1ͷ৽ن։ൃͷ్தͰJOIN • طଘίʔυΛ֬ೝ͠ΩϟονΞοϓ

    ঢ়گ ײ૝ • Go͸දݱੑ͕௿͘ɺॻ͖ํͷ͹Β͖ͭ͸গͳ͍͸ͣ (গͳ͘ͱ΋JavaΑΓ͸) ͔͠͠ɺҎԼͷ఺Ͱ͹Β͖͕ͭɾɾ ◦ ม਺໊ͷলུͷ࢓ํ ◦ ϙΠϯλͷ࢖͍ॴ...etc ίʔυϨϏϡʔͷίετ૿Ճ, ॻ͖ํʹ໎͍͕ੜ͡ΔՄೳੑ ຊൃදͷτϐοΫ
  5. Go styleguide - #variable-names • ʮաෆ଍ͳ͍ʯ (= Clarity / Concision)

    ໋໊Λ͢΂͖ ◦ ม਺͕ࢀর͞ΕΔൣғ (= Scope)ʹԠͯ͡ҟͳΔ ◦ লུͯ͠΋୹͍είʔϓͰม਺ͷ໾ׂ͕ࣗ໌ͳΒOK ◦ লུͨ͠ม਺Λ௕͍είʔϓͰ࢖͍ճ͢ͱՄಡੑ͕མͪΔͨΊNG 11 *ߦ਺͸ݫ֨ͳ΋ͷͰͳ͘ɺGo styleguideهࡌͷࢀߟͰ঺հ͞Ε͍ͯΔ਺ࣈ ref: https://google.github.io/styleguide/go/decisions#variable-names ୹͍είʔϓͷྫ (*1~7ߦ) ௕͍είʔϓͷྫ (*25ߦ~)
  6. ݸਓͷݟղ • େલఏͱͯ͠GoެࣜͰఏএ͍ͯ͠Δࢥ૝ʹै͏ • ݸਓ͓ΑͼνʔϜͰʮաෆ଍ͳ໋໊͍ʯͱ͸ΛࡲΓ߹Θͤͨํ͕ ࣮૷ऀɾϨϏϡϫʔͱ΋ʹ޾ͤʹͳΕΔͷͰ͸ʁ ◦ ୹͍είʔϓ ▪ Ұ࣌తͳม਺

    ▪ ؔ਺ͷ໊લ΍ฦΓ஋͔Β΋Β͏஋͕ࣗ໌ͳ৔߹ ◦ ௕͍είʔϓ ▪ ೝ஌ෛՙ্͕͕Γͦ͏ͳ৔߹͸লུ͠ͳ͍ ▪ (ͦ΋ͦ΋௕͗͢Δείʔϓ͸ϝιουͱͯ͠ͷ෼ׂΛ ݕ౼͢Δ৔߹΋͋Δ) 12
  7. ӡ༻ޙͷνʔϜ಺֎͔ΒͷϑΟʔυόοΫ 15 • νʔϜͰվΊͯGoͷࢥ૝Λ৮ΕֶͯͿ͜ͱ͕Ͱ͖ͨ • ίʔυʹҰ؏ੑ͕ग़࣮ͯ૷Λ͢Δ্Ͱ໎͍͕ͳ͘ͳͬͨ • (͜͜͸ݸਓͷײ૝Ͱ͕͢) ίʔυϨϏϡʔͰGoͷࢥ૝ʹؔ࿈ ͢Δ໋໊ʹؔͯ͠ࢦఠ͢Δ͜ͱ͸ݮͬͨ

    Good More • ৽نࢀೖऀ͕͖ͨ࣌ʹಉ༷ͷٞ࿦͕ੜ·ΕΔՄೳੑ͕͋Δ ͦͷͨΊఆظతʹݟ௚͢͜ͱ͕ඞཁ͔΋ ◦ ຖ౓ม͑Δͷ͸ӡ༻ίετ͕ߴͦ͏ ◦ Goͷࢥ૝ʹै͏ͷ͸ม͑ͳ͍͍ͯ͘ ◦ ʮաෆ଍ͳ͍ʯΛೝ஌ෛՙɾՄಡੑͷ؍఺Ͱ ఆظతʹ࿩͢ͷ͸Αͦ͞͏
  8. ຊൃදͷཁ఺ͱϞνϕʔγϣϯ 16 ʮڷ (=Go)ʹೖΒ͹ڷʹै͑ʯΛνʔϜͰୡ੒͢ΔͨΊʹ ίʔσΟϯάʹؔ͢Δҙࢥ౷ҰΛνʔϜ಺ͰߦͬͨΒɺ ίʔυʹҰ؏ੑ͕ग़ͨ & ϨϏϡʔίετͱ೰ΈϙΠϯτ͕গͳ͘ ͳͬͨ࿩ ཁ఺

    Ϟνϕ ҎԼͷ఺Λօʹฉ͍ͯΧδϡΞϧʹσΟεΧογϣϯ͍ͨ͠ • ౰ൃදͰऔΓ্͛Δࣄ৅ʹࣅͨૺ۰ͨ͜͠ͱ͕͋Δ͔ ◦ ૺ۰ͨ͠৔߹͸ɺͲ͏ରॲ͔ͨ͠ ◦ ͠ͳ͔ͬͨ৔߹͸ɺެࣜͷϧʔϧʹै͏ͷΈͰ े෼ͩͬͨͷ͔