软件工程

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

16
不使用匈牙利表示法的好处是什么?
我苦苦挣扎的事情之一就是不使用匈牙利符号。我不想仅去查看变量类型是什么,就不必去定义变量。当一个项目扩展时,能够查看以'bool'为前缀的变量并知道它正在寻找true / false而不是0/1值,这是一个很好的选择。 我还在SQL Server中做了很多工作。我在存储过程中添加了“ sp”前缀,在表中添加了“ tbl”前缀,更不用说数据库中的所有变量了。 我到处都看到没有人真正想要使用匈牙利符号,以至于避免使用匈牙利符号。我的问题是,不使用匈牙利符号的好处是什么?为什么大多数开发人员都像瘟疫一样避免使用匈牙利符号?

7
如何编写好的异常消息
我当前正在进行代码审查,并且我注意到的一件事是,异常消息似乎只是在重申发生异常的地方的异常数量。例如 throw new Exception("BulletListControl: CreateChildControls failed."); 我可以从其余消息中得出此消息中的所有三个项目。我从堆栈跟踪中知道该类和方法,并且我知道它失败了(因为我有一个异常)。 这让我开始考虑将什么消息放入异常消息中。首先创建一个异常类,如果不存在,对于一般的原因(例如PropertyNotFoundException-的原因),然后当我把它的消息表示什么地方出了错(如“无法找到财产‘IDontExist’的节点1234 “- 什么)。哪里是StackTrace。该时可以在日志中结束了(如果适用)。该如何是为开发者制定(并修复) 您还有其他引发异常的技巧吗?特别是关于创建新类型和异常消息。
101 exceptions 

24
重新发明轮子真的那么糟糕吗?
它在编程常识,重新发明轮子是坏的或邪恶的。 但是为什么呢? 我并不是说这很好。我相信这是错误的。但是,我曾经读过一篇文章,说如果有人做错了(明智的编程),请向他们解释为什么错了,如果不能,那么也许您应该问自己是否真的错了。 这使我想到了这个问题: 如果我看到有人明确地通过构建自己的已经嵌入到语言/框架中的方法来重新发明轮子。首先,为了论证,让我们假设他们的方法和内置方法一样有效。同样,意识到内置方法的开发人员也更喜欢自己的方法。 他为什么要自己使用内置的?


30
西方的程序员如何看待东方的程序员?
问题的另一半:东方的程序员如何看西方的程序员? 世界东部地区(印度/中国/菲律宾)主要向西方世界(美国和欧洲)提供外包服务。 您是否有与离岸团队合作的经验?如果是,情况如何? 您是否对东方的程序员抱有任何一般化的想法或观点(例如,他们是否合作,他们准时交付还是从事高质量的工作?)。这些是基于什么的?
101 teamwork 

25
一个人应该多远进行一次电子邮件地址验证?
我想知道人们应该花多长时间验证电子邮件地址。我的领域主要是网络开发,但这适用于任何地方。 我看过几种方法: 只需检查是否存在“ @”,这很简单,但当然不是那么可靠。 用于标准电子邮件格式的更复杂的正则表达式测试 一个针对RFC 2822的完整正则表达式 -问题在于通常一个电子邮件地址可能是有效的,但它可能不是用户的意思 DNS验证 SMTP验证 正如许多人可能知道(但许多人却不知道)一样,电子邮件地址可能具有很多人通常不考虑的许多奇怪变化(请参阅RFC 2822 3.4.1),但是您必须考虑以下目标:您的验证:您只是在尝试确保可以将电子邮件发送到某个地址,或者是用户可能要输入的电子邮件(在很多其他晦涩的情况下,否则“有效”是不可能的)的地址)。 我考虑过的一个选项只是用一个更加深奥的地址发出警告,但仍然允许请求通过,但这确实增加了表单的复杂性,并且大多数用户很可能会感到困惑。 虽然DNS验证/ SMTP验证似乎很容易,但我可以预见到DNS服务器/ SMTP服务器暂时关闭且用户无法在某处注册,或者用户的SMTP服务器不支持所需功能的问题。 一些经验丰富的开发人员将如何处理此问题?除了我列出的方法以外,还有其他方法吗? 编辑:我完全忘记了最显而易见的一切,发送确认电子邮件!感谢答复者指出这一点。是的,这很简单,但是涉及的每个人确实需要额外的麻烦。用户必须获取一些电子邮件,开发人员需要在甚至确认用户数据有效之前记住用户数据。


5
如何在开源项目中管理版权声明?
我正在研究并添加到GitHub托管的项目中,该项目包括以下LICENCE.md(显然是MIT许可证逐字记录): Copyright (c) 2012 [Acme Corp] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell …

10
如果两次提交之间的等待时间过长,该怎么办?
我很调皮……太多的“牛仔编码”,还不够提交。现在,我在这里做出了巨大的贡献。是的,我应该一直坚持下去,但是现在为时已晚。 什么是更好的? 做一个非常大的提交,列出我所做的所有更改 尝试将其分解为可能无法编译的较小提交,因为文件具有多种修复,更改,其他方法名称等。 尝试仅针对适当的提交对文件进行部分还原,然后放回新的更改。 注意:到目前为止,我是唯一从事此项目的程序员。至少在我们雇用更多程序员之前,唯一会查看所有提交评论的人就是我。 顺便说一句:我正在使用SVN和Subclipse。在进行任何这些更改之前,我确实创建了一个新分支。 更多信息:我首先问了一个与我如何进入这种情况有关的单独问题:如何为重写应用程序的粘合做准备


15
截止日期是敏捷的吗?
为了清楚起见,截止日期为: 时间限制或最后期限是必须完成目标或任务的狭窄时间范围或特定时间点。 来自维基百科 在我整个软件开发生涯中,我一直在做“敏捷”,到处似乎都意味着至少遵循以下实践: 每周或每两周冲刺 回顾性冲刺计划 产品负责人 Scrum 用户故事 但是,我参加过的每个项目都坚持设定截止日期。鉴于敏捷试图将重点放在适应性计划,灵活性和变更上;截止日期是敏捷的吗? 我个人认为它们不是,因为我认为截止日期会导致缺乏灵活性和质量。相反,我认为将精力集中在Sprint和早期交付方面可以提供更多价值。然而,似乎在我所经历的每个圈子中,情况并非如此,并且截止日期与敏捷开发紧密相关。
100 agile 

10
如何教一个没有编程经验的聪明人,如何编程?[关闭]
我被要求雇用我们的IT部门的一名人员,他没有编程经验,但是是一个聪明而又干练的人,可以说是一个支持现有.Net应用程序的入门级开发人员来帮助他进行编程。我绝对相信这个人可以做到,但是我正在寻找最快的方法来使他快速。我有很多想法,但想看看别人的想法。我知道这也将高度依赖于他的学习方式,但我通常是在谈论。 那么问题来了:您认为让非开发人员快速加快开发速度的最佳方法是什么(在本例中为.Net)?
100 learning  teaching 

30
30分钟向15岁的孩子讲解编程[关闭]
下周,我被自愿坐下来与15岁的工作经验的学生讨论开发人员的生活和工作。 抓住的是 我只有半个小时了, 我将只是与她交谈的人之一-其他在业务中扮演不同角色的人也将整天与她一起工作。 我应该涵盖什么?我希望在半小时内教给她什么? 我认为她可能没有开发或编程经验。


30
哪种流行的“最佳实践”并不总是最好的,为什么?[关闭]
“最佳实践”在我们行业中无处不在。一对“编码的最佳实践”谷歌搜索变成了近150万个结果。这个主意似乎给很多人带来了安慰。只需按照说明进行操作,一切都会很好。 当我读到一种最佳实践时(例如,最近我刚刚阅读了“ 清洁代码”中的几本),我感到很紧张。这是否意味着我应该始终使用这种做法?有附带条件吗?在某些情况下可能不是一个好习惯吗?在我进一步了解该问题之前,如何确定? 清洁代码中提到的几种做法并不适合我,但老实说,我不确定这是否是因为它们可能不好,或者这仅仅是我个人的偏见。我确实知道,技术行业中的许多杰出人士似乎都认为没有最佳实践,因此至少我那令人烦恼的疑问使我成为了一个好公司。 我已经阅读的最佳实践的数量太多了,无法在此处列出或询问个别问题,因此我想将其表述为一个一般性问题: 在某些情况下,哪些通常被称为“最佳实践”的编码实践可能不是最佳选择,甚至是有害的?这些情况是什么?为什么使这种做法不佳? 我希望听到有关具体示例和经验的信息。

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.