引数名(アサーションをアスペクト&メタデータで実装)
事前条件や事後条件では,メソッドの引数にアクセスできます.引数は名前を持っています.ということで当然,事前事後条件からも引数に名前でアクセスしたい!!
わけですが,これまた難題.
なんせ,リフレクションでは引数の名前を取れませんから,ソースから取得するしかありません.
ソースから名前を取ったとしても,まだ問題が.
基底クラスと派生クラスでは,異なった引数名を使うことができます.
例えば基底クラスのメソッドで引数名がkey
だとすると,その事前条件中でもkey
という名前でアクセスします.
一方,派生クラスでメソッドをオーバーライドして,その引数名がname
だとすると,その事前条件中でもname
という名前でアクセスします.
ということは,検証時には事前事後条件ごとにBinding
を変えてあげないといけない? あるいは条件中の引数名を置換する? どっちもいやーん!
ということで,不本意ながら事前・事後条件から引数にアクセスする際には,args
配列を使うことにします.
心より恥じる.