软件工程

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

3
与团队重命名,重构和打破变更的最佳实践
在团队环境中进行重构和重命名的最佳实践是什么?我提出了一些方案: 如果重构了通常引用的库,以对引用该库的任何库或项目进行重大更改。例如,任意更改方法的名称。 如果项目已重命名,则必须使用对它们的更新引用来重建解决方案。 如果通过引入文件夹并将现有项目或解决方案移至新位置来将项目结构更改为“更有条理”。 一些其他想法/问题: 是否应该像这样发生变化,还是所导致的疼痛表明结构出现了问题? 谁应该负责修复与重大更改相关的错误?如果开发人员进行了重大更改,那么他们应该负责进入受影响的项目并对其进行更新,还是应该提醒其他开发人员并提示他们进行更改? 这是可以按计划执行的事情还是应该尽可能频繁地执行?如果重构推迟的时间太长,则调解就变得越来越困难,但是由于一天中其他地方发生的变化,每天同时花费1小时来修复一个构建。 这是一个正式的沟通过程,还是有机的?

4
面试问题排名FizzBu​​zz(1),实现malloc(10)[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我想对以下面试问题的难度发表意见: 在O(n)时间的整数数组中找到最大和的连续子数组。 乔恩·本特利(Jon Bentley)在他的《编程珍珠》中将这个琐碎的发声问题称为著名,他用它来演示算法设计技术。 以1到10的比例,1是FizzBu​​zz(或HoppityHop)测试,10是实现C stdlib函数malloc(),您如何评价上述问题? 我认为最能回答这个问题的人是已经阅读了《 Programming Pearls》并尝试自己解决此问题的人。为了激励那些没有的人,“ Programming Pearls”在“十大编程书籍”列表中得到了很多推荐。 以下几点评论可能有助于获得更好的评分: 实现malloc()并不像看起来那么困难。例如,请参见K&R的C编程语言。有时微软会问它。 CLRS对问题解决的观察:从头开始解决问题通常比验证清楚提出的解决方案更加困难,尤其是在时间限制下工作时。

5
管理西班牙文代码
我们有一个来自西班牙的客户的新项目,他的所有Java代码以及注释,变量,方法名都用西班牙语。 我们不允许将其转换为英语然后再使用它们。如果您中的任何一个在这样的情况下工作,您能建议我们可以做些什么来减轻这种风险,因为我们必须进行新的开发,这是一个主要的演出停止点。 他们的Java项目混合了EJB,Struts,自定义框架和10000多个Java文件,总共至少有20万行代码(最少估计),并使用Weblogic Server 10进行了部署。 问候,眼花D乱的人
10 java 

7
函数式编程的论点
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我最近一直在有趣地学习F#(我是VB.NET/C#开发人员),我真的很喜欢它提供的一些功能。从理论上讲是这样。但是我想不出要选择使用F#而不是C#进行编码的方案。有任何想法吗?

10
如何与认为框架对性能有影响的同事进行沟通
当常见的响应是一个笼统的声明,例如“ jquery”时,如何出售“我们应该使用jQuery,因为它的高度优化和跨浏览器兼容”或“实体框架很酷,因为它简洁并且可以自动处理我们的模型”这样的想法表现不佳”还是“当我们只需要10个实体时,表中的实体就会带来12列”? 我是一个务实的人,倾向于相信我通过经验开发的公理(除非出现明显的减速,否则它不是性能问题)。我不知道另一个极端是否适合某个特定的“类别”,而在没有其他证明之前,一切都是性能问题……甚至在这里开始沟通。

1
如何应对信息超负荷或生存之道[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 每当我想读一些东西,例如关于Java的书时,我会发现很多东西,例如许多教程,许多电子书,所以我无法决定选择哪一个。 我花了一些时间读一本,然后读了两本,依此类推,最后我离开却一无所获。 我喜欢过去的日子,那时我们只有很少的资源,如一本硬皮书,至少我从头到尾都完成了,获得了很多,但是现在。 信息太多,思维从一个来源跳到另一个来源,却一无所获。 我该怎么办?

4
有什么理由不能将延迟初始化内置到Java中吗?
由于我在服务器上使用的用户绝对没有非持久状态,因此我们在每个请求中都会推出我们拥有的每个与用户相关的对象。 因此,我经常发现自己对可能未使用的对象的属性进行了延迟初始化。 protected EventDispatcher dispatcher = new EventDispatcher(); 成为... protected EventDispatcher<EventMessage> dispatcher; public EventDispatcher<EventMessage> getEventDispatcher() { if (dispatcher == null) { dispatcher = new EventDispatcher<EventMessage>(); } return dispatcher; } 有什么理由无法将其内置到Java中吗? protected lazy EventDispatcher dispatcher = new EventDispatcher(); 就像下面的评论中提到的那样,我意识到一种语言在理论上可以发展为包含您想要的大多数内容。我正在寻找一种可能性的实用度量。这会与其他功能冲突吗?实现是否足够简单,可以很好地与JVM一起使用?甚至,这是个好主意吗?

7
谁应该编写测试计划?
我在公司内部开发团队中,我们根据营销团队的要求开发公司的网站。在将网站发布给他们进行验收测试之前,我们被要求给他们提供一个遵循的测试计划。 但是,开发团队认为,由于需求来自请求者,因此他们将最了解测试内容,查找内容,行为方式等,因此不需要测试计划。我们一直对此争论不休,开发人员发现浪费时间来写下以下内容: 点击按钮一个。 重点在XYZ表单字段,然后单击按钮乙。 你应该看到的行为Ç。 对于每项要求/功能,我们都必须重复进行。基本上,这是对需求文档中已有内容的重新表述。 我们正朝着使用敏捷方法来管理我们的项目迈进,并且在每次迭代结束时都要求这样做。 除了单元和集成测试之外,谁应该是提出最终用户验收测试计划的人?应该是请求者还是开发者? 提前谢谢了。 关于 CK

3
您如何克服大屏幕房地产设计的挑战?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 这个问题比较主观,但是我希望有一些新的看法。我习惯于为特定的屏幕尺寸(通常为1024x768)进行设计,以至于发现该尺寸不是问题。将尺寸扩展为1280x1024并不能为您带来足够的屏幕空间,无法为您带来显着的变化,但会给我更多的呼吸空间。基本上,我只是扩大了“网格大小”,并且略微缩小屏幕的相同基本设计仍然有效。 但是,在最近的几个项目中,我的客户都使用1080p(1920x1080)屏幕,他们希望解决方案能够尽可能多地使用该屏幕。1920像素的宽度几乎是我习惯使用的宽度的两倍,宽屏使我的一些旧设计方法无法正常使用。我遇到的问题是,面对如此多的空间,我遇到了一些重大问题。 我应该使用几列?宽格式适用于以2:1:1拆分的3列拆分(即,内容列大于其他两个列)。但是,如果我选择三列,那么该多余的列怎么办? 如何有效利用屏幕空间?试图将所有内容同时显示在屏幕上是一种诱惑,但是太多的信息实际上使应用程序更难使用。空格对于帮助理解复杂的信息很重要,但是太多的空格会使相关的概念显得过于分离。 我通常使用具有复杂数据的Web应用程序,而可视化和表示形式是理解原始数据的关键。当您的用户还具有大屏幕(至少24英寸)时,某些信息不在视线范围内,您需要将指针移动很长一段距离。如何确保所需的所有内容都停留在视觉热点内? 当宽度受限制时,像博客之类的简单网站实际上会做得更好,这会导致大量的房地产浪费。我有点想知道是否将文本框和文本预览并排放置对于这种类型的屏幕的管理员侧来说是否会有很大的好处?(1:1两列拆分)。 对于您的答案,我知道设计中的几乎所有内容都是“取决于”的。我正在寻找的是: 您使用的一般原则 您的设计方法是如何改变的 我发现我必须重新训练自己如何使用这种不同的格式。迄今为止,我一直努力解决的每个分辨率难题都约为25%:640至800(增加25%),800至1024(增加28%)和1024至1280(增加25%)。但是,从1280到1920的跃迁在空间上增加了50%,相当于从640跃升到1024。这是没有常用的中等大小来帮助逐步学习课程的。
10 design  gui  usability 

7
当用户要求您将不实现的功能时,您该怎么办?
当用户要求您可以实现的复杂功能时您会怎么做,但是您不会这样做,因为1)它给其他用户增加了不必要的复杂性2)您也不想将其作为一种选择您不希望您的设置面板过于复杂。 我写了一个iOS应用程序,由于上述原因,有一些用户问我一些无法使用的复杂功能。大多数时候,我只是回答他们:“我们会考虑到这一点。” 向他们解释说他们属于少数族裔,希望获得此功能也无济于事。那么,在这种情况下您该怎么办?
10 features 

5
我们该如何告诉不受支持的IE6用户?
在即将发布的网络应用程序版本中,我们已经破坏了IE6,并且不打算对其进行修复。几个月来,我们已经为IE6用户发布了明确的警告;我们决定是时候不支持它了。 我的问题是:我们应该如何将此信息传达给用户? 这里有些人认为我们应该阻止试图访问该Web应用程序的IE6用户,因为它对他们不起作用。其他人则认为我们应该只留下警告,说“这在IE6中不起作用”,但不能阻止它们;而是应将其阻止。相反,如果他们单击以消除警告,请让他们进入损坏的站点,以便亲自查看该行不通。 谁是对的?有没有更好的办法?

4
分支源代码和应用程​​序生命周期的最佳实践
我们是一家ISV小型商店,通常我们每个月都会发布我们产品的新版本。我们使用Subversion作为代码存储库,并使用Visual Studio 2010作为IDE。我知道很多人都在倡导Mercurial和其他分布式源代码控制系统,但是目前我还不知道如何从中受益,但是我可能是错的。 我们的主要问题是如何使分支和主干保持同步。 这是我们今天的工作方式: 发布新版本(在Subversion中自动创建标签) 继续研究将于下个月发布的主干 并且该周期每个月重复一次,并且运行良好。当需要发布紧急服务发布时会出现问题。我们无法从主干(2)上将其释放,因为它正在大力开发且不够稳定,无法紧急释放。 在这种情况下,我们将执行以下操作: 从我们在步骤(1)中创建的标签创建分支 错误修复 测试并发布 将更改推回主干(如果适用) 我们最大的问题是将这两个(主分支)合并。在大多数情况下,我们不能依靠自动合并,因为例如: 主干做了很多改变 合并复杂的文件(例如Visual Studio XML文件等)效果不佳 另一个开发人员/团队进行了您不了解的更改,您无法将其合并 因此,您认为最好的做法是使这两个不同的版本(分支和主版本)保持同步。你是做什么?

5
如何管理问题跟踪者的待办事项
几年来,我们一直在忠实地使用Trac,而我们的“活动票”列表已增长到近200个。这些错误包括优先级太低且暂时无法修复的错误,已推迟的功能请求,从未真正引起投诉的问题,但每个人都同意应该有朝一日修复,计划的代码重构以及我们不愿意做的其他设计问题不想迷路,等等。 结果,在其中近200个问题中,这个列表几乎是不堪重负的。它不再是当前需要处理的工作的来源。 跟踪此类问题的最佳方法是什么? 问题的部分原因是其中某些问题的优先级较低,以至于它们可能永远无法解决。我讨厌丢失这些物品(类似于不想在我的房子里扔东西,以防有一天可能需要它);我是否需要将它们扔掉(通过将它们标记为wontfix),并假设将来需要时可以找到它们?


3
放弃软件的代码是否曾经正确死亡?
我的印象是,随着时间的推移,将生成越来越多的开源代码,并将其添加到各种免费或部分免费的存储库中,然后通常被废弃。 是否有任何公认的废弃代码处理标准?这应该由存储库强制执行,还是由原始代码作者来决定?

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.