软件工程

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

10
我被迫编写错误的代码。如何保存我的脸?[关闭]
我只是一个初级开发人员,但是我的工作迫使我使用非常糟糕的PHP代码(想想您所见过的最糟糕的PHP代码;然后再考虑糟糕两倍的代码)。我通常会尝试修复错误并与代码库抗衡以添加新功能。有时,我被勒令让事情尽快运行,而这往往涉及肮脏的骇客。 该产品以前是开源的,我担心它将来可能会开源。如果有人(尤其是潜在的雇主)能在某些变更集旁边找到我的名字,我会感到ham愧。我该怎么做才能保护自己的好名声? 我不确定这是否有意义,但我要补充一点,我的老板和同事都不想承认代码不好,但是我不确定我是否可以为此责怪他们-对于许多人来说,这就是他们的第一份工作。

8
为什么要在数据库中存储一个枚举?
我已经看到了许多类似这样的问题,要求提供有关如何在数据库中存储枚举的建议。但是我不知道你为什么要这么做。假设我们有一个Person带有gender字段和一个Gender枚举的实体。然后,我的人员表具有一列性别。 除了强制正确性的明显原因外,我不明白为什么我会创建一个额外的表gender来映射应用程序中已有的内容。我真的不喜欢重复。
69 database  enum 


10
我提出的设计通常比同事的设计差-我如何变得更好?[关闭]
我从事编程已有两年了,在解决问题和创建中小型脚本方面通常都不错,但是,我通常不擅长以面向对象的方式设计大型程序。几个问题 最近,一位与我有着多年经验的同事正在研究一个问题。我在解决问题上的时间比他长,但是,他提出了一个更好的解决方案,最后我们将使用他的设计。这真的影响了我。我承认他的设计更好,但是我想提出一个和他一样好的设计。我什至正在考虑辞职。不知道为什么,但是突然之间,我感到有些压力,例如,大三学生会怎么看我等等?正常吗 还是我对此考虑太多了? 我的工作涉及使用Python编程。我尝试阅读源代码,但是您认为我如何提高我的设计技能?我应该学习什么好书或软件吗? 请赐教。非常感谢您的帮助。

12
“一切都是地图”,我这样做对吗?
在我制作的这款游戏中,我观看了Stuart Sierra的演讲“ 数据中的思考 ”,并将其中的一种想法作为设计原则。不同之处在于他在Clojure中工作,而我在JavaScript中工作。我发现我们的语言之间存在一些主要差异: Clojure是惯用的函数式编程 大多数状态是不可变的 我从幻灯片“一切都是地图”中汲取了灵感(从11分钟6秒到> 29分钟)。他说的一些话是: 每当您看到一个带有2-3个参数的函数时,就可以将其变成一个映射并仅将一个映射传入。这有很多优点: 您不必担心参数顺序 您不必担心任何其他信息。如果有多余的键,那不是我们真正关心的。它们只是流过而不会干扰。 您不必定义架构 与传递对象相反,没有数据隐藏。但是,他认为数据隐藏可能会导致问题并被高估: 性能 易于实施 通过网络或跨流程进行通信后,无论如何,都必须让双方都同意数据表示。如果仅处理数据,则可以跳过这额外的工作。 与我的问题最相关。这是29分钟的时间: “使您的功能可组合”。这是他用来解释概念的代码示例: ;; Bad (defn complex-process [] (let [a (get-component @global-state) b (subprocess-one a) c (subprocess-two a b) d (subprocess-three a b c)] (reset! global-state d))) ;; Good (defn complex-process [state] (-> state subprocess-one …

4
我应该“识别”并按名称知道哪些算法/数据结构?[关闭]
我想将自己视为一个经验丰富的程序员。我已经编程超过5年了。我的弱点是术语。我是自学成才的,因此尽管我知道如何编程,但我不了解计算机科学的一些更正式的方面。那么,按名称我可以识别和知道的实用算法/数据结构是什么? 请注意,我并不是在要求有关实现算法的书建议。我不在乎实现它们,我只是想知道什么时候算法/数据结构可以很好地解决问题。我要更多的是我应该“识别”的算法/数据结构的列表。例如,我知道解决此类问题的方法: 您管理一组标记为0-999的储物柜。人们来找您租用储物柜,然后回来找回储物柜钥匙。您将如何构建一个软件来管理哪些储物柜是免费的,哪些储物柜正在使用? 解决方案是队列或堆栈。 我正在寻找的是诸如“在什么情况下应使用B树-在此处应使用哪种搜索算法”之类的信息。也许还可以快速介绍一下如何使用更复杂(但常用的)数据结构/算法起作用。 我尝试查看Wikipedia的数据结构和算法列表,但我认为这有点过头了。因此,我正在寻找我应该认识的基本要素?

18
为什么不提及定制软件的研究论文发布源代码?[关闭]
研究论文中提到的软件源代码未发布是有原因的吗?我了解研究论文更多地是关于完成某件事的一般想法,而不是实现细节,但是我不明白为什么他们不发布代码。 例如,本文结尾为: 结果 人画线系统是使用OpenGL通过C ++中的Qt框架实现的,并且可以在2.00 GHz英特尔双核处理器工作站上运行,而无需任何其他硬件帮助。当系统合成新的路径和纹理时,我们可以交互地绘制线条。 他们是由于打算通过货币化还是出于版权而故意关闭源代码?
69 research 

3
实际上,“具有类路径异常的GPL”是什么意思?
Oracle似乎在GPL下许可了所有与Java相关的开放源代码,但有classpath例外。据我了解,这似乎可以将这些库与您自己的代码组合成GPL不必涵盖的产品。 这是如何运作的? 有哪些示例说明我如何使用和不能使用这些类? 为什么使用这个新许可证而不是LGPL,LGPL似乎允许几乎相同的事情,但是可以更好地建立和理解? 与LGPL有何区别?
69 java  licensing  gpl  lgpl 


4
为什么在接口中使用“可选方法”实现Java集合?
在扩展Java集合框架的第一个实现过程中,我很惊讶地看到集合接口包含声明为可选方法的方法。如果不支持,则期望实现者抛出UnsupportedOperationExceptions。这立即让我感到震惊,因为它是糟糕的API设计选择。 在阅读了约书亚·布洛赫(Joshua Bloch)出色的“有效Java”(Effective Java)书之后,后来得知他可能对这些决定负有责任,但似乎并没有遵循书中所遵循的原则。我想声明两个接口:Collection和MutableCollection,它通过“可选”方法扩展Collection,将导致可维护性更高的客户端代码。 还有的问题一个很好的总结在这里。 是否有充分的理由为什么选择了可选方法而不是两个接口实现?

13
Borland Delphi怎么了?[关闭]
我的印象是Delphi不再流行。但是现在在工作中,我必须对仍在使用的旧Delphi程序进行一些更改。我使用了Borland Developer Studio 2006,即使我以前几乎没有接触过它,但使用起来却非常愉快且直观。Delphi是否仍然被广泛使用,而我只是不知道它,还是有其他原因导致其下降?
69 delphi 




12
防止在截止日期后编译不赞成使用的代码[关闭]
在我的团队中,我们已经在一个大型整体项目中清理了很多旧东西(整个类,方法等)。 在执行这些清理任务时,我想知道是否存在比平时更好的注释或库@Deprecated。@FancyDeprecated如果您在特定日期过去之后仍未清除旧的未使用的代码,则这将阻止项目的构建成功。 我一直在Internet上搜索,但找不到具有以下功能的任何东西: 应该是注释或类似内容,以便在特定日期之前放入要删除的代码中 在此日期之前,代码将被编译,并且一切将正常运行 在此日期之后,代码将无法编译,并且会向您显示一条消息,警告您有关该问题的信息 我想我正在寻找一个独角兽...任何程序语言都有类似的技术吗? 作为一个计划,BI正在考虑通过对打算删除的代码进行一些单元测试来制造魔术的可能性,这些测试在“最后期限”开始失败。你怎么看待这件事?有更好的主意吗?

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.