LoginSignup
1
1

More than 5 years have passed since last update.

sigilの是非

Last updated at Posted at 2012-07-25

最近の言語はsigil (シジル; 変数の先頭につく記号) が無いほうが主流だが、果たしてどちらがよいのか。

sigilのメリット

  • 変数と関数の区別がつきやすい

    • 一般に、変数の参照は副作用がないため、区別できるのは望ましい
    • しかし、関数がファーストクラスオブジェクトの言語では $foo->() とすることができてしまい、これはすでに関数呼び出しである
  • キーワードや関数と名前が衝突しないことが保証されている

    • 変数名を考えるコストが少ない
    • Perl5の場合は $a, $b でハマることがよくある
    • ただしキーワードハイライトで代用可能
  • makeやshellなどのUNIX tool chainではよく使われるし、散文でも変数を示すことができる(e.g. ${NextLanguage})

sigilのデメリット

  • 文字列リテラルのなかの式展開がクドい

    • Perl5だと単純な変数埋め込みは簡単 "foo $bar baz"
    • 複雑な式展開は記号だらけ
    • "foo ${¥do{ 1 + $foo }} bar"
    • "foo @{[ 1 + $foo ]} bar"
    • Ruby: bar = 42; "foo #{bar+1} baz"
    • Dart: bar = 42; "foo ${bar+1} baz"
  • $ はシフトキーを要求するので入力コストは増える

結論

近代的なパラダイム・開発環境のもとではメリットはあまりない。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1