来自Python背景,在风格方面总是有一个“正确的方式去做”(“Pythonic”方式),我想知道Ruby是否也存在。 我一直在使用自己的风格指南,但是我正在考虑发布我的源代码,我希望它遵守任何可能存在的不成文规则。 是“Ruby途径”明确键入方法return ? 我已经看到它完成了,但有没有一个正确的方法来做到这一点? 有没有适当的时间去做? 例如: def some_func(arg1, arg2, etc) # Do some stuff… return value # <– Is the 'return' needed here? end
我个人的C ++风格总是把类声明放在一个包含文件中,并且定义在一个.cpp文件中,非常类似于Loki对C ++头文件,代码分离的回答 。 不可否认的是,我喜欢这种风格的部分原因可能与我花费在编码Modula-2和Ada上的所有年份有关,它们都与规范文件和主体文件有相似的scheme。 我有一个同事,比C ++更懂C ++,他坚持所有的C ++声明都应该尽可能在头文件中包含定义。 他并不是说这是一种有效的替代风格,甚至是稍微好一些的风格,但是这是每个人现在都在使用的新的普遍接受的风格。 我不像以前那么灵活,所以我并不急于拼命追赶他,直到我看到更多的人在他身边。 那这个成语真的有多常见? 只是给一些结构的答案:是现在的方式 ,很常见,有点常见,不寻常或错误疯狂?
简短版本:在许多编程语言中返回大型对象(如向量/数组)很常见。 如果这个类有一个移动构造函数,或者C ++程序员认为它是奇怪/丑陋/可憎的,现在这种风格现在可以被C ++ 0x接受吗? 长版本:在C + + 0x这是仍然认为不好的forms? std::vector<std::string> BuildLargeVector(); … std::vector<std::string> v = BuildLargeVector(); 传统版本看起来像这样: void BuildLargeVector(std::vector<std::string>& result); … std::vector<std::string> v; BuildLargeVector(v); 在较新的版本中,从BuildLargeVector返回的值是一个右值,因此v将使用std::vector的移动构造函数构造,假设(N)RVO不会发生。 甚至在C ++ 0x之前,由于(N)RVO,第一种forms往往是“高效的”。 但是,(N)RVO由编译器自行决定。 现在我们有了右值引用, 保证不会发生深度复制。 编辑 :问题实际上不是关于优化。 所显示的两种forms在现实世界的程序中都具有几乎相同的性能。 而过去,第一种forms的performance可能会有数量级的下滑。 因此,第一种forms在很长一段时间里是C ++编程中的主要代码异味。 现在不行了,我希望?
我如何testing一个string,看它是否包含数组中的任何string? 而不是使用 if (string.contains(item1) || string.contains(item2) || string.contains(item3))
我一直认为, if not x is None版本更清晰,但if x is not None ,Google的风格指南和PEP-8都会使用。 是否有任何微小的performance差异(我假设不),是否有任何情况下,一个真的不适合(使另一个明显的赢家我的约定)? *我指的是任何单身人士,而不是None 。 比较单例如None。 使用是或不是。
当我做Python编程时,我总是使用制表符缩进。 但后来我在这里遇到了一个问题,有人指出,大多数Python程序员使用空格而不是制表符来最小化编辑器到编辑器的错误。 这是如何影响的? 还有其他的原因,为什么会使用空格,而不是标签为Python? 或者是不是真的? 我应该切换我的编辑器插入空格而不是标签马上或继续像我以前一样去?
有时候我会把条件分成几行。 最明显的做法是: if (cond1 == 'val1' and cond2 == 'val2' and cond3 == 'val3' and cond4 == 'val4'): do_something 视觉上不太吸引人,因为动作与条件相融合。 但是,使用4个空格的正确Python缩进是自然的方法。 目前我正在使用: if ( cond1 == 'val1' and cond2 == 'val2' and cond3 == 'val3' and cond4 == 'val4'): do_something 但是这不是很漂亮。 🙂 你能推荐一种替代方法吗?
将数字转换为string(就速度优势,清晰度优势,内存优势等而言)是什么“最佳”方式? 一些例子: String(n) n.toString() ""+n n+""
严格来说, style标签需要在HTML文档的head吗? 4.01标准暗示着,但没有明确说明: STYLE元素允许作者将样式表规则放在文档的头部。 HTML允许文档的HEAD部分中包含任意数量的STYLE元素。 我说“严格来说”是因为我有一个将样式元素放在body中的应用程序,而且我testing过的所有浏览器似乎都使用样式元素。 我只是想知道这是否合法。
Google JavaScript风格指南build议不要扩展Array.prototype 。 但是,我使用Array.prototype.filter = Array.prototype.filter || function(…) {…} Array.prototype.filter = Array.prototype.filter || function(…) {…}作为在不存在的浏览器中使用它(以及类似的方法)的一种方式。 MDN实际上提供了类似的例子 。 我知道关于Object.prototype问题,但Array不是一个哈希表。 在扩展Array.prototype ,可能会出现什么问题,让Google反对呢?