ActBa64 のソース(主に .abp / .sbp / .wbp)向け。言語仕様は language.md、ビルドは build.md。
| 規則 | 内容 |
|---|---|
| 目標 | できれば 400 行以下 |
| 上限 | 最大 1000 行(これを超えない) |
| 対象 | src/actba64・src/Include・src/projecteditor の .abp / .sbp / .wbp。テスト・サンプルも同じ |
| 超過時 | 機能単位でファイルを増やす。単一の巨大ファイルに足し続けない |
新規ファイルは最初から 400 行以下を目指す。既存が 400 を超えていても、触る範囲で分割を進める。
End Function / End Sub の途中や、If ブロックの途中で切らないFunction / Sub / Type / Const / Dim などトップレベルで始め、End Function / End Sub(または End Type)で終わるType / Dim Shared / モジュール Dim は、結合順で先に来る先頭ファイルに置くactba64.pj の #SOURCE(および actba64.idx の #include)に 結合順どおり 追加する現行の Parser / AstLower / Preproc 分割一覧は build.md §コンパイラソースの分割。
#SOURCE / #include で連結されると 1 コンパイル単位 になる。分割は編集・レビュー用の物理ファイル分けであり、名前空間は分かれていない。
| 規則 | 内容 |
|---|---|
| 上限 | 1 つの Function / Sub は 10 行以内(Function/Sub 行から対応する End Function/End Sub まで) |
| 超過時 | ヘルパに切り出す。巨大な If / Select チェーンは条件種別ごとの手続きへ分ける |
新規・改修コードはこの上限を守る。既存の長い手続きは触るときに段階的に分割する(無関係な一括リファクタはしない)。
Parse* / Low* / Pp*)Print → StrD$、ファイル I/O → BaFile*)Line は図形命令のため、行番号用ローカルは srcLine など別名にする(line = … は「パラメータ指定が間違っています」になる)Long の加算、3 項以上の連鎖加算、定数の乗算は 16bit になることがある。コンパイラ本体で RVA やイメージベースを足すときは、DWord の局所へ一度ずつ代入する(AlignUp、PeCalcImage、CgSnapRva、CgAbs32Add、PeRelocRva)。p[off] の off も 16bit になることがあり、256 未満の索引だけ使う(PtrAddTo)src/Include/default/WinConsts.sbp(default.idx が自動挿入)。AB 4.20 の標準ヘッダにある名前(WM_* / WS_* / LB_* など)を .sbp に再 Const すると、AB 4.20 ビルドが「すでに定義されています」になるPP_LINE_MAX)。長い条件は _ や括弧内改行で分割する(詳細は language.md §7.1)actba64.pj / actba64.idx(または当該 .pj)を更新するsrc/actba64 で .\build.ps1 -Stage1Only と回帰(必要なら stage2 比較)