软件工程

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

6
针对REST服务器测试REST客户端。夹具怎么做?
在编写单元测试时,通常使用固定装置:可测试的数据很少,因此我们可以说:1.让所有客户都应该包括Willy Wonka。2.删除客户端3,现在获取客户端不应再包括Willy Wonka。 单元测试很好。使用设置/拆卸来重新加载固定装置或回滚事务。因此,测试可以在事务内部完成创建,更新和删除操作。新的临时数据仅持续测试时间,然后被重置。 但是,当我们将REST服务器与REST客户端分离时该怎么办? 我们要确保REST客户端不仅正确读取,而且正确创建,更新和删除。 对于如何针对远程测试REST服务器执行此操作,我找不到任何示例或建议。 假设我有一个仅测试灯具的测试REST服务器。HTTP的整个无状态性质意味着很难发送“ BEGIN TRANSACTION”和“ ROLLBACK TRANSACTION”或“ RELOAD FIXTURES”类型的消息,对吗? 我不能成为第一个这样做的人,所以我觉得我需要以不同的方式来思考这个问题。 有什么建议么?
10 unit-testing  api  rest 

1
用JS构建计算机系统?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我最近完成了一本名为《计算系统的元素》的书,从基础逻辑门到创建自己的机器代码和汇编语言,再到中间代码,最后是一个简单的面向对象,从头开始构建一个有效的计算机系统。编译为VM代码的编程语言。我非常喜欢它,我想用JavaScript创建类似的东西,但是功能更多。我已经用JS为Hack机器编写了一个模拟器: // Creates a new CPU object that is responsible for processing instructions var CPU = function() { var D = 0; // D Register var A = 0; // A Register var PC = 0; // Program counter // Returns whether an instruction is valid or …
10 javascript 

3
方法的参数列表应包含对象还是对象标识符?
我们的团队进行了以下讨论: 假设我们有以下两种方法: public Response Withdraw(int clubId, int terminalId,int cardId, string invoice, decimal amount); public Response Withdraw(Club club, Terminal terminal,Card card, string invoice, decimal amount); 通过有线方式发送的只是ID。 一方说第一种方法是正确的,因为我们只有终端和俱乐部的ID,并且应该清楚我们别无其他,这是我的方法。 另一边说第二种方法是正确的,因为它更灵活。 我们熟悉对象参数的想法,另一边也认为对象参数应该具有对象作为属性。 哪种方法正确? 也许还有第三种更好的方法?
10 design  methods 

2
策略模式中的上下文类
我试图理解策略模式并问自己:上下文类是必须具备的,还是可以在不损害模式目的的情况下将其省略? 我给我的印象是我需要某种开关来读取不同类型的文件,但不想仅仅破解某些东西,以后再进行重构(尽管当然总是可以对代码进行重构,但是想法是:尝试事先在设计中尽可能地聪明...): 图片取自Wikimedia 客户可以直接委派给Strategy界面吗?或者我只是想了解有关上下文类的内容? interface Reader { // read information from file and fill data list field of Client readFile(); } class ExcelReader implements Reader{ /* */ } class PdfReader implements Reader{ /* */} class Client{ // strategic choice Reader r; // data list field List<Data> data; // Client Constructor …

3
我们能否使在大型代码库的不同部分之间添加数据流更容易?
在对大型系统进行更改时,我经常会遇到一个问题,即某些功能需要从另一部分中获取一些数据,但是它们位于深度和分支调用树的不同部分中,可能流经事件侦听器,延迟调用,等。这样,简单的更改就会迅速膨胀。 Yossi Kreinin的博客文章(http://www.yosefk.com/blog/i-want-a-struct-linker.html)的相关引用: 您有很多传递的数据结构。很快,关于该结构的最有价值的事情不是它保留的数据,而是通过一些繁琐的控制流程一直可用的事实。 全局变量是让代码“呼喊”到遥远的代码的一种经典方法,但众所周知它们存在问题。动态范围变量是一种更受限制的方法,但它们也存在问题。 是否有旨在解决此问题的编程语言研究?我们是否可以更轻松地将意外的数据流添加到大型代码库中,同时仍具有静态检查,简便的单元测试和其他优点?

3
网页上的3d图形最与浏览器/系统兼容的选项是什么?
我想为涉及3D的网站开发一些功能-用户可以在对象周围移动,旋转对象和对其进行纹理化。 到目前为止,我已经研究了: WebGL(尤其是three.js),它看起来很棒,但是IE或IOS不支持它。 IOS支持<canvas>标记,但仅支持2d。看起来three.js具有不受支持的hack,可以使3d东西使用2d canvas而不使用纹理,但这看起来像hack。 我还考虑过使用Flash,该Flash在大多数浏览器上都可以使用,但在IOS上则无法使用。 在各种浏览器和界面上进行3D Web图形处理的最佳选择是什么? 目前,我正在考虑将WebGL用于Web(并要求人们使用chrome或firefox,并在IE上大获成功),然后也许为IOS编写本机应用程序,但是我不确定是否有更好的替代品可供我使用不知道

2
Lisp和Scheme中的类型
我现在看到球拍具有类型。乍一看,它似乎与Haskell键入几乎相同。但是Lisp的CLOS是否涵盖了Haskell类型涵盖的某些空间?创建一个非常严格的Haskell类型和任何OO语言的对象似乎都差不多。只是我喝了一些Haskell kool-aid,而我完全偏执地认为,如果我沿着Lisp的路走,由于动态打字,我会被搞砸了。


3
对于高级开发人员来说,这些技术详细面试问题有什么意义?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我参加了一次内部晋升面试,以获取更高级别的程序员头衔,例如Senior plus。我曾经接受过大约7位使用不同技术的人的采访,而与我使用同一技术的人(.Net)往往会提出非常详细的技术问题,实际上可以通过Google轻松找到,例如什么是JIT,GC如何工作,列表和数组之间的区别,抽象类和接口,委托和事件,甚至在处理上载文件时的类名是什么,等等。我只问了一个关于我的项目设计思想的问题,简单的讨论。但是对于其他大多数我的设计选择,他们似乎并不感兴趣。 我尚未得到结果,大约要在本周下旬,但这是我的担忧: 我个人认为,当我担任高级程序员时,我主要是解决问题,我只需要知道有一些特定的方法可以实现它,但是我可能不记得每一个详细的内容,所以这就是为什么我们需要这些详细的参考资料像MSDN这样的文档。 如果您发现我在这方面没有太多经验,例如初级到中级,那么我感觉很好,但是当您倾向于面试更高层次的人时,您是否应该更加集中精力看看这个人的逻辑思维方式和良好程度他/她正在解决问题吗?每个人都只是想想,如果您知道所有详细的小知识点技术知识,那么您是Senior +。通过查看这些面试问题书,我发现还有更多这类问题。 如果我花5天时间浏览那些面试问题清单书,我可以轻松地使那些家伙感到惊讶,但这真的意味着什么吗?这种面试可以轻松地使那些擅长记住事情的家伙获得更高的薪水,即使他们不知道如何解决难题。 那么,为什么这在世界范围内发生,是因为仅仅导致解决问题的能力,设计能力难以衡量?我已经为这家公司服务了多年,并且几乎没有接受其他公司的采访,所以我想知道每个公司都在做同样的事情吗? 还是这实际上只是我自己的问题,我应该在脑海中更加努力地记住MSDN中的所有内容,以便即使没有Internet也可以工作。 编辑 为了更好地说明我有关弗兰克对工作任务的关注的情况。抱歉,我没有弄清楚这些背景。 实际上,工作的任务并没有特别的改变,我个人认为我已经担任大四的工作,例如代码审查,导师成员,审查BA的文档并提供技术意见,新项目的设计架构,这只是我的头衔。留在没有大四学生的情况下,我要求找人来反映工资单并进行这样的采访。这是一家Saas公司,因此只要该产品仍然存在,人们就可以留在一个项目中,这导致他们需要人们能够根据当前产品设计更多新功能,在实时服务器上解决技术难题,设计/代码审查/指导。成员基于技术的较高职称的是Architect,我们没有与Technical Expert相似的工作。我同意,如果您想扮演技术专家的角色,则应该了解有关所使用技术的更多详细信息。抱歉,我没有弄清楚这些背景。
10 interview 

3
为什么Internet Explorer与其他浏览器存在如此多的不兼容性?
Internet Explorer具有许多其他浏览器所没有的专有功能,以及与标准的许多不兼容。有谁知道这些不兼容的原因是什么? 例如:我使用Crossrider框架开发了一个浏览器扩展。该扩展程序可以与[Windows | Windows Server 2003]的所有组合一起很好地工作。Mac OS | Linux]和[Chrome | 火狐],但它不与IE由于IE手柄的工作$(window).height()和$(window).scrollTop()有一点不同。 是否有对此情况的已知透彻分析,或与内部人士会面以查明原因?是企业文化,设计过程,质量保证缺陷还是一些可怕的未知遗产?

4
替换为Java的instanceof?
因此,我对现实世界中的编程(学术项目之外)还很陌生,并且遇到了很多帖子,他们说instanceof使用来确定特定对象的类是一件坏事。 我的情况是我有三个类,一个基本产品类,一个扩展了该类,另一个扩展了该类。这些都存储在数据库的同一表中,我有一些代码需要使用每个方法来提取数据。 解决这种问题的最佳实践是什么?我已经阅读了有关多态性的一些知识,但是找不到解决我所遇到问题的任何示例。它们通常都覆盖了一个对我来说不起作用的方法,因为我需要从不同的对象中提取不同的东西。 有没有更好的方法可以做到这一点,还是我坚持使用instanceof某种反射来获取特定于对象的字段?

6
什么定义了“软件开发人员”角色
我是一名初级软件开发人员,并且在一家公司工作不到一年。 虽然我一直以为软件开发人员意味着要开发软件和CODE,但是我的任务更多是在管理工作上,例如设置Jenkins,SQL Replication等。 这些类型的工作是否包含在开发人员角色中,或者开发人员仅开发软件?我应该和我的经理谈这件事吗?这是公司评估“发展”技能的常用方法吗?
10 company  roles  task 

4
如何更新大型遗留代码库以满足特定的质量标准?
关于用于改进遗留代码库的工具和技术的信息很多,但是我还没有遇到任何成功的现实案例研究。大多数建议都是微观的,尽管很有帮助,但由于缺乏证据,因此无法说服很多人,因为它不能在宏观上提供帮助。 我正在专门寻找渐进式改进,这些改进已被证明在更新大型遗留代码库以满足当今的质量标准而不是完全重写时在现实世界中是成功的。 之前: 大:大于1MLOC 旧版:无自动化测试 劣质:高复杂度,高耦合,高逸出缺陷 后 自动化测试 更容易的更新/维护 高质量:降低复杂度,解耦代码,避免一些缺陷 在现实世界中,已经证明了哪种增量步骤可以成功更新大型遗留代码库,以达到上述质量标准,而无需进行完全重写? 如果可能,请在回答中包含一个示例公司或一个大型旧项目的案例研究,该项目已通过“成功的”质量改进过程以进行备份。

5
线段旅行的面试难题
在length为的数字行上M,其中0 < M <= 1,000,000,000您给N(1 < N <= 100,000)整数对点。在每对中,第一个点表示对象当前所在的位置,第二个点表示对象应移动到的位置。(记住的second一点可能是更小的比first)。 现在,假设您从这一点开始,0并有一个可以容纳1物体的推车。您希望将所有对象从其初始位置移动到各自的最终位置,同时沿数字线移动最短距离(而不是位移)。你必须结束点M。 现在,我一直试图将这个问题简化为一个更简单的问题。老实说,我什至都没有想到过蛮力(可能贪婪)的解决方案。但是,我的第一个想法是将后退运动退化为两个前进运动,但这似乎并非在所有情况下都有效。 我3在这里绘制了这些样本测试用例: 第一个测试用例的答案是12。首先,您red在位置拿起物品0。然后移动到点6(距离= 6),red暂时放下该项目,然后拿起该green项目。然后,您移至点5(距离= 1)并放下该green项目。然后,您移至点6(distance = 1)并拾取放置的red项目,移至点9(distance = 3),然后移至点10(distance = 1)以完成序列。 行驶的总距离为6 + 1 + 1 + 3 + 1 = 12,这是最小的可能距离。 12我相信其他两种情况的答案是。但是,我找不到解决该问题的一般规则。 任何人有任何想法吗?
10 algorithms  math 

5
在MVC中,是否可以/应该在View中完成从模型的基本数据检索?
考虑到“瘦控制器,胖模型”的概念以及视图在需要输出数据时视图可以直接调用模型的普遍接受性,是否应该考虑处理视图中请求的“获取和显示”部分而不是控制器?例如(试图使代码相当通用): 控制者 <?php class Invoice extends Base_Controller { /** * Get all the invoices for this month */ public function current_month() { // as there's no user input let's keep the controller very skinny, // DON'T get data from the Model here, just load the view $this->load->view('invoice/current_month'); } } 视图 …

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.