软件工程

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

11
您在采访中如何回答“告诉我一些关于您自己的问题”?[关闭]
在一些采访中有人问我这个问题。这总是让我措手不及。面试官显然已经注意到了我的专业和学术背景。还有什么要告诉他/她的?我应该从我的爱好开始吗?我喜欢园艺,还是在业余时间看Reddit上的NSFW图片? 您如何回答这个特定问题?您有准备好的答案吗?如果我认为这个问题有点愚蠢,我错了吗? 更新对于这个问题有很多很好的答案。我在泡菜中选择“正确”答案,因为它们中的大多数非常有见地。我找到了关于这一主题的出色著作。我的口味有点疯狂,但是很有趣: 如何自我介绍...我的意思是
37 interview 

9
为将来的更改而设计或解决眼前的问题[关闭]
在编写代码或进行设计时,您会尝试在一开始就将问题概括化,或者尝试解决非常具体的问题。 我之所以这样问,是因为试图概括问题会导致事情复杂化(可能没有必要),另一方面,如果需求发生变化,扩展特定解决方案将非常困难。 我猜解决方案是找到一条说起来容易做起来难的中间路径。您如何解决这类问题?如果您在什么时候开始对其进行泛化,您知道泛化足够了吗?
37 design 

12
“足够”多少代码覆盖率?
在我们的工作中,我们开始努力提高代码覆盖率,这让我开始思考...。多少代码覆盖率足够? 什么时候达到代码覆盖率递减的地步?良好的覆盖范围与不足之间的最佳结合点是什么?它是否因您正在制作的项目类型(例如WPF,WCF,Mobile,ASP.NET)而不同(这些是我们正在编写的C#类)。

23
一个好的程序员对大学来说值得吗?[关闭]
我一直记得我从事设计和编程工作。如果有编程问题,我可以解决。(但无可否认的堆栈溢出使我跳过搞清楚,并获得直接的做在许多情况下。)我做游戏的,深奥的编程语言,和小工具和小玩意儿称誉。我目前正在使用通用编程语言。没有什么比编程更好。 大学教育真的不仅仅是形式吗?
37 education 

8
将源代码转换为Java字节码有什么用?
如果对于不同的体系结构需要不同的JVM,我无法弄清楚引入这一概念的逻辑是什么。在其他语言中,我们需要用于不同机器的不同编译器,但是在Java中,我们需要不同的JVM,那么引入JVM概念或此额外步骤的逻辑是什么?
37 java  jvm  bytecode 

2
PHP:什么时候使用数组,什么时候将对象用于大多数数据存储的代码构造?
PHP是一种混合范式语言,允许使用和返回非对象数据类型,例如数组。我提出一个问题,试图在确定在特定情况下使用哪种编程构造时,阐明一些选择数组还是对象的准则。 这实际上是一个有关使用PHP语言构造对数据进行编码的方法以及何时更可能为了数据传递目的而选择另一种方法(即面向服务的体系结构或Web服务)的问题。 例 假设您的商品类型由{cost,name,part_number,item_count}组成。您的程序要求显示几种此类项目,并决定使用数组作为外部容器来保存每种项目类型。[您也可以使用PHP的ArrayObjectOO范例,但是我的问题不是关于那个(外部)数组的]。我的问题是关于如何对项目类型数据进行编码,以及使用哪种范式。PHP允许您使用PHP Native Arrays或PHP Objects。 我可以通过两种方式对此类数据进行编码,如下所示: //PHP's associative arrays: $ret = array( 0 => array( 'cost' => 10.00, 'name' => 'item1', 'part_number' => 'zyz-100', 'item_count' => 15 ), 1 => array( 'cost' => 34.00, 'name' => 'item2', 'part_number' => 'abc-230', 'item_count' => 42 ), ); 与 //here ItemType …

6
单元测试和数据库:实际上我应该在哪一点连接到数据库?
对于如何连接到数据库的测试类,例如“应该服务测试类如何连接...”和“单元测试-数据库耦合应用程序”,存在一个问题的答案。 因此,简而言之,假设您有一个需要连接到数据库的类A。您不给A实际连接,而是给A提供了A可以用来连接的接口。为了进行测试,您需要使用一些东西来实现此接口-当然不需要连接。如果类B实例化A,则必须将“真实”数据库连接传递给A。但这意味着B打开数据库连接。这意味着要测试B,您需要将连接注入B。但是B是在类C中实例化的,依此类推。 因此,在什么时候我必须说“在这里,我从数据库中获取数据,而我不会为这段代码编写单元测试”? 换句话说:我必须调用某个类的代码中的某个地方sqlDB.connect()或类似的地方。我如何测试这堂课? 并且与必须处理GUI或文件系统的代码是否相同? 我想做单元测试。任何其他类型的测试都与我的问题无关。我知道我只会用它来测试一门课(我同意你的基利安)。现在,某些类必须连接到数据库。如果我想测试该类并询问“我该怎么做”,许多人会说:“使用依赖注入!” 但这只会将问题转移到另一类,不是吗?所以我问,如何测试真正建立连接的类? 奖励问题:这里的一些答案归结为“使用模拟对象!” 这意味着什么?我模拟了被测类所依赖的类。我现在应该模拟被测类并实际测试该模拟(这与使用模板方法的想法很接近,见下文)?


5
您如何解除牛仔编码器的武装?[关闭]
我发现了一个问题(团队中的牛仔代码),但它与“忍者编码器”的关系更大,而与我遇到的问题有关。 我有一个团队成员,他是“ 牛仔编码器 ”的真实代表。我确实知道不能改变人,但是是一种使他像“牛仔编码器”一样停止行为的方法吗? 他拒绝听取团队的意见,并且他最近停止了代码审查,单元测试,共享实施细节等。 是的,他可以快速“编码”,但是他的代码只是一个错误生成器。我和其他团队成员都处于“错误修复阶段”,其中80%的错误来自他的代码。我不想修复他的错误。管理层是盲目的,或者不想看到这一点,或者他们喜欢他的“速度”。 我(作为他年龄较小的同事,而不是老板)可以采取任何措施吗? 我该如何解除牛仔编码器的武装? 我觉得我是最后一个真正关心这个项目的人。

11
输出不确定的单元测试方法
我有一个用于生成随机密码的类,该密码的长度也是随机的,但仅限于定义的最小和最大长度之间。 我正在构建单元测试,并且在此类中遇到了一个有趣的小问题。单元测试背后的整个想法是,它应该是可重复的。如果您运行测试一百次,它应该给出一百次相同的结果。如果您依赖某些可能会或可能不存在的资源,或者可能会或可能不会处于初始状态,那么您就应该模拟有问题的资源,以确保您的测试确实总是可重复的。 但是,如果应该SUT产生不确定的输出呢? 如果我将最小和最大长度固定为相同的值,那么我可以轻松地检查所生成的密码是否具有预期的长度。但是,如果我指定了可接受的长度范围(例如15至20个字符),那么您现在遇到的问题是,您可以运行一百次测试并获得100次通过,但是在第101次运行时,您可能会得到9个字符串。 就密码类而言,它的核心是相当简单的,它不应证明是一个大问题。但这让我想到了一般情况。在处理通过设计产生不确定输出的SUT时,通常被认为是最好的策略是什么?

6
是什么使应用程序具有可伸缩性?
我在职位发布中不断看到,申请人必须具有编写“可扩展”应用程序的经验。是什么使应用程序具有可伸缩性?我如何知道我的代码可以扩展到数百万个用户? 我想表达这个问题的一种更好的方法是:如何在编写代码时考虑可伸缩性?这样一来,代码就可以从一开始就进行扩展,而不是事后才想到。是否有某些设计方法?还是仅仅是为工作选择正确的算法?

4
我可以缩小需要版权声明的Javascript吗?
我想这实际上是一个法律问题,但它与软件有关。我将在项目中包含一个JS插件。评论包括: 重新分发源代码必须保留上述版权声明,此条件列表和以下免责声明。*以二进制形式重新分发必须在分发随附的文档和/或其他材料中复制上述版权声明,此条件列表以及以下免责声明。 是在我的网站上使用“重新分发”吗? 如果我将其最小化以节省带宽,我认为它将删除所有注释。如果对#1的回答是“是”,那是否意味着我在法律上不允许将其缩小? (这很臭,因为我计划在部署过程中自动缩小所有JS。)
37 copyright 


3
自引用表,好还是坏?[关闭]
代表应用程序中的地理位置,基础数据模型的设计提出了两个明确的选择(或可能还有更多选择)。 一个表,带有一个自引用的parent_id列UK-伦敦(伦敦父母ID =英国ID) 或两个表,使用外键一对多关系。 我更喜欢一个自引用表,因为它可以轻松扩展到所需的子区域。 通常,人们会偏离自引用表,还是可以?

3
REST API-API是否应返回嵌套的JSON对象?
当涉及JSON API时,将响应展平并避免嵌套JSON对象是一种好习惯吗? 例如,假设我们有一个类似于IMDb的API,但用于视频游戏。有几个实体,分别是Game,Platform,ESRBRating和GamePlatformMap,它们映射了Game和Platform。 假设您请求/ game / 1来获取ID为1的游戏,并返回嵌套了平台和esrbRating的游戏对象。 { "id": 1, "title": "Game A", "publisher": "Publisher ABC", "developer": "Developer DEF", "releaseDate": "2015-01-01", "platforms": [ {"id":1,"name":"Xbox"}, {"id":2,"name":"Playstation"} ], "esrbRating": { "id": 1, "code": "E", "name": "Everyone" } } 如果您使用的是JPA / Hibernate之类的工具,并且将其设置为FETCH.EAGER,它可能会自动为您执行此操作。 另一个选择是简单地使用API​​并添加更多端点。 在这种情况下,当请求/ game / 1时,仅返回游戏对象。 { "id": 1, "title": "Game A", …
37 design  rest  api-design  json 

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.