软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

4
商业软件中的功能编程
我最近正在和一位同事讨论函数式编程。尽管我们两个人都认为FP具有一些明显的好处(简单的代码,更容易进行数学推理等),但我们都想知道FP软件是否会或将来会在商业软件中使用它。 我知道有许多功能性的开放源代码和学术项目(例如,我在Stack Overflow上已经看到了这个问题),但我想知道是否有人可以列出至少一些编写的其他商业软件,以功能语言(以及哪种语言)。

6
作为一名初学者,我应该更喜欢使用第3方库来构建自己的库吗?
作为Python的初级程序员,在跳到包含所需功能的高级第三方库之前,先构建并了解我自己的库是个好主意吗? 对于这种方法,某些项目(例如Django之类的Web框架)可能太大。但是其他项目(例如Web Crawlers,图形库,HTML解析器)似乎是可行的。 我担心过早依赖第三方库会阻碍我的成长。 注意:这个问题和这个问题似乎更侧重于经验丰富的程序员,他们可能更注重重用的效率,而不是学习的好处。我认为我的问题是针对初学者的。

12
如果面试官没有足够的时间回答您该怎么办?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我接受了一家知名公司的采访。在完成第一轮面试之后,我有信心我会入围第二轮。但是我几乎不知道我的第二轮将会是一场灾难。 第二轮开始,面试官让我告诉他我的个人资料。完成此操作后,他告诉我说他要去拿一支笔和一张纸(不幸的是我只有一支笔),他只有15分钟后才回来。一旦他回来,他就开始向我射击问题,却没有给我思考问题和答案的机会。我的意思是真的,在第一个问题发出5秒后,无论我是否回答第一个问题,他都会向我提出另一个问题。我也有礼貌地告诉他,让我有机会回答,但没有运气。 面试结束后,我感觉到,他花了15分钟的时间来记住这些问题,然后在我忘记了所有问题之前就把它摆在我面前。在这种情况下可以做什么?
12 interview 

9
代码审查有什么好处?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 在我的团队中,我们不进行正式的代码审查。我们倾向于认为使用结对编程和经常旋转结对就足够了。 我们应该考虑进行正式的代码审查吗?有什么好处?

11
代码生成会提高代码质量吗?
争论代码生成,我正在寻找一些提高代码质量的方法示例。为了阐明代码生成的含义,我只能谈论我的一个项目: 我们使用XML文件描述数据库架构中的实体关系,因此它们可帮助我们生成ORM框架和HTML表单,可用于添加,删除和修改实体。 在我看来,由于减少了人为错误,它提高了代码质量。如果某些东西实现不正确,则会在模型中将其破坏,这是很好的,因为由于更多生成的代码也被破坏了,因此错误可能会更快出现。 由于要求我提供代码质量的定义,因此让我澄清一下,我的意思是软件质量。 软件质量:这不是一个属性,而是相互影响的许多属性,例如效率,可修改性,可读性,正确性,健壮性,可理解性,可用性,可移植性等。

5
最高效的缓存替换算法
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 6年前关闭。 维基百科列出了11种缓存替换算法。假设我对我将要开发的应用程序几乎一无所知,那么应该使用什么作为“默认”缓存替换算法? 如果我从操作系统课程中正确回忆起,LRU是最好的通用缓存替换算法。但也许我弄错了。 另外,这是一个学术问题,因为通常来说,主内存便宜又丰富,我真的不需要担心缓存大小。

10
为什么有时不考虑错误会帮助您解决它?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 昨天我花了很大一部分时间来修复一个我认为微不足道的错误。我绕圈转,不知道哪里出了问题。重写大部分代码。正在检查SO。仍然没有喜悦。 于是我回家,walk狗,看电视,在我睡觉之前,宾果游戏我意识到我犯的一个明显错误。今天早上,修复大约花了10分钟。 当我在家时,我并没有积极考虑这个问题。然而,摆脱困境使我得以解决。 这不是第一次发生,我知道这是解决编程问题的相当普遍的方法。我什至听说有人梦想着答案。 为什么这样做? 也许更重要的是,对于何时应该解决问题,应该休息多长时间以及问题离开多长时间后才有效,是否有很好的指南? 我想我正在尝试找出如何优化这种潜意识处理(或正在发生的一切)

12
什么是算法?
算法到底是什么,算法是什么意思?我对这个词的一点理解是,它不是特定于特定的语言或设计模式,而是最基本的原则之一(因此我想这个问题会让我看起来很愚蠢)。 我所理解的“选项”之一是,它意味着完成某些工作的方法,可以将其编写为伪代码列表。 当我编写更复杂的代码时,我认为需要做什么,要做什么以及如何达到目标(不是用编程语言),然后用代码编写。这是个好方法吗,并且与算法有关吗? (我想在这里问的是Stackoverflow,因为这与特定的问题/语言无关,而且我觉得这里的大多数人都知道“为什么”,或者至少这里的答案更详细,而不是在Stackoverflow上。不一样的地方,很抱歉我是否应该在那里问过)
12 algorithms 

4
避免使用初始化方法
我有这个现有的代码,其中他们有一个类和该类中的初始化方法。预期一旦创建了类的对象,他们就需要在其上调用initialize。 初始化方法存在 的原因该对象要尽早创建以具有全局作用域,然后在加载依赖的dll之后再调用初始化方法。 具有初始化 的问题该类现在具有此bool isInitialized,需要在每个方法中进行检查,然后再继续进行,如果未初始化则返回错误。简而言之,这是一个很大的痛苦。 一种可能的解决方案 在构造函数中初始化。仅在全局范围内有一个指向该对象的指针。加载dll后创建实际对象。 上述解决方案的问题 任何创建此类的对象的人都必须知道,仅在dll被加载后才需要创建该对象,否则它将失败。 这可以接受吗?

9
在一家主要业务是软件的公司中,开发人员是否仍被视为“ IT”?
我的想法是,一家主要业务的公司正在通过网络,支持等方式来为小部件组开发人员提供服务,因为这都不是业务,而是业务的支持。 如果您的主要业务是销售软件,那么我将把开发小组称为“研发”。也许如果您有一些严格从事内部应用程序开发的开发人员,那么他们将加入IT /支持/通信等部门。 像Microsoft,Google等公司的准则是什么?CIO杂志中是否有针对此类事情的词典?贵公司做什么?

4
如果高级程序员偷了您的代码,您将怎么办?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 这是我在上一家公司的经验。由于这是一家小型创业公司,因此未严格遵循某些常规软件开发程序。我的一位同事是公司的高级程序员,任职两年。他的技能非常缺乏。他会把任务分配给我,然后自己承担这项工作。他经常这样做,而我也必须完成自己的任务。 我觉得我无法向高级管理层表达这种情况,因为那个同事得到了他们的信任。 后来,我试图推迟分配给我的任务,以便对他的反映不佳(因为他无法完成任务)。此外,客户的投诉堆积了许多未解决的问题。现在公司知道他了。 实际上,现在我要去一家新公司当牵头人。现在,我完全摆脱了这种情况。 你们有没有遇到过这样的情况?你会/打算做什么?

6
共享库的分支和版本控制策略
这些 帖子似乎相关,但是我的大脑开始融化,试图通过:P来思考 我的雇主刚刚开始使用源代码控制,主要是因为在雇用更多开发人员之前,“存储库”是唯一的开发人员的硬盘驱动器,该开发人员主要在家中工作。所有他写的.NET代码的检入集体,并有大量的重复(读:复制粘贴)功能。现在,我们的SCM系统是光荣的备份。 我想将某些重复的代码放入共享库中。我将单独保留原始存储库,以便我们不会破坏任何内容,我们可以在需要时移动和/或重构现有代码。因此,我为新代码(包括库)设置了一个仓库。 我的问题围绕着对库进行版本控制而没有过多的时间来烦恼我们:承认我们需要一种更一致的方法,更多的开发人员都编写非常相似的代码,管理人员和其他开发人员都愿意进行重组,但可能不会如果解决方案开始影响生产效率,则下降得很好。 在我的痴迷心中,理想的解决方案是分别构建库,而每个从属项目都是针对故意选择的兼容版本构建的。这样,我们就可以准确地知道哪些客户端具有哪个库的哪个版本,可以更可靠地重现错误,维护产品和库的独立发行分支,并且在更改共享代码时不会破坏彼此的项目。 但是,这使得更新库很麻烦,尤其是对于在家工作的开发人员而言。我希望这些库能快速变化,至少在最初(最终)将这些通用位组合在一起时会如此。我完全有可能对此进行全面考虑,并且可以根据最新的库提交构建所有内容,但我至少要做好准备,以便我们决定某些组件必须独立版本化并分散式。必须在GAC中安装某些库这一事实使得版本控制特别重要。 所以我的问题是:我想念什么?我觉得我已经专注于一种解决方案,现在正在尝试寻找可以使更改更平滑的变体。您以前使用过哪些策略来解决此类问题?我意识到这个问题无处不在。我会尽力清理并澄清所有不确定性点。 尽管我很想使用Mercurial,但我们已经在集中式商用SCM(Vault)上花了钱,并且切换不是一种选择。此外,我认为这里的问题比版本控制工具的选择更深。

4
LLVM低级别是哪种方式?
以何种方式(S)是LLVM(低级虚拟机)的低等级?(在撰写本文时,我在其网站上未找到缩写“ LLVM”的这种扩展,但在Wikipedia上却发现了这种扩展。) 它是为(编译器基础结构)设计的目的而被称为“低级”,还是因为它比其他工具在“低级”上工作? 作为(某种)“说明”,LLVM是否比JVM和CLR低,或者仅设计用于“低级”用途?

5
Grails框架中的陷阱[已关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 使用Grails框架有哪些最大的问题/陷阱?我现在正在学习框架,我真的很喜欢它,但是我需要知道在使用它时可能遇到的主要问题以及如何避免它们。

9
如何处理“错误代码”面试?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 “错误代码”面试是向受访者显示一小段“错误代码”,并要求其纠正或指出错误的地方。我在进行这些采访时遇到了麻烦,因为我花了一些时间来阅读代码,弄清楚代码的作用并指出缺陷。在有时间压力的情况下,我倾向于停滞不前,我发现代码“应该”起作用,即使它不起作用。 什么是处理这种采访的好方法,更广泛地讲,有什么好的技巧可以快速阅读和理解代码?

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.