软件工程

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


7
堆栈跟踪是否应该出现在向用户显示的错误消息中?
我在工作场所有些争论,我试图弄清楚谁是正确的,以及正确的做法是什么。 上下文:我们的客户用于会计和其他ERP内容的Intranet Web应用程序。 我认为向用户显示的错误消息(当事情崩溃时)应该包括尽可能多的信息,包括堆栈跟踪。当然,它必须以友好的大写字母“ N发生错误,请向开发人员提交以下信息”开头。 我的理由是,崩溃的应用程序的屏幕快照通常将是唯一容易获得的信息源。当然,您可以尝试与客户的系统管理员联系,尝试解释您的日志文件在何处,等等,但这可能会很缓慢且令人痛苦(与客户代表进行交流的大部分时间是这样)。 另外,拥有即时和完整的信息在开发中非常有用,在开发中,您不必遍历日志文件即可查找每个异常所需的内容。(但这可以通过配置开关解决。) 不幸的是,已经进行了某种形式的“安全审核”(不知道他们是如何在没有来源的情况下执行此操作的……但是无论如何),并且他们抱怨完整的异常消息将其视为安全威胁。当然,客户(至少是我所知道的)已经从表面上看待了这一点,现在要求清除消息。 我看不到潜在的攻击者如何使用堆栈跟踪来找出他以前无法理解的任何东西。是否有任何例子,有记录的证明有人这样做吗?我认为我们应该与这个愚蠢的想法作斗争,但也许我是这里的傻瓜,所以... 谁是对的?

4
为什么SQL的BETWEEN具有包容性而不是半开放?
半开放(或半开放,半封闭,半有界)间隔([a,b),其中x属于间隔iff a <= x < b)在编程中非常常见,因为它们具有许多方便的属性。 谁能提供解释SQL为什么BETWEEN使用封闭间隔([a,b])的理由?这是特别的。日期不便。你怎么会BETWEEN这样
45 sql 


16
程序员应该修复别人的失败构建吗?[关闭]
一位程序员将一些工作委托给SVN存储库,然后回家。他离开后,哈德森的自动构建失败了。另一位程序员看到了这一点,并在查看了代码更改之后,发现问题是缺少一个库。他将此库添加到SVN中,下一个构建成功完成。 第二个程序员是做正确的事情还是应该等到第一个程序员解决了这个问题之后?

7
嵌入式开发的单元测试时的最佳实践
我正在寻找一些针对嵌入式系统编写的单元测试代码的最佳实践策略。对于嵌入式系统,我的意思是代码,例如设备驱动程序,ISR处理程序等,它们与金属非常接近。 如果不借助ICE在硬件上进行测试,则无法进行大多数单元测试。有时,嵌入式单元还需要与其他刺激因素挂钩,例如机械开关,步进电机和灯泡。这通常以手动方式发生,自动化虽然很棒,但实现起来却又困难又昂贵。 更新资料 我遇到了一个C测试框架,该框架似乎在测试嵌入式项目中非常成功。它使用了模拟硬件的想法。查看Unity,CMock以及可能的Ceedling。 更新2016年7月6日 跨过cmocka-似乎正在更加积极地开展工作。

5
这怎么能容纳64kb?
因此,我在2011年大会上就在这里进行了演示:http : //www.youtube.com/watch?v= 69Xjc7eklxE&feature= player_embedded 它只是一个文件,在规则中说明了这一点。所以我重复一遍,他们如何使它适合如此小的文件?
45 assembly 

14
如何更好地测试自己的代码
我是一个相对较新的软件开发人员,我认为我应该改进的一件事是测试自己的代码的能力。每当我开发一项新功能时,我都会发现很难遵循所有可能的途径,以便发现错误。我倾向于遵循一切正常的道路。我知道这是程序员遇到的一个众所周知的问题,但是我们现任雇主没有测试人员,而我的同事们似乎在这方面做得很好。 在我的组织中,我们既不进行测试驱动的开发,也不进行单元测试。这将对我有很大帮助,但这不太可能会改变。 你们认为我可以做些什么来克服这个问题?测试自己的代码时使用什么方法?
45 testing 

19
表单屏幕截图,可提供有关单击复选框之一的法律证明?
我们收到了一位客户的要求,由于我以前从未遇到过这样的要求,所以我什至不知道从哪里开始寻找。 我们的客户是大学网络,我们正在为其建立网站。在该站点上,除其他外,将是一种表格,潜在的申请者可以填写该表格,以获取有关其中一所大学的研究的更多信息。用户填写此表单(包括提供他们的电子邮件和/或电话号码)后,相关学院将与他们联系并提供相关信息。 现在,出于法律原因,客户要求该表格也有一个复选框,供潜在申请人检查,以表明他们同意从这些大学获取促销材料。那当然没问题。但是这里出现了请求的奇怪部分: 每个填写表格的详细信息都必须以可靠的方式保存。显然,将表单值保存在数据库中(指示用户是否同意的一列)是不够的,因为可以在用户发送表单后更改数据库。我们的客户声称其他大学门户网站会创建填写好的表单的屏幕截图,并以一种容易找到的方式将其保存在专用文件夹中的某处,例如为文件提供一个包含用户名和日期的名称。和时间。 我的问题如下:您是否听说过使用屏幕截图作为证明用户实际上已填写表格的方法?还有其他被认为可靠的方法吗?
45 legal  forms 

8
如何在工作中倡导堆栈溢出[关闭]
我正在考虑在工作中做一个简短的演讲,介绍如何使用Stack Overflow作为日常工作的资源。 您的经验是什么? 您是否将其视为告诉同事的有效资源,还是类似于向他们介绍Google作为资源的资源? 有更好的方法吗? 我倾向于在S​​tack Overflow上问问题,而不是回答这些问题,以避免您不应该在工作时间做这些争论。 只是作为后续。 本来我不想针对我自己的情况提出这个问题。我的演讲将只是一个四分钟的简短演讲,我将在一个多小时内向不同的小组重复。 我可能会在有关Stack Overflow的讨论之前提出一个问题,并在演示过程中进行参考。希望我会在这个小时内参加一些活动。 我还将简短地讨论一些其他适合读者的Stack Exchange网站,因为它们并不是全部开发人员。我认为超级用户,服务器故障和程序员应该可以正常工作。 由于已经重新安排了演讲的时间,所以我将再几个月不做演示了,但是我将继续进行介绍。

10
如何开始和维护下班后的项目
我是一名专职开发人员。但是,我的工作场所对我可以使用的技术和编程语言有很大的限制。所有工作都在C ++中完成。 显然,C ++正在迅速失去(或可能已经失去)领先地位。(请不要激怒我,我有多年的C ++经验,我喜欢这种语言,我只是在陈述一个事实)。我对Java / Android项目以及我想在C#中实现的项目有一些想法。我认为这是我跟上就业市场趋势的一种方式,我希望它可以帮助我在更新的领域中找到我的下一份工作。 所以这是问题所在: 我的正常工作时间是10-11个小时,与孩子们一起完成家务劳动后,我大约会花1-2.5个小时,然后我就不会觉得累了,更少的代码了。那时我要沮丧地上床,对自己无法遵守自己的计划感到失望,然后第二天早晨我又醒来重新做一遍。 周末我还有几个小时的时间,但是如果我想实现自己的任何目标,显然我需要做些不同的事情。 我有什么办法可以更好地利用自己的时间?你们中有人有类似的问题并且已经成功解决了吗?

9
是否使用JOIN关键字
以下SQL查询是相同的: SELECT column1, column2 FROM table1, table2 WHERE table1.id = table2.id; SELECT column1, column2 FROM table1 JOIN table2 ON table1.id = table2.id; 肯定会在我尝试过的每个DBMS上产生相同的查询计划。 但是我经常听到或听到这样的观点:一个绝对比另一个更好。当然,这些主张从不带有任何解释。 在我工作的地方,第二版似乎受到了大多数其他开发人员的青睐,因此我也倾向于这种风格,以最大程度地减少意外。但是在我的心中,我真的在想第一个(因为这是我最初学习它的方式)。 这些形式中的一种在客观上是否优于另一种?如果没有,那么为什么一个使用另一个?
45 sql  coding-style 

17
我如何彻底评估准雇主?[关闭]
我们听到了很多有关代码气味,测试气味甚至项目气味的信息,但是我没有听到有关Joel Test之外的雇主“闻到”的讨论。在为雇主带来许多令人不愉快的企业文化气味的无奈工作之后,我相信现在是我积极寻求更成熟的发展环境的时候了。 我已经开始整理问题清单,以帮助求职者通过面试时发现的问题来寻找他们,并正在寻找其他想法。我认为雇主也可以很容易地修改此列表,以审查一名雇员,但请从受访者的角度回答。 我认为重要的是要问多个人的许多问题,以找出是否给出一致的答案。在大多数情况下,我试图按照提出问题的顺序将问题放在每个部分中。对早期问题的不希望有的答案通常会使后续行动变得毫无意义。 价值观 什么是“精心编写”的软件? 优秀的开发人员具有哪些属性?经理同样的问题。谁是您最有价值的员工/经理,为什么? 处理 您有开发过程吗? 您如何严格遵循它? 您如何决定对每个项目应用多少流程? 描述一个典型的项目生命周期。询问以下内容是否不出现: 瀑布式/迭代式:前期需求收集花了多少时间?前期设计? 测试中 谁开发测试(开发人员或单独的测试工程师?) 他们什么时候开发的? 什么时候执行测试? 他们需要执行多长时间? 什么是好的测试? 您怎么知道您已经测试够了? 测试了多少百分比的代码? 评论 审核过程如何? 审查多少百分比的代码?设计? 我希望多久参加一次代码/设计审阅者/受审者? 适用于审核的标准是什么?标准来自何处? 改善 过去一年中,您评估或部署了哪些新工具和技术? 过去一年中,您的员工接受了哪些培训课程?在贵公司的头六个月中,我将做些什么(暗示是否经过了什么样的组织指导/培训) 过去一年中,您的开发流程发生了哪些变化? 作为组织,您如何改善自己的错误并从中学习?过去一年中,您的组织最大的错误是什么?如何解决? 您最近对管理层有什么反馈?实施了吗?如果没有,为什么? 贵公司如何使用“最佳做法”?您如何从外部或内部寻找它们,以及如何彼此共享它们? 伦理 告诉我您或您的员工最近遇到的道德问题,如何解决? 您是否使用开源软件?您做了哪些开源贡献? 后续行动 我喜欢@ jim-leonardo在这个Stack Overflow问题上说的话: 真的是一个问题要问自己:“这个人看起来像是在试图招募我并使我感兴趣吗?” 我认为这是最重要的部分之一。如果他们似乎采取的态度是,唯一要接受采访的人是您,那么他们可能会对您不好。优秀的面试官理解,他们必须出售自己的职位,而候选人必须卖掉自己。 @SethP添加了: Glassdoor.com是研究潜在雇主的好网站。它包含有关特定公司如何进行采访的信息...


7
.NET属性-使用私有集还是只读属性?
在什么情况下,我应该在属性上使用私有集而不是将其设置为ReadOnly属性?考虑以下两个非常简单的示例。 第一个例子: Public Class Person Private _name As String Public Property Name As String Get Return _name End Get Private Set(ByVal value As String) _name = value End Set End Property Public Sub WorkOnName() Dim txtInfo As TextInfo = _ Threading.Thread.CurrentThread.CurrentCulture.TextInfo Me.Name = txtInfo.ToTitleCase(Me.Name) End Sub End Class // ---------- …
45 c#  .net  vb.net 

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.