gpt4 book ai didi

delphi - 单独 .pas 文件中的字符串

转载 作者:行者123 更新时间:2023-12-03 14:38:16 28 4
gpt4 key购买 nike

这可能不是这个问题的正确位置,如果不合适请随意移动它。我标记为 Delphi/Pascal 因为这是我在 atm 中工作的内容,但这可能适用于我猜的所有编程。

无论如何,我正在做一些代码清理,并考虑将程序中的所有字符串移动到单独的单个 .pas 文件中。这样做有什么优点和缺点吗?值得这样做吗?

澄清一下:我的意思是我将创建一个单独的文件 Strings.pas,在其中我将创建所有文本字符串变量。

例如

当前代码

 Messages.Add('The voucher was NOT sent to ' + sName+
' because the application is in TEST MODE.');
Messages.Add('Voucher Saved to ' + sFullPath);
Messages.Add('----------------------------------------------------------');

新代码将类似于:

Messages.Add(sMsgText1 + '' + sName + '' + sMsgText2 + '' + sFullPath)

Strings.pas 文件将保存所有字符串数据。希望这更有意义

最佳答案

将字符串移动到单独的文件中是个好主意!它将它们保持在一起,并让您在需要时轻松更改它们。您的问题并不是说您希望能够翻译它们,但集中化将有助于实现这一目标。

但是,代码如下:

Messages.Add(sMsgText1 + '' + sName + '' + sMsgText2 + '' + sFullPath)

比这样的代码更好:

Messages.Add('The voucher was NOT sent to ' + sName+
' because the application is in TEST MODE.');

您已将一个困惑但可读的函数调用变成了一个困惑且可读的函数调用。使用旧代码(上面的第二个片段),您可以阅读代码并大致了解消息将要说什么,因为其中很多内容都是文本形式的。使用新代码,您就不能这样做。

其次,移动字符串的原因是为了将相关项目放在一起并更容易更改它们。如果您想更改上述消息,而不是说“路径‘bar’中的文件‘foo’...”,而是改为“文件 bar\foo 是...”,该怎么办?你不能:消息的构建方式仍然是固定的并且分散在整个代码中。如果您想以相同的方式更改多条消息的格式,则需要更改许多单独的位置。

如果您的目标是翻译消息,这将是一个更大的问题,因为翻译通常需要重新措辞消息而不仅仅是翻译组件。 (例如,您需要更改消息中包含的子项目的顺序 - 您不能仅仅假设每种语言都是顺序替换中的短语对短语。)

进一步重构

我建议对您的消息代码进行更积极的重构。当您建议将邮件移至单独的文件时,您绝对是在正确的轨道上。但不要只移动字符串:还要移动函数。不要在代码中分散大量 Messages.Add('...'),而是找到您创建的消息的公共(public)子集。很多都会非常相似。创建一系列可以调用的函数,以便使用单个函数实现所有类似的消息,并且如果您需要更改它们的措辞,可以在一个位置完成。

例如,而不是:

Messages.Add('The file ' + sFile + ' in ' + sPath + ' was not found.');
... and elsewhere:
Messages.Add('The file ' + sFileName + ' in ' + sURL + ' was not found.');

只有一个功能:

Messages.ItemNotFound(sFile, sPath);
...
Messages.ItemNotFound(sFileName, sURL);

你得到:

  • 集中消息字符串
  • 集中消息功能
  • 减少代码重复
  • 更简洁的代码(函数调用中无需组装字符串,仅包含参数)
  • 更容易翻译 - 提供函数的替代实现(不要忘记,仅翻译子字符串可能还不够,您通常需要能够大幅更改措辞。)
  • 在函数名称中清楚地描述消息的内容,例如 ItemNotFount(item, path),这会导致
  • 阅读代码时更清晰

对我来说听起来不错:)

关于delphi - 单独 .pas 文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712117/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com