软件工程

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


14
程序员通常在行业中待多长时间?[关闭]
多年来,我经常听到的一件事是,那些在IT世界中工作的人通常不会摆脱终身职业,而是倾向于“精疲力尽”并开始从事其他无关的新职业(例如从软件开发到成为会计师)。 您是否发现您的经历大体上是正确的,如果是这样,对人们在开始新职业之前要担任开发人员多长时间的总体印象是什么?
60 experience 

16
FizzBu​​zz-真的吗?[关闭]
当涉及“面试测试”问题时,FizzBu​​zz的主题经常浮出水面。也有关于它的编码恐怖帖子。 现在,如果您不愿意阅读此类网站,那么可能不太会发现FizzBu​​zz无关紧要的程序员群体。 但是,确实有99%的程序员会为此奋斗吗? 真? 有什么证据可以证明这一点? 一些现实生活中的例子对于回答这个问题会很有帮助。
60 interview 



4
作为唯一的开发人员(目前),我应该如何使用Git?[关闭]
我在Git上有多个项目,最终我希望将其引入其他项目。但是,现在只有我一个人,我非常简单地使用Git和GitHub:没有分支,基本上只是将提交用作本地文件的备份。有时我会回头查看文件的早期版本以供参考,但是到目前为止,我不需要进行任何回滚,尽管我很欣赏将来可能需要的选项。 作为唯一的开发人员,我现在可以利用Git或GitHub的哪些功能使我受益?我的工作流程应该怎样? 另外,是否有任何我需要开始做的特殊实践,以期望将来将其他人添加到我的项目中?

16
如何处理分析瘫痪?
很多时候,我在选择最佳设计决策时陷入困境。即使对于小的细节,例如函数定义,控制流和变量名,我也会花费很长的时间仔细研究我所选择的收益和权衡。 我觉得我花了很多时间在诸如此类的无关紧要的细节上而失去了很多效率。即使我知道,如果当前的设计无法解决,我可以更改这些内容,但我很难确定一个选择。 我应该怎么做才能解决这个问题?

5
源文件中的版权声明/免责声明
在开放源代码项目的每个源文件中放置版权声明,各种法律免责声明,甚至有时是完整的许可协议是一种常见的做法。这对于(1)开源项目和(2)闭源项目真的必要吗?通过将这些声明放在源文件中,您试图实现或防止什么? 我知道这是一个法律问题,而且我怀疑我们是否可以在程序员那里得到一个完全称职的答案。所以(这是针对程序员的,不是吗?)当您在源文件中放入合法内容时,也将听到一个有趣的消息。 ,是因为“每个人都这样做”还是您得到了法律建议?这是什么原因?

2
为我不明白目的的代码编写测试
我最近完成了黑盒重构。我无法检入它,因为我无法确定如何进行测试。 在较高的层次上,我有一个其初始化涉及从某些类B获取值的类。如果类B为“空”,它将生成一些合理的默认值。我将这一部分提取到一种方法中,该方法将B类初始化为相同的默认值。 我还没有弄清这两个类的目的/背景,或如何使用它们。因此,我无法从空的类B初始化对象并检查其是否具有正确的值/是否做正确的事情。 我最好的主意是运行原始代码,根据初始化的成员在公共方法的结果中进行硬编码,然后对此进行测试。我不太清楚为什么我对这个想法含糊不清。 这里有更好的进攻方式吗?

7
代码覆盖突出显示了未使用的方法-我该怎么办?
我的任务是增加现有Java项目的代码覆盖率。 我注意到,代码覆盖率工具(EclEmma)强调了一些从未在任何地方调用的方法。 我最初的反应不是为这些方法编写单元测试,而是向我的生产线经理/团队强调它们,并询问为什么要从那里开始使用这些功能。 最好的方法是什么?为他们编写单元测试,或者质疑为什么要在那里?

3
程序的启动/初始加载窗口的名称?
我正在编写用户文档(SOP),其中涉及我试图很好描述的第三方程序。一个这样的程序是服务器,除了在初始化/启动例程期间显示的图形外,它几乎不提供启动指示。 作为开发人员,我已将该窗口用作状态快速指示符,并希望将其传达给我的听众(操作员/工程师),但我不知道它叫什么。我的第一个问题是启动时显示的图形是否有正式名称或广泛接受的名称(以下示例)。第二,什么是更可取的引用方式,可以快速将想法(没有图形)传达给我的听众? 例子 |

5
计算机会尝试除以零吗?
我们都知道0/0是Undefined如果我是把它变成一个计算器返回一个错误,如果我是创建一个程序(在C至少)操作系统将终止它,当我试图除以零。 但是我一直想知道的是,计算机是否试图除以零,或者它只是具有“内置保护”,这样当它“看到” 0/0时甚至在尝试计算之前就返回错误?

3
如何在敏捷环境中完成建筑设计?
我已阅读《敏捷架构师原则》,其中定义了以下原则: 原则1:对系统进行编码的团队设计系统。 原则2构建最简单的可行架构。 原则#3如有疑问,请将其编码。 原则4:他们构建,测试。 原则5:系统越大,跑道越长。 原则6系统架构是角色协作。 原则7:创新没有垄断。 该论文说,大多数架构设计是在编码阶段完成的,而在此之前只有系统设计。那也行。 那么,系统设计如何完成?使用UML?还是定义接口和主要块的文档?也许还有别的吗?

14
为什么SQL注入预防机制会演变为使用参数化查询的方向?
在我看来,可以通过以下方式防止SQL注入攻击: 仔细筛选,过滤和编码输入(在插入SQL之前) 使用准备好的语句 /参数化查询 我想每个都有优点和缺点,但是为什么#2脱颖而出,或多或少地被认为是防止注入攻击的实际方法?是更安全,更不容易出错,还是还有其他因素? 据我了解,如果正确使用#1并注意所有警告,它可能与#2一样有效。 消毒,过滤和编码 在清除,过滤和编码的含义上,我感到有些困惑。我要说的是,出于我的目的,以上所有选项都可以考虑作为选项1。在这种情况下,我了解到清理和过滤有可能修改或丢弃输入数据,而编码可以按原样保留数据,但可以对其进行编码适当避免注射攻击。我认为转义数据可以视为对数据进行编码的一种方式。 参数化查询与编码库 有一些答案,其中parameterized queries和的概念encoding libraries可以互换使用。如果我错了,请指正我,但我印象深刻的是它们是不同的。 我的理解是encoding libraries,无论多么出色,他们总是有潜力修改SQL“程序”,因为在发送给RDBMS之前,他们正在对SQL本身进行更改。 Parameterized queries 另一方面,将SQL程序发送到RDBMS,然后优化查询,定义查询执行计划,选择要使用的索引等,然后插入数据,作为RDBMS内部的最后一步本身。 编码库 data -> (encoding library) | v SQL -> (SQL + encoded data) -> RDBMS (execution plan defined) -> execute statement 参数化查询 data | v SQL -> RDBMS (query execution plan defined) -> …

11
如果数字没有任何含义,魔术数字在单元测试中可以接受吗?
在单元测试中,我经常在代码中抛出任意值以查看其作用。例如,如果我知道foo(1, 2, 3)应该返回17,则可以这样写: assertEqual(foo(1, 2, 3), 17) 这些数字纯粹是任意的,没有更广泛的含义(例如,它们不是边界条件,尽管我也对此进行了测试)。我很难为这些数字想出好名字,而写类似的东西const int TWO = 2;显然是无济于事的。这样编写测试是否可以,还是应该将数字分解为常量? 在中,所有魔幻数字是否都相同?,我们了解到,如果从上下文可以明显看出含义,则魔术数字是可以的,但是在这种情况下,数字实际上根本没有任何意义。

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.