Questions tagged «language-agnostic»

该标签用于非特定于编程语言或环境的问题。

4
我应该“识别”并按名称知道哪些算法/数据结构?[关闭]
我想将自己视为一个经验丰富的程序员。我已经编程超过5年了。我的弱点是术语。我是自学成才的,因此尽管我知道如何编程,但我不了解计算机科学的一些更正式的方面。那么,按名称我可以识别和知道的实用算法/数据结构是什么? 请注意,我并不是在要求有关实现算法的书建议。我不在乎实现它们,我只是想知道什么时候算法/数据结构可以很好地解决问题。我要更多的是我应该“识别”的算法/数据结构的列表。例如,我知道解决此类问题的方法: 您管理一组标记为0-999的储物柜。人们来找您租用储物柜,然后回来找回储物柜钥匙。您将如何构建一个软件来管理哪些储物柜是免费的,哪些储物柜正在使用? 解决方案是队列或堆栈。 我正在寻找的是诸如“在什么情况下应使用B树-在此处应使用哪种搜索算法”之类的信息。也许还可以快速介绍一下如何使用更复杂(但常用的)数据结构/算法起作用。 我尝试查看Wikipedia的数据结构和算法列表,但我认为这有点过头了。因此,我正在寻找我应该认识的基本要素?

16
为什么在布尔值变量上使用!boolean_variable == false
关于此问题的评论:检查方法是否返回false:将结果分配给临时变量,还是将方法调用直接置于条件中?说应该在测试条件时使用!boolean而不是boolean == false。为什么?对我boolean == false来说,英语更加自然,也更加露骨。抱歉,这仅是风格问题,但我想知道是否还有其他原因导致这种偏好!boolean?


17
如何处理评论中的重言式?[关闭]
有时,我遇到的情况是我正在编写的部分代码是(或似乎是)不言而喻的,其名称基本上会作为注释重复: class Example { /// <summary> /// The location of the update. /// </summary> public Uri UpdateLocation { get; set; }; } (C#示例,但请将该问题与语言无关)。 这样的评论是没有用的。我究竟做错了什么?是错误的名称选择吗?我怎样才能更好地评论这样的部分?我应该跳过诸如此类的评论吗?

4
我应该怎么做才能与语言无关?
现在,我使用asp.net和C#。我在Java中也做得不错。我正在计划自己的职业,以至于有一天我会与语言无关。我需要学习什么? 首先,OOP范式是关于类设计的。还有其他吗?

12
有没有理由在构造函数中完成所有对象的工作?
首先,我说这不是我的代码也不是我的同事的代码。几年前,当我们的公司规模较小时,我们有一些我们需要做的项目,但我们没有能力,因此将它们外包了。现在,我一般都不会反对外包或承包商,但是他们产生的代码库是大量的WTF。话虽这么说,它确实(大部分)有效,所以我认为它在我所见过的外包项目中排名前10%。 随着我们公司的成长,我们尝试将更多的内部开发工作带入公司。这个特殊的项目落在我的腿上,所以我一直在检查,清理,添加测试等。 我看到有一种模式经常重复出现,而且看起来如此令人恐惧,以至于我想知道是否存在某种原因,而我只是看不到它。模式是一个没有公共方法或成员的对象,只是一个公共构造函数,它可以完成对象的所有工作。 例如,(如果很重要,代码是Java的,但是我希望这是一个更普遍的问题): public class Foo { private int bar; private String baz; public Foo(File f) { execute(f); } private void execute(File f) { // FTP the file to some hardcoded location, // or parse the file and commit to the database, or whatever } } 如果您想知道,这种类型的代码通常以以下方式调用: for(File f …

3
与基于类的OOP相比,基于原型的OOP有何优势?
当我主要在基于类的语言的上下文中处理OOP之后第一次开始对Javascript进行编程时,我对为什么基于原型的OOP会比基于类的OOP更为困惑。 使用基于原型的OOP的结构优势是什么?(例如,在某些应用程序中,我们希望它更快或更省内存吗?) 从编码人员的角度来看,优点是什么?(例如,使用原型制作某些应用程序或扩展其他人的代码是否容易?) 请不要把这个问题看做是关于Javascript的问题(多年来存在很多与原型无关的错误)。相反,请结合原型与类的理论优势来研究它。 谢谢。

9
为什么不可能产生真正的随机数?
我试图解决一个爱好问题,该问题需要生成一百万个随机数。但是我很快意识到,使其变得独特变得越来越困难。我阅读了《算法设计手册》,以了解有关随机数生成的信息。 它有以下一段我完全无法理解。 不幸的是,生成随机数看起来比实际要容易得多。实际上,从根本上不可能在任何确定性设备上产生真正的随机数。冯·诺依曼[Neu63]最好说:“任何考虑产生随机数的算术方法的人,当然都处于犯罪状态。”我们所能期望的最好是伪随机数,它像一串数字如果它们是随机生成的。 为什么在任何确定性设备中都不可能产生真正的随机数?这句话是什么意思?

8
在getter和setter里面应该允许什么?
我进入了有关getter和setter方法以及封装的有趣的Internet争论。有人说,他们应该做的只是分配(设置器)或变量访问(获取器),以使它们“纯净”并确保封装。 我是对的,这会完全破坏首先使用getter和setter的目的,应该允许进行验证和其他逻辑(当然没有奇怪的副作用)吗? 何时应进行验证? 设置值时,在设置器内部(以防止对象进入无效状态-我认为) 在设置值之前,在设置器之外 在对象内部,每次使用该值之前 是否允许设置器更改值(也许将有效值转换为某些规范的内部表示形式)?

8
不同编程语言的每个位置的平均错误数量是否相同?[关闭]
有人告诉我,对于不同的编程语言,每行代码的错误/缺陷的平均数量是“恒定的”。Ruby的10 KLOC与c ++的10 KLOC具有相同数量的错误。该参数通常用于促进表达语言的使用(考虑python / ruby​​而不是c ++ / assembly),因为描述相同功能的行数会更少。 有人知道这种说法的来源吗?高级语言会导致更少的错误吗?

15
用单个下划线命名未使用的变量是不好的做法吗?
通常,当语言的语法要求我命名一个从未使用过的变量时,我将其命名为_。 在我看来,这减少了混乱,让我专注于代码中有意义的变量。我发现它不引人注目,因此可以产生“视线之外,头脑混乱”的效果。 我执行此操作的一个常见示例是在SQL中命名子查询。 SELECT * FROM ( SELECT * FROM TableA JOIN TableB ON TableA.ColumnB = TableB.ColumnB WHERE [ColumnA] > 10 ) _ --This name is required, but never used here ORDER BY ColumnC 另一个示例是未使用的循环变量。 array = [[] for _ in range(n)] # Defines a list of n empty lists …

13
让应聘者写一个链表实现是不好的面试做法吗?[关闭]
通过阅读本网站和SO,我看到了许多关于采访问题和答案的故事,这些故事都说候选人必须从头开始实现链接列表。通常,这是对候选人编程(例如编写FizzBu​​zz)进行的“技巧”练习。这个想法是,如果候选人不能做到这一点,他们就不能编程,应该几乎立即被拒绝。 但是,由于以下原因,我不禁认为这可能是一个不好的做法: 诸如C#和Python之类的现代高级语言在本地广泛使用列表。仅在特殊情况下甚至可能不明智的情况下,才需要编写自己的链表对象。 像C ++这样的低级语言具有带有迭代器/列表容器和对象的标准库。 根据前两点,编码人员可以花很多年甚至不用考虑自己实现列表(链接,双向链接等)。自大学时代以来,有些人甚至可能还没有真正看到过这种东西。 计算能力也不是几年前的因素,因此通过指针进行的效率不是(通常)曾经存在的问题。 一个简单的网络搜索,例如“链表示例”,将带来大量代码示例,这些代码示例只能被记住并吐出来,而不能真正表明申请人的真正能力。 我应该说,使用链表引发对候选人的问题解决能力/批判性思维能力的开放式提问/讨论最有可能是一种非常好的面试习惯。面试官可以通过任何方式真正看到申请人的身分,以及他们认为如何从中受益。 我认为对于在台式机或Web应用程序上工作的程序员来说,这种“无链表代码,无工作”的二进制方法有点过时了。这也可能非常有害;如果一个候选人不记得如何正确地处理列表的开头,那么他本来就是一个出色的编码人员和同事,但却迷失了自己。有什么想法吗? 编辑:有很多(好)评论表明这是一个要问的好还是坏的问题,取决于工作的上下文。我完全同意,所以让我改一下这个问题:对于许多编码工作,实现链接列表是常见的面试问题,类似于FizzBu​​zz之类的问题或编写用于计算阶乘的递归函数的问题。这个问题是否具有足够的实用性,可以普遍用于全面评估编程候选人?还是应该问一个不好的问题,除了“高级开发人员,嵌入式链表团队”职位以外?

30
编程中有什么真的是邪恶的吗?[关闭]
因此,出现了很多问题,询问是X邪恶,是Y邪恶。 我的观点是,没有语言构造,算法或任何有害的东西,只有那些被滥用的语言。天哪,如果您看上去很努力,甚至还有goto的有效用法。 那么,在编程中是否存在绝对邪恶的东西,那在所有情况下都与最佳实践完全不兼容?如果是这样,那是什么?还是只是不好的程序员不知道什么时候合适? 编辑:明确地说,我不是在谈论程序员的工作(例如不检查返回码或不使用版本控制-它们是不良程序员做出的选择),我的意思是工具,语言,语句,无论是什么,坏...

7
在开发项目时经常重新设计是一个不好的信号吗?
刚开始编程时,我以为我有一天会坐下来并绘制所有类的UML图,然后开始一个项目,然后再坚持下去。我现在已经编程了两年了,但事实并非如此。当我经历一个项目时,我经常说 “嘿,我需要一堂课来做_ _。我以前没想过。” “等等,这个函数实际上应该在该类中,而不是在这个类中。我将其移开。” “这实际上应该是两个类,而不是一个。我将其拆分。” “我应该使这三个独立类都从一个抽象类继承。” Etcetera等。 我经常像这样进行重新设计,这是一个不好的信号吗?这是否意味着我是一个贫穷的程序员,或者这是正常现象吗?

7
反对错误抑制的论点
我在我们的一个项目中发现了一段这样的代码: SomeClass QueryServer(string args) { try { return SomeClass.Parse(_server.Query(args)); } catch (Exception) { return null; } } 据我了解,抑制这样的错误是一个坏习惯,因为它会破坏原始服务器异常中的有用信息,并使代码在实际终止时继续执行。 何时才应该像这样完全消除所有错误?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.