【发布时间】:2008-09-29 20:07:32
【问题描述】:
在我们的下一个主要版本中,我们正在寻求全球化我们的 ASP.Net 应用程序,我被要求想出一种方法来跟踪在这项工作中已经完成了哪些代码。
我的想法是使用自定义属性并将其放置在所有已“修复”的类上。
你怎么看?
有人有更好的主意吗?
【问题讨论】:
标签: c# globalization
在我们的下一个主要版本中,我们正在寻求全球化我们的 ASP.Net 应用程序,我被要求想出一种方法来跟踪在这项工作中已经完成了哪些代码。
我的想法是使用自定义属性并将其放置在所有已“修复”的类上。
你怎么看?
有人有更好的主意吗?
【问题讨论】:
标签: c# globalization
使用属性来确定哪些类已经被全球化,然后需要一个工具来处理代码并确定哪些类已经“处理”了和没有被“处理”,看起来有点复杂。
更传统的项目跟踪流程可能会更好 - 并且不会使用在全球化项目结束后没有功能意义的属性/其他标记“污染”您的代码。为每个需要工作的类提出一个缺陷并以这种方式跟踪它怎么样?
【讨论】:
只计算或列出班级然后按班级工作呢?虽然属性可能是一个有趣的想法,但我认为它是过度设计的。全球化只不过是遍历每个类并全球化代码:)
无论如何,您都想在下一个版本之前完成它。因此,继续进行,一件一件地做,您就有了进步。我也认为为每个班级提出的缺陷太多了。
在我的上一个项目中,我开始全面全球化的时间有点晚。我只是从上到下浏览了代码文件列表。在我的情况下按字母顺序排列,一个文件夹接一个文件夹。所以我总是只需要记住我上次处理的文件。这对我来说效果很好。
编辑:另一件事:在我的上一个项目中,全球化主要涉及将硬编码的字符串移动到资源文件,并在运行时语言更改时重新生成所有文本。但是您还必须考虑数字格式等问题。微软的 FxCop 帮我解决了这个问题,因为它标记了所有数字转换等,而没有将文化指定为违规。 FxCop 会对此进行跟踪,因此当您解决此类违规并重新运行 FxCop 时,它会将违规报告为缺失(即已解决)。这对于这些难以看到的东西特别有用。
【讨论】:
为应用中的每个页面编写一个单元测试怎么样?单元测试将加载页面并执行
foreach (System.Web.UI.Control c in Page.Controls)
{
//Do work here
}
对于工作部分,加载不同的全球化设置并查看 .Text 属性(或您的应用的相关属性)是否不同。
我的假设是,除了最简单的情况外,任何语言都不应出现相同的情况。
使用成功完成的单元测试集来跟踪您的进度。
【讨论】: