软件工程

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

2
存储地图数据的理想数据结构?
面试中有人问我这个问题。我在测试中做的还不错,但对回答这个问题的认识不足。我很好奇我可以使用哪种数据结构快速查询数据。 基本上,想法是在某种数据结构中存储路段(由点组成的线)。应该快速查询哪些路段(或点)在距点(半径)一定距离内。

4
存储n-gram数据
我希望就存储n- gram数据的问题进行一些讨论。在我的项目中,我正在尝试解决所有我知道(n -1)个数据项的语言问题,并希望在所有适用的n- gram上使用线性插值来统计地猜测我的n。(是的,有一个标记器根据其词典将标记分配给已知单词,还有一个后缀树试图猜测未知单词的单词种类;这里讨论的n -gram组件将负责解决歧义。) 我最初的方法是简单地将所有观察到的n元(对于n = 1..3,即会标,二元组,三元组)数据存储在相应的SQL数据库中,并称之为一天。但是我的项目要求可能会改变,以包括其他向量长度(n),我希望我的应用程序能够适应4克语言而无需进行大量工作(更新架构,更新应用程序代码等);理想情况下,我只是简单地告诉我的应用程序现在可以处理4克代码,而不必太多(或根本不需要)更改代码并从给定的数据源训练其数据。 总结所有要求: 能够存储n克数据(最初用于n = {1,2,3} 能够更改应使用哪种n- gram(在应用程序运行之间) 能够(重新)训练n- gram数据(在应用程序运行之间) 能够查询数据存储(例如,如果我观察到A,B,C,我想知道使用我训练有素的4、3、2、1克数据集后最常观察到的项目) 该应用程序很可能是读取繁重的,很可能不会经常重新训练数据集 该解决方案采用.NET Framework(最高4.0) 现在,哪种设计更适合此类任务? 由SQL服务器(MSSQL,MySQL等)为每个n管理的固定表(例如,用于二元语法,三元语法等的专用表) 还是将第一个n -1 存储为文档的键的NoSQL文档数据库解决方案,并且文档本身包含第n个值和观察到的频率? 还是有所不同?

7
C程序员应该知道什么?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 每个体面的C程序员都应该了解/知道的一些概念/技术/语言功能(不包括通用软件工程和类似软件,仅专注于C特定的东西)。我想知道,以便我能够填补我的C知识中的某些空白。

3
使用HL7消息时会出现什么问题?
我正在为医疗保健企业测试产品,我们正在处理HL7消息。我看到人们抱怨关于HL7的另一个问题,但没有提及具体细节。有人可以给我一些关于我们应该专门寻找哪些问题或问题类别的想法吗? 我们正在使用一些常用的库进行解析。如果有关这些细节或我们正在做的事情会有所帮助,请在评论中让我知道,如果可以的话,我将补充问题。
12 testing  parsing  hl7 


5
您是否利用了封闭式原则的好处?
开闭原理(OCP)指出对象应打开以进行扩展,但应关闭以进行修改。我相信我理解它,并将其与SRP结合使用来创建仅做一件事的类。而且,我尝试创建许多小的方法,使所有行为控件都可以提取到可以在某些子类中扩展或重写的方法中。因此,我最终得到了具有许多扩展点的类,包括:依赖项注入和组合,事件,委托等。 考虑以下简单的可扩展类: class PaycheckCalculator { // ... protected decimal GetOvertimeFactor() { return 2.0M; } } 现在说,例如,OvertimeFactor更改为1.5。由于上述类是为扩展而设计的,因此我可以轻松地子类化并返回一个不同的OvertimeFactor。 但是 ...尽管该类是为扩展而设计的,并且坚持使用OCP,但我将修改单个方法,而不是子类化和覆盖该方法,然后在IoC容器中重新连接对象。 结果,我违反了OCP尝试完成的部分工作。感觉就像是在偷懒,因为上面的内容要容易一些。我是否误解了OCP?我真的应该做些不同的事情吗?您是否以其他方式利用OCP的优势? 更新:根据答案,由于许多不同的原因,这个人为的例子似乎是一个糟糕的例子。该示例的主要目的是证明该类是通过提供以下方法来扩展的:该方法在被重写时将更改公共方法的行为,而无需更改内部或私有代码。不过,我绝对误会了OCP。

6
测试驱动的开发-谁应该编写测试?
最初,开发人员有责任编写测试,但我注意到,在许多情况下/成熟的开发人员中,这些情况甚至没有提供80%的覆盖率。 我有一个质量保证人员专门为给定项目而不是开发人员编写所有测试的情况如何? 有什么缺点吗?

5
分叉的项目,我的版本号从哪里开始?
我分叉了一个项目,并做了很多更改。这个fork不仅是这里的一个小功能更改,而且是那里隐藏的bug修复,它是一个相当大的更改。仅大多数核心代码是共享的。 我在v2.5.0分叉了这个项目。有一段时间我开始在v3.0上对fork进行版本控制。但是我不确定这是否是正确的方法,主要是因为当该项目达到v3.0时,事情会变得混乱。但是我不想从v1.0或v0.1重新开始,因为那意味着项目的初期,不稳定和不透明。这是不正确的,因为大多数核心代码都非常完善和稳定。 我真的不知道该怎么办,所以我在这里问:处理这种情况的标准方法是什么?大多数分叉会重新开始,提高版本号还是执行我不知道的其他事情。
12 versioning 

2
您对“游戏化”有何看法?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我观看了一段有趣的Google Talk视频(警告您大约一个小时的时间),以了解您在做什么的游戏化。 显然,StackExchange网站集采用了许多这样的原则。使工作变得有趣有一定的吸引力,但我想知道有多少问题领域可以纳入这些想法?它们肯定适用于社交应用程序,仅此而已?虚拟会员计划的概念也非常引人注目。 游戏化的简短说明: 有计分和奖励制度。例如,StackExchange中的信誉是一种评分。徽章是一种奖励。随着声誉的提高,您获得的其他特权也是一种奖励。 没有真正兑现的忠诚度计划的一个例子是促销活动,便利店在您购买产品并获得FarmVille积分作为回报的情况下进行了一段时间。没有真正的金钱或商品交换手,零售商的成本充其量是最小的。然而,它为这些虚拟投资回报带来了实实在在的金钱。 无耻地使用JohnL的链接:http : //en.wikipedia.org/wiki/Gamification 注意: 演讲者指的是似乎已成为原型的四类用户。他们是成就者,社交者,探索者和杀手。成就者很可能适用于我们所有人的程序员-我们希望把事情做好。显然,有80%的人是社交者,喜欢轻松,无对抗的互动。探索者可以进入游戏/应用程序的每个角落,以发现自己能找到的任何复活节彩蛋和隐藏功能。杀手不仅想赢,还想让你输,并因为击败你而获得称赞/状态。

6
如果您从开发人员中抽出一两年的时间,难道要重新投入开发真的很困难吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 8年前关闭。 我一直在从事开发人员大约3年(直接来自uni),我想知道,如果我抽出一两年的时间,是否有可能重新回到这个行业? 大学毕业后,我并没有从系统中剔除差距年,我想我应该在30岁(现在是24岁)之前做这个,我主要担心的是如果我现在离开这个行业,我可能会根本不复习它,最终完成了一些死胡同的工作。 我的看法是,这些年来,一般的概念/设计模式等保持相似,并且主要是代码语法/实际实现的发展,因此不应大步向前。 而且,女性开发人员(是的,那里有一些!)花了很多年才有了孩子,之后仍然继续他们的职业生涯,因此这并非不可能。 Ultimatum:花一两年时间会破坏我到目前为止建立的(小)职业吗?
12 experience 

17
仍然需要编写SQL吗?
拥有适用于大多数现代语言的众多ORM工具,是否仍存在用支持它们的语言/环境在程序中编写和执行SQL的用例?如果可以,为什么? 为了清楚起见:我不是在问程序员是否需要了解SQL,或者我是否应该在桌面上安装SQL工具。我在问一个具体的原因,为什么我可能会在代码(或配置或其他内容)中使用它而不是ORM。
12 design  sql 

5
JVM和Java的WORA与其他高级语言有何不同?
在Java世界中,我们经常谈论JVM,而Java刚发布时,它具有所谓的杀手级功能:“一次编写,在任何地方运行”。 从人们的交谈和书写方式来看,这似乎与Python的工作方式不同。但是我还没有发现我编写的Python代码在另一台机器上可以有不同的工作方式。(尽管我没有写太多的Python。) 那我想念什么呢?JVM与Python解释器有何不同?有没有办法使Python缺乏Java的平台独立性?还是仅仅是文化差异?

8
您如何找到时间从事开源项目?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 有一点背景知识:我已经开始了一个小型开源项目,一个基本框架提供了一种面向对象的方式来生成HTML代码(因为我不太喜欢HTML,而且我很喜欢PHP) 。它有一些已发布的源代码,也有一些下载的文件,但主要来说,该项目对我来说是合适的,而“开放源代码”部分只是一个附带好处。 使得我能够在该项目上进行开发的原始项目暂时大部分时间都处于休眠状态,这意味着我现在要进行的所有开发都只是个人时间。不幸的是,我目前正在攻读学士学位,正在学习认证,而且我家里有一个三个月大的婴儿。简而言之,当我走近“我的时间”时,我很少有做工作的感觉,而通常感觉只是在放松。 因此,如果还有其他人觉得自己处于类似的位置,那么您采用了哪些策略来保持自己对项目工作的动力?我真的很想至少能够进行此工作,直到获得100%的规格覆盖率为止,但几个月来我一直没有提交消息。有人可以帮忙吗?

9
花时间定制开发机器环境值得吗?
有时,我正在进行编程项目,并且很想更改环境(OSX或Linux)中的某些内容。Vim可能并没有完全按照我想要的去做,所以我没有按照过去几个月(有时几年)一直在做的方式来做,而是去寻找正确的方法。否则,我可能正在做一些长期不做的事情,我对自己说,为什么不找出更好的方法。 事情是当我下车去做,这个小时可以飞过去。有时,我陷入尝试获取自己想要的东西的困境。我知道我真的很亲密,所以我不会放弃。我通常总是最终得到它,但是经过数小时的修补和谷歌搜索。我讨厌放弃和不得不处理我知道可以更好地工作的感觉。 当我完成后,我会感到温暖,知道我的环境更加顺畅和个性化,但是我想知道我的时间是否可以更好地度过?我在哪里划界线?似乎所有UNIX风格的工具都有很多东西需要学习。 一直认为,高级程序员的标志是一个竭尽全力使计算机屈服于自己意愿的人。我做对了吗?我认为bash shell,unix / linux和vim将会永远存在,因此我将其视为一项投资。 但是话又说回来,我只花了3个小时就试图使vimperator firefox插件正常工作。 所以我想知道这个社区对此有何看法。

2
测试-内存中数据库与模拟
在编写测试时,为什么有人要使用内存数据库来模拟数据呢? 我可以看到内存数据库对于测试一个人的存储库可能是有益的。但是,如果使用框架(例如Spring Data),则测试存储库将测试框架,而不是测试应用程序逻辑。 但是,模拟似乎更快,并且遵循编写单元测试和TDD时通常采用的相同模式。 那我想念什么呢?何时/为什么内存数据库会受益?

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.