“名前が無い(Missing)から始まり、無意味(Nonsense)、実直(Honest)、実直かつ完全(Honest and Complete)、正しいことをする(Does the Right Thing)、意図を表す(Intent)、そして最終段階のドメイン抽象(Domain Abstraction)”
ディベロッパ/プログラマの視点から言えば、定数はリファクタリングの第一歩に過ぎなくて、リファクタリングを繰り返して、コードを磨き上げるのが重要。パターンを使うことでマジックナンバーが消えることもある
“データ抽象とは、データの表現(int→定数→Enumという改善で、値に名前を付ける)を内側に隠し、可能な操作だけを外に見せること。知りたいのは「この注文はキャンセルできるか」「再出荷できるか」であって”
CanCancel()とかで判断できる方がいいのは間違いない。ただ少なともVisual Studioなら定数の値はその場で見れるので見に行く必要はないし、やっぱりConstantsみたいなものにもまとめるだけでもやらんより全然良いと思う
名前付定数に置き換えるだけだと抽象化が足りないよねって話か。ツイッターで見た時は名前付定数に置き換えるのはむしろ改悪とか言い出してて本気で言ってるのか?と思ったが。
マジックナンバーを定数やEnumにするだけでは不十分。重要なのは値を振る舞いの内側に隠し、利用側に値の解釈をさせないこと。Order.canCancel() や RetryPolicy.isExhausted() がデータ抽象。
マジックナンバーとデータ抽象 - kawasima
“名前が無い(Missing)から始まり、無意味(Nonsense)、実直(Honest)、実直かつ完全(Honest and Complete)、正しいことをする(Does the Right Thing)、意図を表す(Intent)、そして最終段階のドメイン抽象(Domain Abstraction)”
ディベロッパ/プログラマの視点から言えば、定数はリファクタリングの第一歩に過ぎなくて、リファクタリングを繰り返して、コードを磨き上げるのが重要。パターンを使うことでマジックナンバーが消えることもある
“データ抽象とは、データの表現(int→定数→Enumという改善で、値に名前を付ける)を内側に隠し、可能な操作だけを外に見せること。知りたいのは「この注文はキャンセルできるか」「再出荷できるか」であって”
CanCancel()とかで判断できる方がいいのは間違いない。ただ少なともVisual Studioなら定数の値はその場で見れるので見に行く必要はないし、やっぱりConstantsみたいなものにもまとめるだけでもやらんより全然良いと思う
名前付定数に置き換えるだけだと抽象化が足りないよねって話か。ツイッターで見た時は名前付定数に置き換えるのはむしろ改悪とか言い出してて本気で言ってるのか?と思ったが。
マジックナンバーを定数やEnumにするだけでは不十分。重要なのは値を振る舞いの内側に隠し、利用側に値の解釈をさせないこと。Order.canCancel() や RetryPolicy.isExhausted() がデータ抽象。