【发布时间】:2009-08-10 19:38:52
【问题描述】:
在过程(或功能、模块等)设计中,有哪些常见的最佳实践可以平衡过程接口中对信息隐藏和适当抽象级别的需求与引入隐藏依赖项所固有的问题?
更具体地说,假设我编写了一个名为 getEmployeePhoneNbr(employeeId) 的过程。在内部,该过程是通过查询以employeeId 为键的数据库表来实现的。我想隐藏那些实现细节,但是现在这个过程依赖于一个外部文件,如果环境发生变化,这会阻碍它的使用。
每当过程使用外部资源(文件、数据库等)时,都会发生同样的情况。在过程中硬编码该资源的使用感觉是错误的,但我不确定替代方案是什么。
请注意,我不是在使用面向对象的语言工作;在可能的范围内,我最感兴趣的回答是广泛适用于任何类型的语言。 p>
谢谢, 马特
【问题讨论】:
-
你的语言支持函数指针吗?
-
函数指针+1。几乎所有围绕这个问题的解决方案在某种程度上都归结为函数指针。
-
我正在使用 SAS,它(在我看来)存在大量语言缺陷; SAS 中没有函数指针(事实上,在最新版本的 SAS 之前,根本没有用户定义的函数——必须通过使用 SAS 的(诚然非常丰富的)宏工具来弥补。因此,当我谈到“模块”在 SAS 的上下文中,我的意思是 SAS 宏。
标签: abstraction information-hiding external-dependencies