给出两个选项(如我所见,请随时告诉我),例如,在检查两个字符串的相等性时,我想知道它在转到:

中是否是首选/惯用的将这两个字符串分配给内存中的变量,例如:

OR

请不要花时间思考thing01thing02的完成情况要说它们是否等于字符串,我想解决。

问题是,哪个是首选的?将内存分配给内存(仅稍作同意),提高了可读性,或者只是"去做"并在运行时直接在if语句中检查?

是否还有我忽略的第三个选项,我也很想知道这一点。谢谢大家!

有一些启发性的回答,我感谢所有花时间考虑我的问题的人。获得的经验教训:

  • 只是因为一个人没有分配给变量,就不能将其保存到堆栈(duh)中。
  • 请始终考虑其易读性和可维护性
  • 使用良好的变量名
  • 如果没有GC,编译器等的高级知识,偏爱更快的事物就是在错误的树上求助。

我修改后的方法:

对于那些为此道歉感到烦恼的人,只是一个新手,他们正在寻找社区的真知灼见。如果我违反了发布指南,请通知我。

再次感谢您。


对于您而言,第二个版本的可读性要差得多。如果给变量取一个明智的名称(而不是thing),您的意图就会变得清楚。

我什至不会考虑您所说的"分配给内存"的任何可能的开销,因为首先您不知道编译器是否进行了优化,更重要的是,即使没有进行优化,这也不是程序的瓶颈,不是视频编辑工具的紧密循环,也不是服务器负责的部分每秒处理十亿个请求,或任何其他速度真正重要的示例。

总是喜欢可读性,而不是您认为可能较慢的东西。

如果您确实遇到速度或内存问题程序的使用情况,那么您可以考虑对其进行改进(针对实际情况,而不是通过" inline "变量进行改进),但是在那种情况下,您首先必须实际剖析瓶颈所在。

您甚至可以进一步提高程序的可读性。根据实际情况,您可以考虑给strings.Replace(line,""","", -1 )自己的变量或p.FieldsOrder[:p.CheckNHeaders]部分。这些乍一看对我来说还不清楚。而且它们可能不适合您程序的其他读者,例如

另一点:您的程序显示var thing01 := ...在语法上是错误的。您可以说thing01 := ...var thing01 = ...。请参见=:=之间的区别。


但是,如果该表达式易于理解并且希望保持不变,那么您可能想要坚持比较这些表达式。