软件工程

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

5
我想开始使用TDD。对初学者有什么提示吗?[关闭]
我从未在任何项目中使用过自动测试机制,但我感觉自己很想念。我想提高自己,所以我必须开始解决一些我一直这样忽略的问题,并尝试使用Git而不是坚持使用SVN。 学习TDD的好方法是什么?我可能会使用Eclipse在Java中进行编程。我听说过JUnit,但是我不知道还有什么我应该考虑的。

18
SourceSafe真的安全吗?
整个上午都在尝试检查某些内容-我现在意识到我已经失去了几天的工作。 它发生在之前-显然是SourceSafe的常见事件。SourceSafe是否可以成功使用而没有问题,如果可以,如何使用?

6
如果您遇到了一系列糟糕的雇主该怎么办?[关闭]
因此,我经历了一系列非常糟糕的经历,并且想知道自己在做错什么。 我刚开始是一所主要大学的兼职程序员。我的手腕出现问题,并(非常)向我的人体工程学住宿寻求帮助。 我的老板开始对我尖叫,后来声称我对她尖叫。当被问到这个问题时,她才开始哭泣。幸运的是,周围还有其他人听到了尖叫声,并且知道我在讲真话。她最终被放开了。 我的合同上升了,我换了工作,这次是初创公司。好吧,我们花了几个月没有得到开发机器。经济不景气时,他们开始要求疯狂加班。我之所以遵守,是因为我害怕去找工作。最后的稻草是他们在我父亲的葬礼发生之前就与我联系以解决问题。 我被解雇了,没有按时收到最后的检查,公司把我的COBRA搞砸了,直到几个月都无法得到处方。他们最近因其行为被X州罚款。现在,即使我为他们竭尽全力,并且他们愿意在被罚款之前,他们还是拒绝提供参考。 我很快就开始了新工作,主要是因为我确实需要设置健康保险。他们希望我在几周内完成几个月的工作。他们没有项目计划。他们的客户表现不佳,因为如果有人进行拼写检查,应用程序的整个部分将停止工作。即使他们对我的工作抱有完全无法言喻的期望,他们还是很高兴地说要花几个月的时间才能修复拼写检查错误。几乎没有培训。 他们让我面试候选人,然后我选了一个。显然,那个人是我的替补,因为几个月后我被释放了。 最近,我的前老板给我的现任老板打了个电话,指控我劝阻人们不要申请他的公司的公开职位,这太疯狂了,因为我什至不知道他们正在招聘。 我觉得我有一件T恤,上面写着:“如果您疯了,或者想要有人四处乱逛并受到恶劣对待,请雇用我!” 再说一次,当我看一些程序员的简历时,我也看到了恐怖的故事。 那么,有什么我可以做些其他事情来避免这些问题的方法吗?人们没有标准是我们职业的一部分吗?也许这完全是我的个性问题? 是否还有其他人经历过一系列糟糕的经历并扭转了局面?

3
很好地分叉开源项目
是时候了。 您已经花了很长时间努力工作,才能将您的愿景添加到您喜欢的开源项目中,您在该项目上进行了工作,辩论并为代码和洞察力做出了不可估量的贡献。 但这不会与现有的开发人员一起解决。 您最终需要分叉代码。 您如何做到这一点,并在现有项目中保持最佳条件?您怎么不说:“ 哦,是的!请分叉! ” 除了交叉授粉的机制之外,并假设分叉的推理是合理,合乎逻辑且可以接受的,还会出现什么问题? 竞争?资源浪费?用户偷猎? 在您已经足够多样化以至于不再被视为问题之前,您如何经历这个可能艰巨而漫长的过程? 而不是讨论决定背后的原因,请假设您已经确信分叉代码是最佳的整体解决方案,现在的重点是尽可能以最佳方式前进。 -亚当


9
为什么许多PHP开发人员讨厌使用isset()和/或PHP的类似防御功能(例如empty())?
在stackoverflow上,我一直看到这个问题: E_NOTICE?== E_DEBUG,避免使用更复杂的error_handler的isset()和@ 当E_NOTICE打开时,如何设置PHP不检查$ _GET的未定义索引? 如何停止PHP记录PHP通知错误 如何关闭此类PHP 5.3声明? 甚至Pekka(提供了很多可靠的PHP建议)也碰到了可怕的E_NOTICE怪物,并希望有一个比使用更好的解决方案isset():isset()和empty()使代码丑陋 就个人而言,我使用isset()并empty()在很多地方来管理我的应用程序的流量。例如: public function do_something($optional_parameter = NULL) { if (!empty($optional_parameter)) { // do optional stuff with the contents of $optional_parameter } // do mandatory stuff } 甚至像这样的简单代码段: if (!isset($_REQUEST['form_var'])) { // something's missing, do something about it. } 对我来说似乎很合逻辑。它看起来不膨胀,看起来像稳定的代码。但是,许多开发人员使用E_NOTICE启用了,从而启动了他们的应用程序,发现了许多令人沮丧的“未初始化的数组索引”通知,然后对检查已定义的变量并使用来“乱丢”其代码感到无所适从isset()。 我认为其他语言处理问题的方式也不同。从经验来看,JavaScript不像PHP那样礼貌。未定义的变量通常会停止脚本的执行。另外,(从经验上来讲)我确定像C / C …


10
为什么新程序员似乎忽略编译器错误消息/运行时异常消息?[关闭]
我认为我们都已经看到了。初学者在堆栈溢出问题上遵循基本概述... 我正在尝试做(对目标的描述非常模糊),但它不起作用/我收到错误/异常。请帮忙! 如此多的人似乎认为没有必要粘贴错误消息是不是很奇怪? 我不知道这是什么心理。错误消息是什么使人们最初认为他们没有用并且不值得关注? 我要寻找的答案不是 “他们不理解错误消息”。这并不能解释为什么他们不考虑告诉其他可能理解的人。


11
在某些任务中可以使用贵公司不支持的语言吗?
我在一家支持多种语言的公司工作:COBOL,VB6,C#和Java。 我在主要工作中使用这些语言,但是我经常发现自己要用Python编写一些次要程序(例如脚本),因为我发现它是完成此类任务的最佳工具。 例如:分析师给了我一个复杂的CSV文件来填充一些数据库表,因此我将使用Python对其进行解析并创建一个数据库脚本。 有什么问题? 我看到的主要问题是这些快速且肮脏的脚本中的一些部分正逐渐变得越来越重要,并且: 我的公司不支持Python 它们不受版本控制(我以其他方式对其进行备份) 我的同事不了解Python 分析人员甚至已经开始在电子邮件中引用它们(“启动导出脚本...”),因此比我最初想象的需要更多的时间。 我应该补充一点,这些脚本只是不属于主项目的实用程序;他们只是帮助在更短的时间内完成琐碎的任务。对于我自己的小任务,它们有很大帮助。 简而言之,如果我是偶然的彩票赢家,我的同事将需要在没有这些脚本的情况下保持项目的生命。例如,他们会花费更多时间手动修复CSV错误。 这是常见的情况吗?难道我做错了什么?我该怎么办?

18
我应该知道的计算机科学理论知识是什么?[关闭]
以拥有电子工程学位而不是计算机科学学位的人的身份讲,要使我成为一个更好的现实世界程序员,我应该知道的一点计算机科学知识是什么? (在现实世界中,我的意思是我在作为程序员的日常工作中会使用并从中受益—例如,我建议理解数据库规范化比理解快速的分类更实用。的图书馆)。

14
管理多少个非OO代码库?
我总是看到抽象是OO为管理代码库提供的非常有用的功能。但是如何管理大型非OO代码库?还是那些最终变成了“ 泥浆大球 ”? 更新: 似乎每个人都在认为“抽象”只是模块化或数据隐藏。但是恕我直言,这也意味着必须使用“抽象类”或“接口”,这对于依赖注入和测试是必须的。非OO代码库如何管理这一点?而且,除了抽象之外,封装还有助于管理大型代码库,因为它定义并限制了数据与函数之间的关系。 使用C,非常有可能编写伪OO代码。我对其他非OO语言了解不多。那么,这是管理大型C代码库的方式吗?

30
您最常使用的编程语言最讨厌什么语法元素?[关闭]
无论您多么热爱一种编程语言,其中总是有一些细节并不尽如人意。 在这个问题上,我想特别关注语法元素。在您经常使用的一种编程语言(也许是您最喜欢的编程语言,或者您可能不得不在工作中使用的一种编程语言)中,您发现最不可读,不清楚,不便或不愉快的语法元素是什么?

5
如何处理共享功能的故事
我有两个故事(我知道他们缺少福利部分) 作为信用管理用户,我可以查看Office的当前和以前的工资差异。 作为信用管理用户,我可以收到一封电子邮件,其中包含Office当前和以前的工资差异的PDF。 两者是相关的,因为它们将具有相同的查询/过滤条件。唯一的区别是,在“查看”故事中,结果显示给用户,在“电子邮件”故事中,结果被写入PDF,然后通过电子邮件发送给用户。 我正在努力将这两个故事的共同方面分开,或者我什至应该这样做。 例如,它们都将具有相同的查询,它们对结果的处理方式是不同的。 我是否应该将查询分为另一个纯技术的故事? PDF的创建和电子邮件的发送应该脱机完成,这是否应该成为技术故事? 我可以看到将这两个故事分解为2个功能故事和2个技术故事。 作为系统,我可以计算Office当前和以前的薪资差异。 作为信用管理用户,我可以查看Office当前和以前的薪资差异。 作为系统,我可以创建一个Office当前和以前薪资差异的PDF文档。 作为信用管理用户,我可以要求接收一封电子邮件,其中包含有关Office当前和以前薪资差异的PDF。 我一直回想的问题是,这四个故事不是独立的,也不是“切蛋糕”。 所以我不太确定如何处理这两个问题。

2
为什么将大型匿名函数作为参数传递给其他函数,从而在JavaScript中得到如此广泛的接受?
我有一个观点(我肯定会与某些人共享),因为传递包含多行代码的匿名函数,因为其他函数的参数会极大地影响可读性和自我文档编制,以至于我认为对于任何可能使用该代码仅声明一个命名函数的人来说,它都要好得多。或者至少在声明主函数之前将该匿名函数分配给变量 但是,许多JavaScript库(jQuery,d3.js / NVD3.js)仅举几个例子,就以这种方式使用大型函数。 为什么这在JavaScript中如此广泛地被接受?它是一种文化的东西,还是我缺少的优势,这将使使用它比声明命名函数更可取?

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.