字符串常量
字符串资源文件
字符串应该打包到字符串资源文件中。这可以将字符串收集到一个位置,从而更容易更改字符串文本。通过使用字符串资源文件还可以实现本地化和全球化。在以前,生成和使用字符串资源文件并不是一件很容易的事情。不过,资源重构工具可以帮您解决这个问题,至少对于 C# 和 VB 项目而言是这样。例如,对于以下语句中的字符串常量而言即是如此:
private static string snippetSchemaPathBegin = Path.Combine(Environment.ExpandEnvironmentVariables("%ProgramFiles%"), @"/Microsoft Visual Studio 8/Xml/Schemas");
通过使用资源重构工具可以快速将其更改为以下内容:
private static string snippetSchemaPathBegin = Path.Combine(Environment.ExpandEnvironmentVariables( Strings.ProgramFiles), Strings.MicrosoftVisualStudio8XmlSchemas);
文件名和路径
在检查代码时,查找字符串常量或含有硬编码文件路径的字符串资源文件引用。请始终使用环境变量、提供路径名称的 .NET API(例如,System.Windows.Forms.Application.ExecutablePath,它返回启动应用程序的可执行文件的路径)或者配置文件条目来引用路径。人们常常会使用 C 盘以外的其他驱动器作为安装位置,有时会以其他方式自定义安装位置!
与此类似,应用程序的文件名不应定义为字符串或者在字符串资源文件的引用中进行定义。可采取的替代方法有:配置文件、环境变量或由用户输入(如传递到控制台应用程序的参数或 WinForms 应用程序中的文件对话框)。所有的这些替代方法给用户使用应用程序带来了更大的灵活性。
以下示例列举了几个不好的做法,包括使用硬编码路径和公共变量。
public static readonly string SnippetSchemaPathBegin = @"C:/Program Files/Microsoft Visual Studio 8/Xml/Schemas/";
如此处所示,该语句无法通过使用公共属性和 SystemDrive 环境变量来重写。
public string SnippetSchemaPathBegin { get { return snippetSchemaPathBegin; } } private static string snippetSchemaPathBegin = Environment.ExpandEnvironmentVariables("%SystemDrive%" + @"/Program Files/Microsoft Visual Studio 8/Xml/Schemas"); 与此类似,有人可能会使用 ProgramFiles 环境变量,如下所示。 private static string snippetSchemaPathBegin = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles"), @"Microsoft Visual Studio 8/Xml/Schemas");