从“哎呀”到“啊哈!”——避免在ObjectScript中犯初学者常犯的错误
初次接触 ObjectScript 确实令人兴奋,但如果你习惯了其他编程语言,可能会觉得它有些不同寻常。许多初学者都会遇到同样的障碍,因此这里列出了一些需要注意的“陷阱”。(还有一些友好的建议,帮助你避免这些陷阱)
随意命名
我们都曾有过这样的经历:为了尽快推进工作,把某个东西命名为 Test1 或 MyClass。但一旦项目规模扩大,这些名称就会变成一场噩梦。
➡ 从一开始就选择清晰、一致的命名。不妨将其视为给未来的自己和团队成员留下的“面包屑”。
混淆全局变量与局部变量
全局变量(^GlobalName)起初可能会让人感到困惑。它们不仅仅是普通的变量。它们存在于数据库中,即使代码停止运行后仍会保留。
➡ 仅在真正需要持久化数据时才使用它们。其他情况下,请坚持使用局部变量。(这也能节省存储空间。)
忽略事务
试想一下,你在更新患者记录时,会话却中途崩溃了。如果没有事务,你将只得到半成品的数据。
➡ 将重要的更新操作封装在 TSTART/TCOMMIT 中。这就像同时点击“保存”和“撤销”一样。
在字符串中构建 SQL
直接将 SQL 嵌入字符串中并执行虽然很诱人,但很快就会变得混乱且难以调试。
➡ 使用嵌入式 SQL。它更简洁、更安全,也更容易维护。
示例:
❌ 在字符串中构建 SQL
Set id=123
Set sql="SELECT Name, Age FROM Patient WHERE ID="_id
Set rs=##class(%SQL.Statement).%ExecDirect(,sql)✅ 使用嵌入式 SQL
&SQL(SELECT Name, Age INTO :name, :age FROM Patient WHERE ID=:id)
Write name_" "_age,!忽略错误处理
没有人愿意看到自己的应用因一条晦涩难懂的错误信息而崩溃。这种情况通常发生在忽略错误处理时。
➡将高风险操作封装在 TRY/CATCH 中,并为自己提供有意义的错误信息。
忽视更优质的工具
没错,终端确实能用。但如果你只在终端里编写代码,那就错失良机了。
➡使用安装了 ObjectScript 扩展的 VS Code。调试、自动补全和语法高亮功能会让你的开发过程轻松许多。
reinventing the wheel
新手开发者常常试图编写自己的日志记录或 JSON 处理工具,却没意识到 ObjectScript 本身已经提供了内置解决方案。
➡ 在自行开发之前,请先探索%Library和动态对象。
编写“神秘代码”
我们都曾想过:“等会儿我肯定会记得的。”
⚠️剧透:你绝对记不住!
➡ 添加简短、清晰的注释。哪怕只是一行解释你为何这么做的代码,也能带来超~级大的帮助。
最后感言 : )
学习ObjectScript就像学习任何其他新语言一样。这需要一点耐心,而且你在学习过程中难免会犯错。关键是要尽早识别这些常见的陷阱,并从一开始就养成良好的习惯。这样一来,你就不必与这门语言抗争,反而能真正享受它带来的乐趣。 :)