在 Mathematica 内置符号以大写字母开头。因此,不接受用大写字母启动用户创建的符号名称是公认的做法。
这个限制应该延伸到语法的其他方面多远?良好实践是否要求大写字母不用于SetDelayed
或RuleDelayed
表达式中的命名模式(此类名称是本地化的)?
我认为大写字母以有用的方式扩展命名空间,并在视觉上区分小写的L和1。它们还允许以教科书的方式命名参数。
如果在将来的版本中引入了新的符号,那么命名的模式应该取代这些符号,现有的代码不应该破坏。
如果使用N
和D
之类的现有名称,则con是不明确的,但我觉得使用上下文和FrontEnd语法突出显示可以缓解这一点。
答案 0 :(得分:2)
这是我不接受的公认做法!
我指的是个人或第三方使用的套餐。 总的来说,我希望我的完成作品尽可能与理想(WRI)质量,外观和感觉无法区分。 这包括我的命令的长描述性名称,以及WRI使用的所有大小写约定。
当然,我的包裹 - 目前 - 远不及WRI质量,但至少我试图尽可能地将它们与标准MMA功能集成。这包括拥有大写的命令。
在开发过程中,语法突出显示警告我可能与标准MMA功能发生冲突,因此我可以采取适当的措施。 当然,我的命令和软件包可能会与MMA的未来版本冲突,但没有任何东西可以永久存在,如果未来的MMA命令在名称和功能上与我的命令类似,我只需切换到标准函数,命名最小或没有变化
除此之外,我发现在视觉上更有吸引力使用大写字母来区分包命令和更适度的临时变量。 如果你想看到一些视觉上不透明/不吸引人的代码,只需查看任何平均的Maple代码。
关于模式变量,我尝试给出有意义的,大多数是简短的模式名称,没有大写字母,因此用户可以通过查看Ctrl / Cmd-K模板来猜测我的包命令中需要什么样的输入。