软件工程

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

2
如何正确许可开源软件
我有一个正在进行的项目,我想将其作为开源引入新的公共Github存储库。在StackExchange上搜索要使用的正确许可证之后,我就确定了BSD许可证。 我的问题是:现在呢?我是否只需要将BSD许可证文本复制到存储库根目录中的一个名为LICENSE的文件中,并称其为好?这是所有开源许可证如何工作的一般规则吗?还是我需要通知其他组织我正在使用此许可证,以便在必要时可以“强制执行”?

3
ORM是否会促进数据库非规范化?
Doctrine和Propel都利用单个和具体的表继承来映射对象关系。前者将类树中所有可能的字段映射到单个表,而后者将每个类都映射到特定表,从而在继承层次结构中复制了公共字段。 虽然这有利于ORM设备,但对我来说建议数据库设计不好。这些错误的设计模式是否可以在数据库上执行?


6
中间编写单元测试
单元测试是否完全是100%的交易? 我正在浏览旧项目并开始添加功能,这次是进行单元测试。但是,如果我要重新使用过去没有单元测试的组件,这最终将一文不值吗? 我是否需要为所有先前的类编写单元测试,而不必费神,还是只为要添加的新内容编写单元测试可以吗?


8
雇用新生/新手进行开发时,您需要什么技能?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我真的很想向我在Programmers.SE的其他开发人员问这个问题,因为我正在为我的公司招聘应聘者。 雇用新生/新手进行开发时,您需要什么技能?

7
如果有人为您提供有关软件开发实践的未经验证的陈述,您是否回答“需要引用”?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 9年前关闭。 最近,我参加了Greg Wilson(软件木工首席科学家)的演讲。从摘要: 关于软件开发实践的主张应基于证据的想法对于软件开发人员来说仍然陌生,但这终于开始改变:任何声称特定工具或实践使软件开发更快,更便宜或更可靠的学者现在都在改变。希望通过某种经验研究来支持这种说法。 总体而言,这次演讲非常有益,使我对自己的发展方式进行了深入思考。特别是,我现在发现自己正在寻找引用来支持很多陈述。以前,我养成了简单地重复提供的事实的习惯,也许以后会记下一些心理上的注意事项。 坦率地说,我很容易受骗。 这是从讲座中获得的一个例子: “如果超过25%的代码需要重构,则重写起来会更快”。 听起来合理,但这是真的吗?研究在哪里支持呢?所有语言都适用吗?等等。 好的,这很有可能将其推向极致,并且除非您自己是从第一原理中得出的,否则任何人都不相信任何东西。那就是疯狂(或者也许是数学;-))。但是,如果有人向您提出以下声明:“嘿,通过[即时选择语言]执行此操作,如果您倾向于接受它,还是要索取经证明的证据? 如果是后者(我希望是),那么 您将在哪里找到这些证据? 你有多严格? 简而言之,如果有人为您提供未经验证的陈述,您会回答“需要引用”吗?

9
您如何解释已识别问题的根源而不使其成为“借口”?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 在练习(至少是尽我所能)“无我编程”时,我专注于解决编写相关代码的人的问题(如果该人没有编写危险的代码),并且我想完全理解该问题以确保解决这个问题的根源。 但是,当有人指出我的代码显示错误时,在编写缺陷代码时,我经常尝试记住我的心态,然后尝试向指出错误的人解释它,以弄清错误源(例如有些名称选择不当,您可能会以某种意想不到的方式使用它们,并取得了明显的成功...)。 现在,我通过反射进行此操作,而我的大多数同事确实都了解这种反射。但是我也曾在公司中工作,这些公司的同事都以怪异的态度指责那些提出了问题的人(无论对我还是幽默)。 在这种环境中,解释为什么要编写错误的代码会使其他人认为您正在尝试找借口。我说过,大多数非技术人员(或者不是领域专家,不能确定,这只是个人经验)在尝试解释为什么做错事时也完全一样。 因此,在与这类人/环境打交道时,如何在不像“找借口”的情况下说明错误的真正根源?(甚至值得解释吗?)

8
贵公司的学习/开发部门如何为您提供最佳服务?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 7年前关闭。 我将以免责声明开头我的问题-我不是工程师,我只是一个全职与他们一起学习和发展的人。 鉴于此,我经常从负责开发的工程师那里得到的评论之一是,与我所在领域的任何人相比,他们觉得他们正在为他们“推动”开发的解决方案(技术的和非技术的)与他们协商以确定他们真正需要什么。 因此,我的问题是-如果您可以在教室或其他地方给公司列出他们可以做的三到五项最重要的事情,以发展有意义的技能,这些技能将帮助您成为更好的工程师,更好的员工和一个长期与该公司保持合作的可能性更大,为什么会裁员?为什么? 预先感谢您的回复。

11
HTML5的相关性:现在到了?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 似乎我正在接受的大多数工作以及大多数Internet仍在使用标准HTML(假设是HTML 4)+ CSS + JS。是否有人对HTML5的标准位置有什么看法,尤其是在接受和传播方面?很容易找到有关HTML5等实现之间的不一致的信息。我想知道的是HTML5的相关性。
14 html5 

10
帮助我了解自Java 1.4.2以来错过的一切
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我即将开始我的职业生涯,最初是软件开发人员,我很可能会写很多Java代码。我对我将要写的具体内容并不了解,此外,无论如何我对代码都有广泛的兴趣。 由于不值得讨论的原因,我的上一次实习是让我只为Java 1.3和1.4 SDK进行编码。另外,我的大学教育主要集中在算法,数据结构和其他理论上,而不是语言功能或库上。 因此,考虑到以上几点,当前版本的Java(无论现在我们要增加多少?)中的哪些功能,类等,值得我花时间阅读,为什么?自1.4.2起我错过了什么,这使您作为程序员的生活更加轻松? 有关如何发现某个特定软件包或将其投入使用的示例和故事也很棒。

9
您将在此软件开发项目清单中添加什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 4年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我是清单的忠实粉丝。有旅行清单,移动清单甚至是Scrum清单。 上下文:您已被一家大公司雇用,并承担了建立整个软件开发环境,流程,团队等的任务。您将负责创建软件的工作增量。项目规模:2000人/天。 您将哪些项目添加到以下清单(故意是小的和不完整的)清单中: 安装持续集成服务器 编写国防部 撰写一页编码指南 创建产品积压 安装错误跟踪系统 安排定期面对面时间

16
定义两个点的矩形背后的想法是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 并不是说这没有道理,而是在99%的时间内效果都不好。 通常,在2D图形中,矩形是作为一对点进行初始化,存储和操作的。没有特别的语言, class Rect: p1, p2: point 将矩形定义为两个x值和两个y值更有意义,如下所示: class Rect xleft, xright: int ytop, ybottom: int 有两点,如果您想在源代码中的某个地方使用顶部的y值,则必须说rect.p1.y(hmmm,停下来想一想,是p1还是p2),但是使用四个值作为纯数据成员,就很清楚直接了:rect.ytop(无需思考!)使用两点意味着在处理垂直方向时,您必须纠结水平方向;独立元素之间存在无关紧要的关系。 两点想法是如何产生的,为什么会持续下去?它相对于裸露的x和y坐标有好处吗? 补充说明:此问题是在XY对齐矩形的背景下,例如在Windows管理器和GUI工具包中,而不是在绘图应用程序中的任意形状的背景下。

12
程序员今天如何“微优化”?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 回到“好日子”,当我们将共享软件复制到软盘上供朋友使用时,我们还使用了一些汇编程序。有一种常见的“微优化”实践,您会凝视组装线,直到找到一种方法来用更少的指令来表达它。甚至有句谚语在数学上是不可能的:“ 您总是可以再删除一条指令。 ”鉴于如今,对于大多数(大多数)编程而言,通过小的常数因子来更改运行时性能已经不是主要问题,程序员正在转移这些微型代码。其他地方的优化工作? 换句话说,可以将最佳实践带到不再增加任何价值的极端状态吗?而是在浪费时间吗? 例如:程序员是否浪费时间推广只能从一个地方调用的私有方法?是否浪费时间减少了测试用例数据?程序员(仍然)过分担心减少代码行吗? 下面是我要寻找的两个很好的例子:(1)花时间找到正确的变量名,甚至重命名所有内容;(2)删除甚至是次要和脆弱的代码重复。 请注意,这与“ 您针对什么进行优化? ” 问题不同,因为我要问的是其他程序员似乎想最大化使用什么,这些问题的耻辱是“微”优化,因此不能有效地利用时间。

3
克里斯·索耶(Chris Sawyer)用汇编语言编写大多数过山车大亨将涉及多长时间以及哪种类型的复杂性?
关于这个问题,我还有另一个问题…… 克里斯·索耶(Chris Sawyer)用汇编语言编写大多数过山车大亨将涉及多长时间以及哪种类型的复杂性? 为了指定并分解这个问题,我感兴趣; 您估计克里斯大约要花多少工时(有一个猜测)?或者,换句话说,用C / C ++编写整个程序,给出近似的汇编程序编码小时数百分比。 熟悉汇编程序的程序员是否会认为这对于如此低级的语言抽象来说是一项过于复杂的任务?除了性能优势外,这还只是克里斯拥有的一种奇特的自然能力,还是值得学习的技能?我很感兴趣,如果人们认为复杂性/性能值得值得(为了编写)学习汇编程序,或者如果您在汇编程序方面有很多天生的技能(大概是通过使用硬件工作),那么这仅仅是“值得”吗? /硬件驱动程序/电子设备/等)。

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.