在代码中管理硬编码的文件路径/名称

时间:2015-04-28 18:18:18

标签: c++

我正在寻找在我的代码中处理硬编码文件路径/名称的最佳方法。将来它们将是用户输入,但是现在它们只是在代码中硬编码。我有以下可能的选择:

  • 将它们声明为私有类成员,并通过构造函数
  • 初始化它们
  • 宣布&在命名空间内初始化它们并通过命名空间
  • 访问它们
  • 将它们声明为公共类成员,并通过访问公共成员来初始化它们
  • 任何其他可能的做法?

我知道最好的选择取决于代码的细节,但我正在寻找一些想法来选择一个。

2 个答案:

答案 0 :(得分:4)

始终为这些数据设置包装函数。如何在不破坏函数用户的情况下轻松修改函数如何获取数据。

如果对象的所有实例的文件名都相同,则使该函数成为静态成员函数。

如果文件名可以与对象的一个​​实例不同,则使该函数成为常规成员函数。

答案 1 :(得分:3)

以下是工作包装类的示例!

public static void main(String[] args) {
    int value = 0;
    for (int i = 999; i >= 100; i--) {
        int r = value / i;
        if (r >= i) {
            System.out.println("We broke at i = " + i);
            break;
        }
        for (int j = i; j > r; j--) {
            int value1 = i * j;
            if (isPalindrome(value1)) {
                value = value1;
                break;
            }
        }
    }
    System.out.println(value);
}

现在,如果你想对此更严格一些,你可以从一个单例的基类继承这个类,这样你就只能创建一个这个对象的实例,但是你需要一个静态的get方法在此类中定义,它将在构造时返回此类指针。然后,您可以在需要它的项目中的任何位置使用const全局指针。

最好有一个错误处理类来捕获和抛出异常!这样,如果输入到存储的路径或要查找的字符串id无效,则将抛出异常。现在您不必使用字符串作为ID,您可以使用unsigned int并将此映射中的这些unsigned int键值与全局枚举关联起来,但这样做起来更简单,并且更友好一点阅读和使用。

这应该让你开始,我希望这有帮助!

在阅读本文之后,我将这个类的方法之一从setPath更新为addPath。我改变了这一点,因为设置声音更像是将单个值设置为单个成员变量,其中添加声音更像是将元素放入容器中。出于偏好的原因,它只是更加清晰,而不是现有的代码是错误的或不起作用。