软件工程

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

3
较小的错误修复和较小的功能哪个更合适-通过故障单编号命名分支或通过功能描述命名分支?
我对正确的分支命名存在分歧(当然是顺服)。这适用于错误修复和小型功能分支,不适用于长时间运行的功能分支。对于长期运行的功能分支,我们同意人类可读的名称更好。这是两种观点: 矿: 根据团队和票号命名分支更好。这样可以更轻松地在我们的票务系统中找到它们,并且打字更短。当查找有关票证的历史信息时,这也使查找GIT中的相关分支变得更加容易。 例: team-name/12345 team-name/53719 他的: 根据分支的特征/功能命名。与单个数字相比,它更容易自动完成,并且更容易记住。 例: team-name/fix-that-sql-bug team-name/expand-http-parser 我提供的一个折衷方案是: team-name/12345-fix-that-sql-bug 但是他不喜欢这样,因为它与GIT自动完成功能混为一谈。 如果这主要是基于意见的,请随时为我提供指导,以指导如何使其更适合SO-但我认为可以修改/补充我给出的理由以给出经验答案。

5
比较浮动时,您称差异阈值为多少?
我现在正在比较Java中的浮点数,最简单的公式是: Math.abs(a - b) < THRESHOLD 将变量命名为差异阈值时,应将其命名为delta还是epsilon?具体来说,对于浮点数可以表示的最小值,正确的两项是哪一项? 术语“编程语言”是特定的还是跨语言通用的?
10 math 

2
如何设计纸牌游戏?
我不能为我的纸牌游戏提出一个好的架构。我需要帮助来了解游戏通常是如何设计的。 首先,我将描述游戏规则。 游戏规则 设定 有四名球员,每两名球员组成一个团队。 每位玩家可获得12张随机洗牌 桌子上有4张盲卡(河牌) 玩家订购是这样的 下注 每个玩家都可以在100到160之间传递或选择一个大于当前下注的数字 博彩从第一位玩家开始,直到圈子通过为止 一旦玩家通过,就不能再下注 赢得下注回合的球队至少应获得等于其下注的积分才能赢得比赛 输掉了本轮比赛的团队不应允许其团队达到目标 如果赢得比赛的团队获得所有分,则另一支球队将获得等于其赌注的负分 如果输掉比赛的队伍获得了所有积分,另一支队伍将获得双倍负积分 游戏流程和收集点 赢得下注的玩家(国王)在桌上获得了剩余的四张牌。 然后,她/他甚至可以不用玩就将一组四张卡保存在他们的团队卡库中。 国王将挑选一套西装作为尺码西装,并让其他人知道 King通过将他/她的手牌放在桌子上来开始游戏。每个其他玩家应按此顺序玩 如果他们手中持有与该张牌相同的花色,则必须打出其中一张 如果他们没有,他们可以玩其他西装 在所有其他玩家玩过手之后,该回合的赢家将是: 如果所有卡都相同,则拥有最高卡的人 拥有最高“统治者”卡的人 一轮获胜者将收集卡并将其放入银行 赢得前一轮的玩家将开始下一轮 这将一直持续到每个人的手都空了 计数点 每个回合赢5分。这意味着每4张卡至少有5分。 拥有Ace,银行中的10点或5点各加5点 我的设计 班级 class Card { string suit; string rank } class Deck { List cards = []; List …

4
给定相同的种子,随机数生成器会产生不同的输出吗?
标题总结了一下。我很想知道是否存在一种算法,该算法能够在给定相同输入的情况下产生可变输出,而无需依赖其他来源(例如DateTime.Now)或从光传感器生成的数字等随机性。此外,该算法无法运行按顺序,只有两个不同的,不相关的运行会产生不同的输出。
10 random 

4
node.js是否适合进行后台处理?
我正在慢慢学习,node.js并且有一个小项目要开始。该项目将有很多后台流程(从外部站点下载数据,解析CSV文件等)。 对我和节点而言,一个巨大的“胜利”是它在客户端和服务器上都使用了JavaScript。我在日常工作中使用Java和JavaScript进行编码,但在Ruby方面也相当出色。 但是,就像我说的那样,在任何地方都使用一种语言似乎很有吸引力,而JS似乎符合该要求。 但是,我在使用JS运行后台作业方面经验不足。Ruby在这方面似乎很出色。而且我不反对使用它。那么您对此打算100%JS的想法是什么?我意识到很大的项目需要自定义解决方案。我只是想知道是否值得付出努力。或者,我应该只坚持使用Ruby做那些琐事吗? 意见表示赞赏。 谢谢

5
什么时候register关键字在C中真正有用?
我对register在C中使用关键字感到困惑。通常会告诉人们,不需要像在stackoverflow这个问题中那样使用它。 由于现代编译器,此关键字在C中是完全多余的吗?还是在某些情况下它仍然有用?如果是,在哪些情况下使用register关键字实际上会有所帮助?
10 c  keywords 

3
是否有使用HATEOAS发现REST服务的策略?
在使用HATEOAS约束构建REST服务时,通过链接宣传存在的资源非常容易。您GET以我的网站的根目录为基础,然后我以列出所有第一层资源的根目录文档进行响应: { users: { href: "/users" } questions { href: "/questions" } } 了解如何读取这些href值的客户端可以对这些值执行GET请求,并发现应用程序中所有可用的当前资源。 这对于基本的查找方案非常有效,但不能指示资源是否可查询。例如,执行以下操作可能是合理的: GET /users?surname=Smith 是否有任何格式可以用足够的信息来表达此查询功能,以使客户端无需事先了解资源就可以形成连贯的查询? 另外,有什么方法可以表示允许客户端POST对具有预期位置的给定位置执行操作。例如,可以期望客户执行以下操作来创建新的问题资源: POST /questions { title: "Are there strategies for discovering REST services using HATEOAS?", body: "When building a REST service with the HATEOAS constraint, it's very..." } 当使用HTML作为人类消费的格式时,我们可以通过使用表格和书面提示来表达很多这种形式,以使人们能够发现他们被允许对服务执行的操作。 是否有能够为客户提供类似功能的格式?
10 design  rest  hateoas 

1
如何说服老板购买Visual Studio 2012 Professional
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 主要优势是使用ReSharper和其他加载项,但我们需要为购买Visual Studio 2012 Professional提出令人信服的论据。我们当前正在使用Windows的Visual Studio 2012 Express。它虽然很好,但是过去很难从完整的专业版切换到。 到目前为止,团队已经编制了以下列表: 提取接口功能缺失。对于干净的SOLID代码非常有用。 没有附加支持。无法安装StyleCop或生产力工具。AnkhSvn,拼写检查器,生产力PowerTools,GhostDoc,Regex编辑器,PowerCommands。 例外助手仅限于Express版。这是一个很大的烦恼。请参阅 http://www.lifehacker.com.au/2013/01/ive-given-up-on-visual-studio-express-2012-for-windows-desktop-heres-why/ MS提供的不同工具,例如证书生成。 根据源代码创建测试项目的可能性。 我们使用C#进行服务器开发,因此任何Web插件或其他任何东西都是无用的。 我问的原因是我确信人们一直处于同一位置。您使用了哪种方法,您能想到上述列表的补充或补充吗? 谢谢,

7
何时开始考虑可伸缩性?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我遇到了一个有趣但又可怕的问题。我将要启动一个新的(iPhone)应用程序。这是在我自己的自定义后端上运行的基于回合的多人游戏。但是我怕发射。 由于某种原因,我认为它可能会变得很大,并且它的流行将杀死我可怜的孤独的单服务器+ MySQL数据库。 一方面,我在想如果它正在增长,那么我最好做好准备,并拥有可扩展的基础架构。 另一方面,我只是想将其发布到世界上,看看会发生什么。 我经常读诸如“过早的优化是万恶之源”之类的文章,或者有人说您应该立即使用手头的工具来构建杀手级游戏,而后再担心诸如可扩展性之类的问题。 我很想听听专家或有经验的人对此的一些看法。谢谢!

5
REST API概念
我有三个关于REST API设计的问题,希望有人能对此有所启发。我已经不懈地搜索了多个小时,但没有在任何地方找到我的问题的答案(也许我只是不知道要搜索什么?)。 问题1 我的第一个问题与动作/ RPC有关。我已经开发了REST API已有一段时间了,我习惯于从集合和资源的角度思考事物。但是,我遇到了一些似乎没有适用该范式的案例,并且我想知道是否有一种方法可以将其与REST范式进行协调。 具体来说,我遇到一种情况,即修改资源会导致生成电子邮件。但是,稍后用户可以特别指出他们想重新发送之前发送的电子邮件。重新发送电子邮件时,不会修改任何资源。状态没有改变。这只是一个需要发生的动作。该操作与特定的资源类型相关。 将某种动作调用与资源URI(例如/collection/123?action=resendEmail)混合使用是否合适?指定动作并将资源ID传递给它(例如/collection/resendEmail?id=123)会更好吗?这是错误的做法吗?传统上(至少使用HTTP)执行的动作是请求方法(GET,POST,PUT,DELETE),但实际上不允许使用资源进行自定义动作。 问题2 我使用URL的querystring部分来过滤查询集合时返回的资源集(例如/collection?someField=someval)。然后,在我的API控制器中,我确定将与该字段和值进行哪种比较。我发现这真的行不通。我需要一种允许API用户指定他们想要执行的比较类型的方法。 到目前为止,我想到的最好的主意是允许API用户将其指定为字段名称的附录(例如/collection?someField:gte=someval-表示它应返回someField大于或等于(> =)someval的资源。这是一个好主意吗?是一个坏主意?如果是,为什么?有没有更好的方法可以让用户指定要对给定字段和值执行的比较类型? 问题3 我经常看到URI的那样子像/person/123/dogs拿到person小号dogs。我通常避免这样的事情,因为最后我发现通过创建类似的URI,您实际上只是在访问dogs按特定personID 过滤的集合。等同于/dogs?person=123。真的有充分的理由使REST URI的深度超过两个级别(/collection/resource_id)吗?
10 api  rest 

2
如何检测游戏成就?
我错误地将其发布到stackoverflow上,现在根据该站点上的建议在此处发布... 这是一个非常高级的概念性问题。在软件应用程序中说,我有4种不同的操作,例如:上传,共享,评论等 我想给成就徽章给像这样的用户: 新秀-上传您的前5个文件 Upload Junkie-在1天内上传20个文件 Night Crawler-午夜后上传文件 共享一个-共享10个不同的文件 点赞全部-点赞20个不同的文件 你明白了。在无需将实现逻辑编译到我的代码中的情况下,检查并查看用户是否已实现特定成就的最佳方法是什么?并且..-保留在编译后添加新成就的能力(xml或db)-成就必须跟踪特定的操作,次数和其他条件(例如一天中的时间)-检测应接近实时,以便用户通知成就完成后几乎立即 我最大的问题是,我如何发现这些成就?我要: 1)在执行每个操作后检查是否...(最实时)2)是否有另一个程序始终根据一组规则检查数据库?(最简单的) 我还缺少另一个范式吗?我觉得肯定是因为在很多游戏中(例如iOS的jetpack),当我解锁它的那一刻,我都收到了我获得的成就的通知,这给我留下了深刻的印象。 谢谢

6
实时协作中如何保存
我希望多个用户编辑同一文档。我面临的问题是,当新用户加入时,他可能会看到过时的文档。如何确保新用户获得最新更改? 我想到的一些解决方案: 保存所有更改。我不喜欢这种解决方案,因为它会减慢UI速度并增加db的负载。 当新用户加入时,触发所有其他客户端上的保存。保存其他客户端后,加载文档。与此可能仍然存在不一致。 任何其他建议都会有所帮助。 更新:在研究了建议的解决方案Google Realtime API之后,我发现: 您的应用程序用户必须具有Google云端硬盘,并允许您访问其驱动器。这最多可能会导致尴尬的UI流程,或阻止没有Google云端硬盘的用户使用实时功能。 必须将您完成的所有共享设置复制到Google文档中。 更新2:为达到目标,我选择了Google的Firebase

4
我应该在IDE项目的存储库中包括什么
我想添加一个在这种情况下在Netbeans中创建的项目,但是这个问题对于大多数IDE来说都是通用的。很简单,我应该在存储库中包含什么。例如,Netbeans创建一个nbproject文件夹,eclipse创建一个.settings文件夹等。如果我将这些包含在我的存储库中,则包含或不包含项目特定设置的优点/缺点是什么? 在这种情况下,这是一个个人项目,因此我不认为其他人会开始进行该项目,但是最好添加最少的项目设置,这样项目本身就可以轻松在不同的机器上开始工作。

3
通过频繁更改的架构使用Sql Server Change Data Capture
我们正在考虑为正在构建的新子系统启用Sql Server Change Data Capture。 这并不是真的因为我们需要它,而是因为我们具有完整的历史可追溯性而受到推动,而CDC会在我们的零件上花费最少的精力很好地解决此要求。 我们正在遵循一个敏捷的开发过程,在这种情况下,这意味着我们经常更改数据库架构,例如添加新列,将数据移动到其他列等。 我们做了一个小测试,创建了一个表,为该表启用了CDC,然后向该表中添加了新列。对新列的更改未在CDC表中注册。 是否存在将CDC表更新为新模式的机制,以及在迁移数据库模式时如何处理捕获的数据的最佳实践?

3
如何通过网络同步时钟以进行游戏开发?
我正在写一个具有很多基于时间的方面的游戏。当网络停滞且数据包未通过时(以及接收和不接收数据包之间的时间),我用时间来帮助估计玩家的位置。从某种意义上说,这是一种吃豆子型游戏,玩家可以选择一个方向并且不能停止移动,因此该系统才有意义(或者至少我认为可以)。 所以我有两个问题:1)由于网络存在延迟,我如何在开始时同步游戏的时钟。2)可以不同步它们,只是假设它们是相同的(我的代码与时区无关)吗?这不是一个超级竞赛的游戏,人们会改变时钟以作弊,但仍然如此。 该游戏正在使用Java和Python进行编程(作为项目进行并行开发)

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.