Tag: 语言无关

devise模式备忘单

有许多关于devise模式的书籍和在线资源。 虽然他们很好地学习主要概念,但没有丰富的经验,记住模式的细节是很难的。 遇到问题时,这使得难以使用模式。 有一个devise模式的备忘单可以帮助开发人员看到大局,并select模式深入细节。 UML重新devise和不同程序模式语言的devise模式的基本实现将是非常有益的。 在这里我find了一些资源: UML和C# ruby 你知道其他有用的资源吗?

你能解释一下Contextdevise模式吗?

我已经开始阅读关于Contextdevise模式 。 以下是我从文中理解的内容: 你有一个包含所有variables的地图 你把它传递给需要它的人,这样你就不必把所有的variables都作为方法参数发送出去 我“得到”了吗?

如何查找最大值 和分钟。 在数组中使用最小的比较?

这是一个面试问题:给定一个整数数组find最大值。 和分钟。 使用最小的比较。 显然,我可以遍历数组两次,并在最坏的情况下使用~2n比较,但我想做得更好。

有多less个参数太多?

例程可以有参数,这不是新闻。 您可以根据自己的需要定义许多参数,但其中的许多参数会使您的日常难以理解和维护。 当然,你可以使用结构化variables作为解决方法:将所有这些variables放在一个结构体中,并将​​其传递给例程。 事实上,使用结构来简化参数列表是Steve McConnell在Code Complete中描述的技术之一。 但正如他所说: 细心的程序员避免将数据捆绑在逻辑上是必要的。 所以,如果你的例程有太多的参数,或者你使用一个结构来伪装一个大的参数列表,你可能做错了什么。 也就是说,你没有保持连接松散。 我的问题是, 我什么时候可以考虑参数列表太大? 我觉得超过5个参数太多了。 你怎么看?

就地arrays重新sorting?

比方说,我有一个长度为n的数组,另外还有一个长度为n数组。 indices包含序列[0, n)任意排列。 我想重新排列a这样的indices指定的顺序。 例如,使用D语法: auto a = [8, 6, 7, 5, 3, 0, 9]; auto indices = [3, 6, 2, 4, 0, 1, 5]; reindexInPlace(a, indices); assert(a == [5, 9, 7, 3, 8, 6, 0]); 这可以在O(1)空间和O(n)时间内完成,最好不要改变indices ?

你讨厌你最喜欢的语言是什么?

Stack Overflow最近出现了一堆Perl讨厌的东西 ,所以我想我会把Stack Overflow的“ 五件你讨厌你最喜欢的语言 ”的问题带到这里。 把你最喜欢的语言,告诉我你讨厌的五件事。 这些可能是令你烦恼,承认devise缺陷,认可性能问题或任何其他类别的事情。 你只需要讨厌它,它必须是你最喜欢的语言。 不要把它和另一种语言比较,也不要谈论你已经讨厌的语言。 不要用你最喜欢的语言谈论你喜欢的事情。 我只是想听到你讨厌但容忍的事情,所以你可以使用其他所有的东西,我想听听你希望别人使用的语言。 每当有人试图将自己喜欢的语言推向我时,我都会问这个问题,有时候还会作为一个面试问题。 如果有人找不到五件令他讨厌他最喜欢的工具的东西,那么他就不太清楚它是否鼓吹它,或者使用它赚大钱。 他没有在足够多的情况下使用它来充分探索它。 他主张把它作为一种文化或宗教,这意味着如果我不select他最喜欢的技术,我错了。 我不在乎你使用哪种语言。 不想使用特定的语言? 那么不要。 你经过尽职调查做出明智的select,但仍然不使用它? 精细。 有时候,正确的答案是“你有一个强大的编程团队,有很好的实践经验,在Bar里有很多的经验,换到Foo会很愚蠢。” 这对于代码评论来说也是一个很好的问题。 真正了解代码库的人会对此有各种各样的build议,而那些对此不甚了解的人会有非特定的投诉。 我问的问题是:“如果你可以重新开始这个项目,你会做什么不同的事情? 在这个奇幻的土地上,用户和程序员可以抱怨任何他们不喜欢的东西。 “我想要一个更好的界面”,“我想从视图中分离出模型”,“我会用这个模块来代替这个模块”,“我会重命名这个方法集合”,或者他们真的不喜欢目前的情况。 这就是我如何处理特定开发人员对代码库的了解程度。 这也是一个关于程序员的自我与他告诉我的有多大关系的线索。 讨厌不是找出有多less人知道的唯一方面,但我发现它是一个很好的。 他们讨厌的东西也给了我一个线索,他们对这个问题的思考有多好。

性能优化策略不得已而为之

这个网站上已经有很多性能问题了,但是几乎所有的问题都是针对特定问题的,而且相当狭窄。 几乎所有的重复build议,以避免过早优化。 我们假设: 代码已经正常工作 所select的algorithm对于问题的情况已经是最佳的 代码已被测量,并且违规程序已被隔离 所有优化的尝试也将被测量,以确保它们不会让事情变得更糟 我在这里寻找的是一些策略和技巧,当没有其他任何事情可以做,但是无论如何,都可以挤压到关键algorithm中的最后几个百分比。 理想情况下,尽量使语言无关的答案,并在适用的情况下指出build议策略的任何不利方面。 我会用我自己的最初build议来添加一个回复,并期待Stack Overflow社区能够想到的任何其他内容。