コンテンツにスキップ

命名と設計哲学:YOYUにおける省略と明示のバランス

提供: ウィキバーシティ


はじめに

[編集]

YOYUは自由な発想を許容しながらも、保守性や一貫性を重んじる構文解析インフラである。本稿では、関数名の命名に関する一見些細な判断が、実は構文設計そのものに関わる深い思想を含んでいることを論じる。

LInsertAfter という短縮命名

[編集]

開発初期において、関数名 `ListInsertAfter` を短縮して `LInsertAfter` とした。これはコード上の簡便さを優先した命名である。

違和感の発生

[編集]

短縮形は以下のような問題を生んだ:

  • 意味が曖昧(`L`が何を指すのか明示されない)
  • 読み手に負担をかける(推測を強いる)
  • 検索性・保守性の低下

ListInsertAfter に戻す決断

[編集]

この違和感を解消するため、関数名を元の `ListInsertAfter` に戻した。この判断には以下の設計思想が込められている:

  • 構造体 `List` に対応する関数は `ListXXX` に統一する
  • 省略よりも可読性・検索性・一貫性を優先する
  • 構文は短く書くよりも、構造を保つことが大事

構造の名前は、構造の性質から生まれる

[編集]

YOYUでは、全ての構造に名前を付けるわけではない。**「名前を与えるに値する構造とは何か」**という問いがまずある。

シングルリンクリストには名前を与えない

[編集]

単純なシングルリンクリストについては、特定の構造体やライブラリとして抽象化しない。 これは次のような思想に基づいている:

  • シングルリンクリストは最小単位の構造であり、ポインタ1つで十分説明可能である
  • ライブラリに抽象化することでかえって意味を不明瞭にする
  • 各自が「構造を理解してたどる」ことが保守・表現力の両面で望ましい

LISP的リストには Cons という名前を与える

[編集]

一方、LISPにおける「car/cdr の対からなる構造」には `Cons` という明示的な名前を与える。これは次の理由による:

  • 明確に語彙としての意味を持つ(LISPにおける意味的な構造)
  • 再帰的・動的に構造化され、意味解析やS式構文木と直結している
  • 単なるポインタ以上の抽象的操作(car, cdr, list変換など)が存在する

命名は構文である

[編集]

YOYUでは、命名が構文木の構造や読みやすさに直結する。単なる文字列ではなく、「意味のある記号」として扱われる。ゆえに命名の整合性は構文設計と同一視される。

結論

[編集]

命名の短縮と明示のバランスは、設計哲学そのものを映し出す鏡である。YOYUにおける `ListInsertAfter` の命名は、構文木設計の一貫性と長期的保守性を優先するという方針を如実に表している。

また、構造に名前を与えるか否かという判断もまた、YOYUが**「構文ではなく意味のある設計」に基づいて動いている**ことを示している。