大家都知道 ACDSee 有 Viewer 和 Browser 两种模式。一般来说我们在“我的电脑”或者其他文件管理器里双击一个图片文件时 ACDSee 会以 Viewer 模式启动,以便让我们查看双击的这张图片。此时如果我们双击 ACDSee 的显示图片的区域,会使其切换到 Browser 模式,以便让我们浏览刚才打开的图片所在文件夹下的所有图片。

问题就出在这个 Browser 模式上。 Windows 2000 以上的版本默认把某个用户的注册表文件,各种软件的配置和数据文件等等保存到以该用户的名字命名的个人文件夹里,这个文件夹通常通常位于安装 Windows 的分区的 Documents and Settings 文件夹下。Windows 以环境变量 %USERPROFILE% 来表示它。而我为了让 Windows 彻底崩溃后不用手动去挽救数据,通常会把很多本来位于 %USERPROFILE% 文件夹里的系统特殊文件夹重定义到其他地方。包括 Application Data、桌面等。

结果,在随手删除掉 %USERPROFILE% 里已经无意义的“桌面”文件夹 (因为我已经把它重定义到了其他位置) 后,ACDSee 的 Browser 模式无法正常工作了。表现为由 Viewer 模式切换到 Browser 模式后不会显示出所在文件夹的任何图片文件,或者直接启动 Browser 也不会显示大多数文件夹下的图片文件。

发现造成这个问题的原因浪费了我几天前的一个夜晚几个小时的时间,最后在网友急云的提示下才搞清楚。

或许这只是个很小的,微不足道的,大多数人不会遇到的问题,但至少它对我们软件开发者来说有特别的意义。因为这很可能是 ACDSee 的作者在一定程度上使用了硬编码 (hard code) 造成的。

很多时候,我们为了方便而使用硬编码。要说是在用于教学或者演示的 demo 里为了方便或者突出重点使用硬编码,那是无可厚非的。但如果由此让自己或者别人养成了使用硬编码的习惯,那就罪大恶极了。

其实,著名的由两位数表示年份造成的“千年虫”问题就是个典型的硬编码带来的灾难。

标签:,

2 Responses to “发现一个 ACDSee 7.x 可能是因为硬编码造成的问题”

  1. 思春贴调查员(Khan)No Gravatar Says:

    b4自己抢1d贱淫

  2. RainuxNo Gravatar Says:

    楼上是在说你自己?

Leave a Reply