软件工程

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

16
年轻人需要学习指针概念吗?
为什么C大师Dennis Ritchie会在C中引入指针?以及为什么其他编程语言(例如VB.NET或Java或C#)消除了它们?我在Google中找到了一些要点,我也想听听您的评论。他们为什么要消除现代语言中的指针概念? 人们说C是基本语言,而指针是使C强大而又出众且使C仍能与更多现代语言竞争的概念。那么为什么他们要用更现代的语言消除指针呢? 您认为指针知识对于新程序员仍然重要吗?如今,人们正在使用VB.NET或Java,它们支持比C更高级的功能(并且不使用任何指针概念),而我现在看到的许多人(我的朋友)选择这些语言而忽略了C,因为它们支持高级功能。我告诉他们以C开头。他们说,当您在VB.NET或Java中进行高级的操作(在C中无法实现)时,学习指针的概念很浪费。 你怎么看? 更新时间: 我在Google上读到的评论是: 较早的计算机速度太慢且未优化。 使用指针可以直接访问地址,这样可以节省时间,而不是在函数调用中复制它。 使用指针的安全性要差得多,这就是Java和C#不包含指针的原因。 这些以及更多我发现的东西。我仍然需要一些有价值的答案。这将不胜感激。

11
我应该如何组织我的源代码树?
我是一个独立的开发人员,主要从事Web项目(W / LAMP),有时还从事平均规模的C / C ++(非GUI)项目。 我经常在构建源代码树时遇到困难。实际上,通常,我不完成整个项目就不会倾倒整个树并重新排列三到四次,这确实需要大量的精力,而且最终结果似乎是一个折衷方案。 有时,我最终会过度分类来源-文件夹和子文件夹的树很长。在其他时候,我只是根据所有文件的最终用途将所有文件集中在一个特定的文件夹中,从而导致源文件中的文件“混乱”。 我想问: 是否有任何原则/逻辑/最佳实践可以帮助我更好地构建源代码树? 是否有任何图形/图表技术(例如:在数据流情况下为DFD)可以帮助我基于项目分析预先可视化源代码树? 采用什么策略来构造与项目关联的多媒体文件树? 关于赏金:我非常感谢会员分享自己的做法的现有答案,但是,我希望鼓励会员提供更一般性和指导性的答案(或资源),以及更多的答复。

26
数学与编程有什么关系?[关闭]
我刚刚获得了软件开发文凭。现在,我们从基本的Java开始(例如,您可能会说到底)-很好,除了知道如何在Java中做“ Hello World”之外,我没有编程经验。 我一直听到数学与编码有关,但是怎么回事呢?哪些通用示例可以说明数学和编程如何结合在一起,或者相互依赖? 我很抱歉我的问题含糊不清,我几乎还没有对作为代码猴子学生进入的那种世界有一个大概的了解...

19
东方的程序员如何看待西方的程序员?
问题的另一半:西方的程序员如何看待东方的程序员? 我认为看看东方的程序员如何看待西方的程序员同样有趣且重要。 通常认为世界东部(印度/中国/菲律宾)主要为西方世界(美国和欧洲)提供外包服务。 您是否有作为离岸团队一部分工作的经验?如果是,情况如何? 您是否对西方的程序员抱有任何普遍的想法或见解(例如,他们是否合作,按时交付还是从事高质量的工作?)
89 teamwork  culture 

18
程序员离开的原因
我有兴趣找出程序员为什么辞职,而辞职的原因是否在您现在的工作中浮出水面呢? 我之所以只留下薪水,位置,是我讨厌老板/同事,缺乏认可或退休/新的职业道路的原因。 更新:我负责一个程序员和测试人员团队,我想更好地了解是什么促使我的团队离开,并希望尝试解决这些问题。
89 management 

28
为什么某些人认为聪明在编程中有害?
我最近注意到了很多与不同抽象技术有关的问题,并回答说基本上这些技术都是“太聪明了”。我认为,作为程序员的一部分工作是为我们所要解决的问题确定最佳解决方案,而聪明有助于做到这一点。 所以我的问题是:那些认为某些抽象技术过于聪明而不是聪明本身的人,或者是否有其他理由提出反对? 编辑:此解析器组合器是我认为是聪明的代码的示例。我下载了此文件并查看了大约半小时。然后,我在纸上逐步进行了宏扩展并看到了光。现在我了解了,它似乎比Haskell解析器组合器更优雅。


6
不变性是否会损害JavaScript的性能?
JavaScript中似乎有一种趋向于将数据结构视为不变的趋势。例如,如果您需要更改一个对象的单个属性,则最好使用新属性创建一个全新的对象,然后从旧对象复制所有其他属性,然后对旧对象进行垃圾回收。(那是我的理解。) 我最初的反应是,这听起来会降低性能。 但是后来,像Immutable.js和Redux.js这样的库是由比我更聪明的人编写的,并且似乎对性能有很强的关注,因此使我怀疑我对垃圾的理解(及其对性能的影响)是否错误。 我所缺少的不变性是否具有性能优势,它们是否超过了创建大量垃圾的弊端?

7
短路评估,这是不好的做法吗?
我已经知道了一段时间,但从未考虑过的一件事是,在大多数语言中,可以根据其顺序在if语句中为运算符赋予优先级。我经常用这种方法来防止空引用异常,例如: if (smartphone != null && smartphone.GetSignal() > 50) { // Do stuff } 在这种情况下,代码将导致首先检查对象是否不为null,然后在知道该对象存在的情况下使用该对象。该语言很聪明,因为它知道如果第一条语句为假,那么即使评估第二条语句也没有意义,因此永远不会抛出空引用异常。对于and和or运算符,其作用相同。 据我所知,这在其他情况下也很有用,例如检查索引是否在数组的边界内,并且可以用各种语言执行这种技术:Java,C#,C ++,Python和Matlab。 我的问题是:这种代码是否代表不良做法?这种不良做法是由某种隐藏的技术问题引起的(例如,这最终可能导致错误)还是对其他程序员而言导致可读性问题?会令人困惑吗?

2
TDD在伦敦和芝加哥有哪些学校?
我一直在听说测试驱动开发(TDD)的伦敦风格与芝加哥风格(有时称为底特律风格)。 犹他州极限编程用户小组工作坊: 交互风格的 TDD 在伦敦的Extreme Tuesday俱乐部流行后也被称为嘲笑风格,或伦敦风格。通常将其与底特律风格或传统的 TDD 形成鲜明对比,后者更加基于状态。 Jason Gorman的工作坊: 该讲习班既涵盖了芝加哥的TDD 学校(基于状态的行为测试和三角测量),也涵盖了伦敦的伦敦学校,后者更侧重于交互测试,模拟和端到端TDD,尤其着重于责任驱动设计和Steve Freeman和Nat Pryce的出色的《不断增长的面向对象的软件,由Tests引导》一书最近重新采用了“告诉,不要问”的面向对象方法。 张贴经典TDD还是“伦敦学校”?杰森·戈尔曼(Jason Gorman)的著作很有帮助,但他的例子使我感到困惑,因为他使用两个不同的例子,而不是两种方法都使用一个例子。有什么区别?您何时使用每种样式?
88 tdd  concepts 

9
思考发展
我作为应用程序开发人员已经工作了一年半(不多久),而我刚刚获得了我的第一个大型项目。 不用说它进展得并不顺利,所以我向参与该项目的高级程序员寻求了有关如何实现它的建议。 他说,我已经彻底思考了即将完成的任务,因为在花太多时间思考设计模式之前,我从未处理过如此规模的项目。用他的睿智话语,他告诉我“为未来而努力,为现在而建设”。 程序员在进行这样的项目时通常会遵循这种趋势吗?例如,如果您被要求做一个概念验证模型,是否只是尽快将一个可行的例子拼凑成一个典型的趋势? 编辑:鉴于引发的辩论,我想提一下这种情况是极端的:由于我们无法控制的因素,我们的截止日期很紧迫(即如果我们不这样做,我们瞄准的市场将失去兴趣。 (没有向他们展示一些东西),并且他的建议对这个特定任务非常有效。

17
对所有开发人员强加相同的代码格式是一个好主意吗?
我们正在考虑在我们的项目中采用单一标准代码格式(在Eclipse中具有保存操作的自动格式)。原因是,当前有几个(> 10)开发人员使用的代码格式存在很大差异,这使一个开发人员更难处理另一开发人员的代码。相同的Java文件有时会使用3种不同的格式。 因此,我认为优点很明显(可读性=>生产率),但是强加此方法是个好主意吗?如果没有,为什么? 更新 我们所有人都使用Eclipse,并且每个人都知道该计划。大多数人已经使用了一种代码格式,但是由于某些人倾向于坚持自己的代码格式,因此未强制执行。由于上述原因,有些人宁愿执行它。

14
聘请比您自己更有资格和经验的程序员?[关闭]
我的雇主正在雇用一名程序员-更具体地说,我正在面试并选择将填补该职位的人员。 现在的最佳人选比我年纪大,经验丰富的人要高得多。 与我交谈过的其他人说,聘请比我更有资格的人是一个非常糟糕的主意(包括我的家人)。而且我觉得这里的其他技术人员也有类似的态度(考虑到该申请人也比他们更有资格)。 他们是在说或在想,聘请更合格的人会损害我和我目前的同事在公司中升职的努力,或者担心约翰尼来晚会抢走风头,而现任员工会被给予晋升和开设新职位的机会。 我个人很想与这个申请人合作,并向他们学习。我对自己有足够的信心,不要担心会有新手和经验丰富的人进来,并开始让我看起来不好。我想以此作为成长的机会,我不认为害怕竞争或像这样的新人是理性的或有益的。 也许我只是天真。 你怎么看?您是否曾经有过类似的经历?它如何为您解决?

15
棘手的逻辑难题-它们真的对评估编程技能有用吗?[关闭]
在我参加的上一次面试中,我被要求解决一个难题,在该难题下,假设两个桶分别具有blah和blah升的容量,那么我应该精确地测量blah升的水。在给定的时间(约5分钟)内,我无法解决难题。 面试官有些失望,并说程序员必须具备“这些”技能。我没明白他在说什么技能。 对于编程面试中通常会问到的这类难题,我一直感到奇怪。我根本不理解这类难题和编程之间的联系,如果有的话。面试官打算用这些难题来评估哪些技能呢?

17
您如何应对编写的丑陋代码?[关闭]
所以您的客户要求您编写一些代码,所以您这样做。然后,他按预期更改了您的规格,并且您像个好小家伙一样努力地实现了他的新功能。除了...新功能与旧功能有点冲突,所以现在您的代码一团糟。您确实想回去修复它,但是他不断要求新事物,并且每次您完成清洁工作时,都会再次陷入困境。 你是做什么?停止成为OCD狂热者,只接受您的代码将使事情变得一团糟,无论您做什么,都只是继续增加这种怪异的功能?是否保存版本2的清洁?

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.