相关疑难解决方法(0)

什么时候优化过早?

正如Knuth所说,

我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源.

这是Stack Overflow常常出现的问题,例如"哪个是最有效的循环机制","SQL优化技术?"等问题.(等等).这些优化提示问题的标准答案是分析您的代码并首先查看它是否是一个问题,如果不是,那么您的新技术就不再需要了.

我的问题是,如果某种技术不同但不是特别模糊或混淆,那真的可以被认为是过早的优化吗?

这是Randall Hyde的一篇名为"过早优化的谬误"的相关文章.

optimization premature-optimization

79
推荐指数
10
解决办法
1万
查看次数

设计字符串本地化的最佳方式

这是一个普遍的问题,对意见持开放态度.我一直在努力想出一个很好的方法来设计Windows MFC应用程序和相关实用程序的字符串资源本地化.我的愿望是:

  • 必须在代码中保留字符串文字(而不是替换为宏#define资源ID),以便消息仍然可以内联读取
  • 必须允许本地化的字符串资源(duh)
  • 不得强加额外的运行时环境限制(例如:依赖于.NET等)
  • 应该对现有代码的侵略最小(修改越少越好)
  • 应该是可调试的
  • 应生成可通过常用工具编辑的资源文件(即:通用格式)
  • 不应使用复制/粘贴注释块来保留代码中的文字字符串,或其他任何可能导致去同步的内容
  • 很高兴允许静态(编译时)检查每个"标记"字符串是否在资源文件中
  • 允许跨语言资源字符串池(对于各种语言的组件,例如:本机C++和.NET)会很高兴

我有一种方法可以在某种程度上满足我的所有愿望清单,除了静态检查,但我必须开发一些自定义代码来实现它(并且它有局限性).我想知道是否有人以特别好的方式解决了这个问题.

编辑:我目前的解决方案如下:

ShowMessage( RESTRING( _T("Some string") ) );
ShowMessage( RESTRING( _T("Some string with variable %1"), sNonTranslatedStringVariable ) );
Run Code Online (Sandbox Code Playgroud)

然后我有一个自定义实用程序来解析'RESTRING'块中的字符串并将它们放入.resx文件进行本地化,以及一个单独的C#COM对象,用于从带有回退的本地化资源文件加载它们.如果C#对象不可用(或无法加载),我将回退到代码中的字符串.宏扩展为一个模板类,它调用COM对象并进行格式化等.

无论如何,我认为添加我现在的内容以供参考是有用的.

c++ windows mfc localization

20
推荐指数
1
解决办法
9556
查看次数

您如何决定是使用库还是编写自己的实现

灵感来自这个无辜地开始但正在变成一场大火焰战争的问题.

假设您需要一种实用方法 - 相当简单,但不是单行.引用的问题是如何重复X次字符串.您如何决定是使用第三方实施还是自己编写?

第三方方法的明显缺点是您正在为代码添加依赖项.但是如果你自己编写,你需要对它进行编码,测试它,(也许)对它进行分析,这样你最终可能会花费更多的时间.

我知道决定本身是主观的,但你用来达到它的标准不应该是.

那么,您使用什么标准来决定何时编写自己的代码?

coding-style

17
推荐指数
3
解决办法
4573
查看次数