文章 John Pan · 十一月 8 3m read

从“哎呀”到“啊哈!”——避免在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就像学习任何其他新语言一样。这需要一点耐心,而且你在学习过程中难免会犯错。关键是要尽早识别这些常见的陷阱,并从一开始就养成良好的习惯。这样一来,你就不必与这门语言抗争,反而能真正享受它带来的乐趣。 :)