CakePHP3アプリケーションで、「マジックナンバー」的な値とどう向き合っていくかを考えた結果
Bye-Bye Magic NumberʙʮࣙॻʯΛ࡞ͬͨʙHideki Kinjyotwitter: @o0h_ / github: o0h
View Slide
ࣗݾհ• ίωώτגࣜձࣾ• αʔόʔαΠυΤϯδχΞ• ओʹCakePHPͳͲ
ࠓ͓͢Δ͜ͱ• ϚδοΫφϯόʔʹউͭͧɾɾɾʂ• ͦͷͨΊʹ”Ϟϊ”Λ࡞Γ·ͨ͠
Έͳ͞Μɺ ΞϓϦέʔγϣϯͷʮఆʯͷཧͲ͏͍ͯ͠·͔͢ʁϚδοΫφϯόʔతͳͭ
͜͏͍͏ͭ• Ϣʔβʔͷొঢ়ଶ͕ɾɾ• 0: ϝʔϧΞυϨε֬ೝͪ• 1: ࢧ͍ใ֬ೝͪ• 2: ొྃ
ᶃϚδοΫφϯόʔਏ͍
ᶃϚδοΫφϯόʔਏ͍• ಡΜͰ͍ͯʮಥવग़͖ͯͨʯײ͡• ʮಛผͳҙຯͷ͋Δʯʁʮྔͱ͔߹͍Λද͍ͯ͠Δʯʁ• ผ͕ͮ͠Β͍• grep͠ʹ͘͞ => ϦϑΝΫλ͠ʹ͘͞• etc… (άάͬͨΒ৭ʑग़ͯ͘ΔͷͰׂѪ
ᶄϞσϧΫϥεͷఆʹʂ
ᶄϞσϧΫϥεͷఆʹʂ• ୯ޠͰ໊લ͕͚ΒΕ͍ͯΔ͔Β͔Γ͍͢Ͷʂ• ؔ࿈͢ΔࣝΛ1Օॴʹ·ͱΊΒΕ͔ͯΓ͍͢Ͷʂ(scoped, contextual)
ᶄϞσϧΫϥεͷఆʹʂ• ʮͲͷΫϥεʹஔ͔͘ʯ·͍͠• ͋ΕɺTableʹ࣋ͨͤΔʁEntityʹ࣋ͨͤΔʁ• ͦͦϞσϧͱؔ࿈͠ͳ͍ࣝͲ͏͢Δʁ
ᶅConfigureΫϥεͰѻ͏ʂ
ᶅConfigureΫϥεͰѻ͏ʂ• ͜ΕͰ໊͚Մೳʂ• ֊ԽͰ͖Δʂ• ʮͲͷΫϥεʹଐ͢Δ͔ʯΛҙࣝͤͣʹ͓͚Δʂ
ᶅConfigureΫϥεͰѻ͏ʂ• Ζ͏ͱࢥ͑ॻ͖͑ΒΕͪΌ͏ΑͶ…• ७ਮͳʮΞϓϦέʔγϣϯͷઃఆʯͱ ͍ࠞͬͯ͟ΔͷɺԿͱͳ͘ؾ࣋ͪѱ͍͔…• ෆ༻ҙʹ͘ͳΓ͕ͪɻ• ͪͳΈʹɺ ίωώτʹ2,181ߦͷconstants.php͕͋Γ·͢
ͳΜ͔ྑ͍ͷͳ͍ͷ͔ͳʂ
ͭͬͯ͘Έͨʂ
ͳΜͰ͔͢• ఆΫϥεΛϦονʹ͠·ͨ͠Έ͍ͨͳͷ• ΫϥεΛఆٛͯ͠ ʮ໊લʯͱʮʯͷએݴΛ͓ͯ͘͠• ʮࣙॻʯ͕͍ͬͯΔใΛ ʮEnumʯͱͯ͠औΓग़ͤΔΑ͏ʹͳΔ• PHPʹྻڍܕ͕ͳ͍͔ΒΦϨΦϨ࣮
ʮࣙॻʯͷ࡞Γํ• AbstractΫϥεΛܧঝͯ͠• `ENUM_` prefixΛ࣋ͬͨconstΛએݴ͢Δ
ʮࣙॻʯͷ࡞Γํ
ʮࣙॻʯͷ͍ํ
ࣙॻͷԠ༻ᶃʮTypeʯ• Database\Type\EnumType• marshal/toPHPͰEnumΛѻ͑ΔΑ͏ʹ͢Δ
ࣙॻͷԠ༻ᶃʮEnumTypeʯ
ࣙॻͷԠ༻ᶄʮValidationʯ• ʮରԠ͢Δࣙॻʹએݴ͞Ε͍ͯΔ͔ʯΛ νΣοΫ͢ΔValidationProvider• ʮ͜ͷྻ͜ͷࣙॻʯͱ͍͏ͷΛ ηοτ͓ͯ͘͠ͱɺະએݴͳΛڋ൱Ͱ͖Δ
ࣙॻͷԠ༻ᶄʮValidationʯ
·ͱΊ• લੈͷΞϓϦέʔγϣϯͰ ϚδοΫφϯόʔconstansͷരൃ͕ਏͯ͘ɾɾ• CakePHP3ͷPJ্ཱͪ͛࣌ʹ ݁ߏͳίετΛ͔͚ͭͭɺ͜ͷػߏͷ࡞Λߦ͍·ͨ͠• ݁Ռɺॻ͖ํ͕౷Ұ͞Ε͍͍ͯײ͡ • ͱΓΘ͚ɺCakePHP3ͷORMपΓ͔ͳΓڧԽ͞Ε͍ΔͷͰ Type/ValidationपΓͱͷ࿈ܞ͕ศར• ಠཱͨ͠ϨϙδτϦʹ͓͍ͨࣄͰϙʔλϏϦςΟ
͝ਗ਼ௌɺ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ࣮ͷͱ͔͍ͯ͠ͳ͍ͷͰ ͓ؾܰʹฉ͍͍ͯͩ͘͞