管理大量常量的最佳方法是什么?

时间:2015-02-02 16:08:12

标签: oracle plsql

我目前正在开发一个非常复杂的程序,它处理来自输入表的行,并且每个记录都有大量可能的结果。因此,我为结果消息定义了大量常量。记录有一条成功消息,但有很多可能的警告和错误。

我的第一个想法是在包体层定义这些消息的所有常量,但后来我决定将每个常量移动到使用它的过程。我现在第二次猜测这个决定,并考虑将所有东西都移回包装体层。定义这么多常量的最佳方法是什么?易于维护是我该计划的最终目标,因为它非常复杂。

3 个答案:

答案 0 :(得分:4)

我认为这是一个品味问题。在我的应用程序中,我将所有错误代码放入错误包中。所有主要和常用的常量我放入一个单独的包中(没有包体)。

答案 1 :(得分:3)

同样,这是一个品味问题,但我倾向于在包规范级别而不是包体中放置一个命名常量列表,以便它们可以被应用程序的任何部分引用。如果我想更改c_err_for_specific_reason_x使用的错误代码,它就会成为一个单独的地方。

如果我想隐藏代码并将它们放在正文中,我会有一个get_error_code(p_get_error_name varchar)函数,该函数根据您传递有效的常量名称进行转换。

我已经在不同的项目中完成了两项工作,但是大部分时间都倾向于列表。如果它是表驱动的数据源,我倾向于使用该函数。

答案 2 :(得分:0)

它......等待它......取决于!

由于您当前在包体中定义了常量,因此您不需要在包外部公开访问它们。因此,在规范中定义它们并不会给你带来任何好处。

这是我遵循的规则:在所需的最小范围内定义常量。因此,如果仅在一个过程中使用常量,则在该过程中定义它。如果在多个过程中使用它,请在正文中定义它。如果它在其他包(或非打包的SP)中的代码中使用,但仅在使用特定包时,请在该包的规范中定义它。如果它被其他代码用于一般用途,请将其放在这些常规常量的单独规范中。