软件工程

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


7
确定每周数据系列中交易的算法?
我正在尝试开发一个小型报告工具(具有sqlite后端)。我可以最好地将此工具描述为“交易”分类帐。我正在尝试做的是跟踪每周数据提取中的“交易”: “新”(或添加)-资源对于我的应用程序来说是新的,因为我的应用程序之前可能没有跟踪过该资源,因为尚未通过提取看到它。 “更新”(或命中)-最近使用了该资源,将保留期再更新一周。 “删除”(或删除)-自上次报告以来该项目未使用(可选,但是可以很好地绘制出每周对资源需求的变化图)。 我所得到的只是每周的数据提取(以竖线分隔的平面文件),这些数据来自我无法控制的旧版归档/记录管理系统。 每一行都可以大致提炼为: resource_id | resource info | customer_id | customer_info 样本数据: 10| Title X | 1 | Bob 11| Another title | 1 | Bob 10| Title X | 2 | Alice 目的是使报告X个月未使用过的资源变得容易(基于最后一次点击)。在保留期中,如果资源很受欢迎,则将其保留在附近以便于访问。尚未使用18个月的资源已标记为可在其他地方进行长期存档。 这一定是一个普遍的问题。想知道是否有通用算法来确定数据集之间的新内容/相同内容/已删除的内容(数据库还是最新摘录)?

1
如何让TFS自动将某些任务添加到新工作项?
我们在工作场所使用TFS来管理我们的源代码并跟踪开发。 每当我们有错误或需要做的工作时,我们总是必须至少执行以下两个任务: 测试工作,或决定是否需要测试。 更新当前版本的发行说明,或决定是否需要特定的条目。 其他任务特定于完成的工作,但是我发现自己在添加新的工作项时不断键入“测试”和“发行说明”。 每当创建新的错误或工作项时,是否有办法让TFS自动添加这两个任务?在极少数情况下,不需要执行这些任务,可以简单地将其标记为该工作项的已完成或删除,因此我不担心将其自动化的影响。 我环顾四周,看来我可以创建一个PowerShell脚本,将任务添加到缺少它们的任何工作项中,这也许是可行的方法。

6
如何在类A上实现一个属性,该属性引用类A的子对象的属性
我们有这段代码,经过简化,看起来像这样: public class Room { public Client Client { get; set; } public long ClientId { get { return Client == null ? 0 : Client.Id; } } } public class Client { public long Id { get; set; } } 现在我们有三个观点。 1)这是很好的代码,因为Client应该始终设置该属性(即不为null),因此该值Client == null将永远不会发生,并且Id值始终0表示一个错误的Id(这是代码编写者的意见;-)) 2)您不能依赖调用方来知道这0是一个错误值,Id并且 Client应始终设置该属性exception,而get当该Client属性恰巧为null 时,则应抛出in 3)当Client应始终设置该属性时,您只需返回Client.Id并NullRef在该Client属性碰巧为null 时让代码引发异常。 …
9 c#  code-quality  null 

3
跨语言测试驱动开发
简短的问题:您如何在跨多种语言的项目中遵循测试驱动开发? 具体来说,我正在编写一个使用JavaScript和PHP的Web应用程序,我想遵循TDD原则,但是我不确定如何将它们集成在一起。是否为JS和PHP部分运行单独的测试套件,并在JS套件中使用模拟来模拟服务器响应?是否有一种技术可以一次测试两个组件? 这是我第一次使用“测试驱动开发”,因此您可以分享有关如何减少测试难度的任何建议都是很棒的。我之所以选择它,是因为一旦完成原型,需求就改变了,迫使我改变设计。我认为如果我要从头开始,我想从一开始就使用内置的回归测试编写更可扩展的代码。 我正在SimpleTest中编写PHP测试,在JsTestDriver中编写JavaScript测试。我习惯了面向对象的范例,因此在PHP中有一些类,并且我在JavaScript中使用原型继承来做类似的事情。我也已经开始阅读有关Python中TDD的书和有关JavaScript中TDD的书,但是从我看到的所有内容来看,这些并没有描述对应用程序进行完整的测试(除了使用Selenium或其他Web驱动程序之外)进行前端验收测试,TDD是否不适合全栈开发人员使用?

1
C ++序列化设计评论
我正在编写一个C ++应用程序。大多数应用程序都需要读写数据引用,这一点也不例外。我为数据模型和序列化逻辑创建了一个高级设计。这个问题要求考虑以下特定目标对我的设计进行审查: 以一种简单灵活的方式来读取和写入任意格式的数据模型:原始二进制,XML,JSON等。等 数据格式应与数据本身以及请求序列化的代码分离。 为了确保序列化尽可能地没有错误。I / O具有多种固有的风险:我的设计是否引入了更多的失败方法?如果是这样,我如何重构设计以减轻这些风险? 该项目使用C ++。无论您是喜欢还是讨厌它,语言都有其自己的处理方式,并且设计旨在与该语言一起工作,而不是反对它。 最后,该项目基于wxWidgets构建。当我在寻找适用于更一般情况的解决方案时,此特定实现应与该工具箱配合良好。 接下来是用C ++编写的一组非常简单的类,它们说明了设计。这些不是我到目前为止已经部分编写的实际类,此代码仅说明了我正在使用的设计。 首先,一些示例DAO: #include <iostream> #include <map> #include <memory> #include <string> #include <vector> // One widget represents one record in the application. class Widget { public: using id_type = int; private: id_type id; }; // Container for widgets. Much more …
9 design  c++  c++11 

1
如何使Javadocs中的代码示例保持最新
我正在开发一个小型库,该库提供基本的,众所周知的字符串指标的实现。主要是为了我自己的教育。因此,只要有空闲时间,开发就会发生。 因此,我已经完成了大多数流程的自动化工作,因此我可以不费吹灰之力就发布一个版本。但是,维护Java文档仍然是一个负担,因为它包含示例。 随着API的发展,我不得不一次又一次地手动检查每个示例。有一个更好的方法吗? 我已经考虑过将文档和示例移到一个单独的项目中(例如Caliper Tutorial),以便可以将其与常规代码一起重构和编译。但是,这确实使文档脱离了它所涉及的类。 嗯是的。我也想吃蛋糕。:D * <h2>Tokenization</h2> * * Tokenization cuts up a string into tokens e.g. * <code>chilperic ii son of childeric ii</code> is tokenized into * <code>[chilperic, ii, son, of, * childeric, ii]</code>. Tokenization can also be done repeatedly by tokenizing * the individual tokens e.g. * …

4
谁对错误票进行重复数据删除?
我的一个队友和我只是抓住了单独的错误票,分别将它们分配给自己,但是这些票是重复的! 解决重复票证的最佳方法是什么?这通常由质量检查资源完成吗?我曾在非技术人员说过会打断“流程”的几个地方工作,但这是非技术人员可以在开发人员访问受到限制的情况下(即基本上总是)做的事情。

3
在标识符中使用“ ys”代替“ ies”以简化查找和替换功能是否有意义?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 尽管在语法上不正确,但是在编写函数,变量等的标识符时,是否将“ s”简单地附加到以Y结尾的复数单词是否有意义?我这样做的原因是,如果您需要查找和替换,例如,用“供应商”替换“公司”,则“公司”将匹配单数和复数形式(“ company”和“ company s”),而如果复数的拼写正确,则必须进行两次单独的搜索。
9 grammar 

1
密钥/价值商店开发移植到现代C ++
我正在开发类似于Cassandra的数据库服务器。 开发从C语言开始,但是没有类,事情变得非常复杂。 目前,我在C ++ 11中移植了所有内容,但我仍在学习“现代” C ++,并对很多事情有疑问。 数据库将使用键/值对。每对都有更多信息-什么时候创建以及何时过期(如果不过期则为0)。每对都是不可变的。 关键是C字符串,值是空*,但至少目前我也使用C字符串作为值。 有抽象IList类。它从三个类继承 VectorList -C动态数组-类似于std :: vector,但使用 realloc LinkList -用于检查和性能比较 SkipList -最终将使用的类。 将来我可能Red Black也会做树。 每个都IList包含零个或多个指向对的指针,并按键排序。 如果IList太长,可以将其保存在磁盘上的特殊文件中。这个特殊文件是的read only list。 如果您需要搜索密钥, 首先在存储器IList中搜索(SkipList,SkipList或LinkList)。 然后将搜索发送到按日期排序的文件 (最新的文件在前,最早的文件在后)。 所有这些文件都在内存中映射。 如果未找到任何内容,则找不到密钥。 我对事情的执行毫无疑问IList。 目前令人困惑的是: 这些对的大小不同,它们由分配,new()并已std::shared_ptr指向它们。 class Pair{ public: // several methods... private: struct Blob; std::shared_ptr<const Blob> _blob; }; struct Pair::Blob{ uint64_t …

3
我的算法无法从较小的盒子中提取出最大的盒子,但算法太慢
想象一下一个基于多维数据集的世界(例如Minecraft,Trove或Cube World),其中所有事物都由大小相同的多维数据集组成,并且所有多维数据集都是同一种类。 目标是用最少的矩形框表示世界(通过合并立方体但保留凸形(又称矩形框))。我的算法在此方面取得了成功,但是其性能对于预期的目的而言太慢了。有更快的算法吗? 我算法的伪C#代码基本上是: struct Coordinate { int x,y,z; }; //<-- integer based grid HashSet<Coordinate> world; // <-- contains all the cubes //width, height, and length represent how many cubes it spans struct RectangularBox { Coordinate coord; int width,height,length; } void Begin() { List<RectangularBox> fewestBoxes = new List<RectangularBox>(); while(world.Count > …

1
基于外部修饰符类的条件CSS-好的做法?
简介/背景:CSS组件 对于一个相对较大的网站,我们正在与SASS合作,并尝试管理组件中的CSS。组件的基本思想是,组件在任何地方都应该看起来相同,而与DOM中更远的容器元素无关。 因此,我们要避免这样的事情(SASS): // User picture component. .user-picture { img {..} } // Override user picture for the frontpage. body.page-front .user-picture img {..} 相反,如果我们希望用户图片在首页上看起来有所不同,则它必须是不同的组件。例如,具有SASS继承或具有mixin: // User picture component. .user-picture { img {..} } // User picture on frontpage. .user-picture-front { @extend .user-picture; img {..} } 然后,我们需要调整首页上的html,以便它使用不同版本的用户图片。 到目前为止,一切都很好。我将以上内容发布为一个示例,以说明我对CSS组件的当前了解。 问题:修饰符类-好的做法? 现在我们遇到了一个问题:某些页面的背景为深色(黑色),因此文本,边框和内容必须为白色。 这在某种程度上超出了组件:默认情况下,同一组件应具有深色文本,但是如果它位于具有深色背景的容器中,则应具有白色文本。 …
9 css  component 

3
为什么Python同时需要编译器和解释器?
我可以理解Java需要编译器和解释器的事实。它将源代码编译为字节码,然后虚拟机(在Windows,Linux,Android等上)将字节码转换为当前体系结构的机器码。 但是,为什么Python同时需要编译器和解释器?由于Python不是平台独立的,为什么不只使用解释?据我所知,未经修改,您将无法在任何Windows或Linux计算机上执行Python程序(编译为字节码)。还是我错了?

1
为什么Apache有两个分别用于构建和依赖管理的工具?
Apache有两个单独的工具: 阿帕奇Maven Apache Ant + Apache Ivy 他们似乎都填补了相同的利基。我有两个问题: 两种工具之间的主要区别有哪些亮点? 我确信可以写一篇很长的文章,探讨两者之间的区别,我不是在寻找太多细节,也不是在寻找一个主观的论点来选择一个。 编程的历史-Apache如何演变为创建两组完全独立的工具,这些工具最终在目的上如此相似?

4
rand()在小范围内再次给出相同的数字
我正在尝试制作一种游戏,其中有20x20的网格,并显示一个玩家(P),一个目标(T)和三个敌人(X)。所有这些都有一个X和Y坐标,使用分配rand()。问题是,如果我尝试在游戏中获得更多积分(补充能量等),则它们会与一个或多个其他积分重叠,因为范围很小(包括1到20)。 这些是我的变量以及如何为它们分配值:(COORD是一个struct只有X和Y的a) const int gridSize = 20; COORD player; COORD target; COORD enemy1; COORD enemy2; COORD enemy3; //generate player srand ( time ( NULL ) ); spawn(&player); //generate target spawn(&target); //generate enemies spawn(&enemy1); spawn(&enemy2); spawn(&enemy3); void spawn(COORD *point) { //allot X and Y coordinate to a point point->X = randNum(); …
9 c++  random 

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.