软件工程

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

11
我的同事创建了一个96列的SQL表
在这里,我们是2010年,具有4年或5年或经验的软件工程师,仍然在设计带有96个压裂柱的工作台。 我告诉他这将是一场噩梦。 我向他展示了我们必须使用普通语言将MySQL与C#接口。 我解释说,列多于行的表有很大的味道。 不过,我得到“这样会更简单”。 我该怎么办? 编辑* 该表包含来自传感器的数据。 我们有带 Dynamic_D1X的传感器1 Dynamic_D1Y [...] Dynamic_D6X Dynamic_D6Y [...] 编辑2 * 好吧,我终于离开了那份工作。这是另一个程序员在几个月后昏昏欲睡的一个信号,是管理层没有意识到这是一个问题的另一个信号。
23 sql  code-smell 

10
创建需求文档的正确方法是什么?
现在,我的主管正在使用错误跟踪软件为我创建需求文档/规范。对我来说,这似乎是一个可怕的主意,所有要求都在这些小票上,我必须单击该愚蠢的网络表单才能了解这些要求。什么是针对需求/软件规格的理智的软件解决方案? 明确地说,我正在构建具有许多功能的大型软件组件,并且这些功能已在此BugTracking软件中阐明。

5
为什么琴弦这么慢?
自从我上高中的第一门编程课开始,我就听说字符串操作比神话中的“平均操作”要慢,也就是成本更高。为什么让它们这么慢?(这个问题是故意留下的。)

12
GUI程序员相对于其他程序员是否有不当优势?
经理和客户很容易欣赏他们所看到的内容。 我见过许多GUI开发人员,他们是普通的程序员,对设计原理或其他编程习惯知识最少。但是,如果程序员可以创建令人印象深刻的用户界面,这些缺点通常就不会引起人们的注意,特别是对于管理人员和客户而言。如此之多,以至于我认识的许多GUI开发人员都花了数小时来美化GUI,却以编写糟糕的,无法维护的代码为代价。 另一方面,开发API或业务功能或数据库代码(SQL等)的中间层程序员处于劣势,因为没有任何可展示的东西。也许代码审阅者或架构师可能会喜欢代码的优雅,良好的设计,可伸缩性等,但这对外界毫无意义。您的代码可以运行数年而不中断,可能非常易于维护并具有良好的性能,但它从未像光滑的GUI一样引起人们的赞叹。 在我看来,这样做的必然结果是(我知道,对此我会感到不满),GUI程序员编写好的纯净代码的动机更少。 编辑:我在这里必须解释,对于GUI程序员,我不是指成熟的Web / GUI设计人员,而是前端程序员,例如Java-Swing程序员。 社区其他人是否同意?
23 gui 

8
您为什么要雇用内部软件开发人员,而不是外包他们为您的公司开发产品?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 您为什么要雇用内部外包而不是外包来为您的公司开发产品?我只能想到一些,但我不确定它们是否足够好。 这实际上是为了在课堂上进行一场辩论。我更倾向于外包,但是不幸的是,我被要求转到辩论的内部。 有任何想法吗?

11
“最大的优势/劣势是什么”面试问题的有效性[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 7年前关闭。 作为正在面试表另一端找到自己的人,我想知道从雇主的角度来看这些问题有多有用。我的一些同事认为他们很好,因为您可以看到“他们的反应”,但是由于某些原因,我不确信它会告诉您任何有用的信息: 这不是一个很舒服的问题,即使没有故意,也会导致人们曲解答案 人们可能不完全了解自己的最大优点或缺点(即由同龄人判断) 解释优势不如展现优势 之后我仍然对候选人一无所知 我的同事的基本原理是,它可以帮助淘汰那些做出荒谬回应的人,例如一个说自己最大的才能是“他的才智”的人,或者试图将弱点问题转变为“我努力工作”的人。 ” 但我认为,有更有效的方法来确定此类情况。如果要查看某人是否聪明,请向他们提出技术问题。如果要查看某人是否有生产力,请查看其工作经历。如果您想了解某人在压力或变化下的反应,请询问他们如何应对并提出具体示例。 从访调员的角度来看,人们对这些问题有何看法?他们真正告诉您有关候选人的什么信息,还有哪些更好的选择?我如何说服我的同事呢?
23 interview 

12
如果长函数具有内部结构,是否可以接受?
当使用支持嵌套函数(例如Python和D)的语言处理复杂算法时,我经常编写大型函数(因为算法很复杂),但是通过使用嵌套函数来构造复杂代码来减轻这种情况。即使大型功能(超过100行)仍通过使用嵌套功能在内部进行了结构合理,仍然被认为是邪恶的? 编辑:对于那些不熟悉Python或D的人,这些语言中的嵌套函数还允许访问外部函数范围。在D中,此访问权限允许外部范围内的变量发生突变。在Python中,它仅允许读取。在D中,可以通过声明显式禁用对嵌套函数中的外部范围的访问static。

8
我该如何应对一个经理,他总是干扰我的工作,但并不真正了解我的工作?
我们所有人都有他们,都是来自销售部门的经理,或者是十年前或更早以前才看过代码的经理,但认为他们知道如何编写代码。 我能做些什么来给我留下我对他的干预表示感谢的印象,但请保持尽可能短的时间以便我继续工作? 或者,我是否应该更多地与经理互动,以现代编码技术和实践对他/她进行教育?毕竟,了解这些内容的经理将能够在讨论项目及其时间表时与客户和更多的高级管理人员进行明智的交谈。

17
“计算机科学!=软件工程”难道是教授编程知识差的借口吗?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我们都听过;每当有关于CS毕业生的开发技能差的讨论时,有人最终说, 计算机科学不是软件工程。 我看到的问题是编程和软件开发是在CS课程中教授的。他们通常被教得很差。如果要教它,那为什么不第一次就教它呢?* 所以我想看看对两个问题有何看法: CS!= SE参数是否是没有正确教授编程技能的结果或借口? 不管您对问题1的回答如何;如果您处于做出这样一个决定的全能位置:您是否会强调在CS课程中正确编程的教学? *。根据我在整个学习过程中获得的轶事证据,我感到怀疑,该领域的大多数学者都不必编写代码来维护代码,也不必维护代码,因此没有知识/技能。有效地教它。

16
测试驱动开发是谁?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 在过去的4.5年中,我一直在企业领域中工作,并且注意到,一般而言,企业对于测试优先的开发风格不是一个有利的环境。项目通常是固定成本,固定时间表和瀑布式的。任何单元测试(如果有的话)通常都在QA阶段开发后由另一个团队完成。 在为企业工作之前,我曾为许多中小型公司提供咨询服务,但没有一家公司愿意为测试优先的开发项目付费。他们通常希望开发立即开始,或者经过短暂的设计工作:即,类似于敏捷的东西,尽管有些客户希望将所有东西都映射为类似于瀑布的东西。 在哪种类型的商店,公司和客户中,测试驱动的开发最有效?哪些类型的项目倾向于有利于TDD?

14
管理者如何选择编程语言
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 管理人员可以并且经常会强加用于项目的编程语言,这对任何人来说都不是秘密。 作为我自己的程序员,我从来都无法理解这一点。 但是现在我想我做了:当乔尔·斯波斯基(Joel Spolsky)在播客上说他们应该使用QuickBooks时,我得到了一个启示,因为“世界上每个会计师都知道”。这让我感到非常类似于“选择Java,因为世界上每个程序员都知道它”。 既然我已经从另一个角度看到了相同的问题,我对会计知识了解不多,但是我确实对编程有所了解,我想知道程序员如何才能帮助确保为项目选择正确的编程语言?

17
COBOL仍然值得学习吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 学习COBOL仍然有意义吗?
23 learning  cobol 

16
如果我不懂C但我对C ++满意,可以吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我有一个问题,我认为可以在这里得到最好的回答。 我非常擅长C++,就像我对语言感到满意一样,我已经阅读Accelerated C++并完成了几乎所有的练习。 但是,我有一个大问题。我需要学习C吗?C我一生中从未做过。我刚开始C++编程时才刚开始。可能是因为我一直很想知道为什么每个人都称这种语言如此复杂。现在尽管我知道该问题的答案;) 我特别想知道我是否能在不了解C当今世界的情况下生存。就像我在公司里面试一样,如果我告诉他们我不知道C-他们会认为还可以吗?我擅长的两种语言是Python和C ++。我问这个原因是因为我听说公司在面试中询问数据结构。因此,如果他们要求我实现它,并且如果我使用C ++来实现,那么可以接受吗? 还有人说“当您使用C ++时,您怎么不知道C”,请不要回答:)没冒犯,但我不明白为什么学习C是必备条件。
23 c++  c 

6
编译器静态类型检查“复杂”表达式时,常用的程序是什么?
注意:在标题中使用“复杂”时,是指该表达式具有许多运算符和操作数。表达式本身并不复杂。 我最近一直在研究一个简单的x86-64汇编程序。我已经完成了编译器的主要前端-词法分析器和解析器-现在可以生成程序的抽象语法树表示形式。由于我的语言将是静态类型的,因此我现在进入下一阶段:类型检查源代码。但是,我遇到了一个问题,而自己却无法合理解决。 考虑以下示例: 我的编译器的解析器已阅读以下代码行: int a = 1 + 2 - 3 * 4 - 5 并将其转换为以下AST: = / \ a(int) \ - / \ - 5 / \ + * / \ / \ 1 2 3 4 现在,它必须键入检查AST。首先检查=操作员的类型。首先检查操作员的左侧。可以看到该变量a被声明为整数。因此,它现在必须验证右侧表达式为整数。 我了解如果表达式只是一个值(例如1或),该怎么办'a'?但是,对于具有多个值和操作数的表达式(一个复杂的表达式)(例如上述表达式),该如何处理呢?为了正确确定表达式的值,似乎类型检查器实际上必须执行表达式本身并记录结果。但这显然似乎破坏了将编译和执行阶段分开的目的。 我想可以做到的唯一另一种方法是递归检查AST中每个子表达式的叶子,并验证所有叶子的类型都与期望的运算符类型匹配。因此,从=运算符开始,类型检查器将扫描左侧的所有AST并验证叶子都是整数。然后,它将对子表达式中的每个运算符重复此操作。 我曾尝试在《龙书》的副本中研究该主题,但似乎没有涉及太多细节,只是重申了我已经知道的内容。 当编译器对具有多个运算符和操作数的表达式进行类型检查时,通常使用的方法是什么?我上面提到的任何方法都使用吗?如果没有,那么方法是什么,它们将如何工作?

7
您最好使用哪种算法来实现字符串相似性?
我正在设计一个插件,用于根据地址唯一标识各种网页上的内容。 所以我可能有一个看起来像的地址: 1 someawesome street, anytown, F100 211 稍后我可能会发现此地址的格式略有不同。 1 someawesome street, F100 211, 或像 someawesome street F100 这些在技术上是相同的地址,但是具有相似的水平。我想a)为每个地址生成一个唯一的标识符以执行查找,b)找出何时出现非常相似的地址。 我应该查看哪些算法/技术/字符串指标?Levenshtein距离似乎是一个显而易见的选择,但对是否还有其他方法可以在这里使用感到好奇。

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.