访问控制语法 – journal.stuffwithstuff.com

作者在为自己的爱好幻想控制台项目设计脚本语言,探讨了不同语言中控制访问的模块系统及相关语法,包括修饰符关键字(如 Java、C#等)、修饰符部分(如 C++)、名称中的符号(如 Python、Go、Dart)、导出清单(如多数函数式语言)等。

  • 修饰符关键字明确但冗长,Java 和 C#常因过多模板和冗长而受诟病,Rust 用更短的pub且默认私有权限改善了情况。
  • 修饰符部分让语言上下文敏感,C++成员默认访问权限规则特殊,Ada 类似。
  • 名称中的符号语法简洁但隐晦,如 Go 用首字母大小写区分,Python 用单/双下划线,Dart 用单下划线,它们的缺点是需被告知规则且在使用处显示访问控制。
  • 导出清单将访问控制逻辑集中,但很冗长,需手动同步声明和清单,JavaScript 则采用混合方式。
  • Oberon 用*标记声明为公共,但新程序员难以理解。
    对于默认访问控制,作者认为严谨的软件工程师应默认私有权限以鼓励模块化,但若为爱好项目则应默认公共以方便用户完成任务,Dart 大多数用户也偏好默认公共。
    在设计自己脚本语言的语法时,作者排除了导出清单和修饰符部分,对名称中的符号也不太满意,目前在修饰符和声明处的符号之间纠结,最后想到用下划线作为私有声明关键字,虽不常见但似乎在脑海中印象深刻。
阅读 9
0 条评论