Tag: 语言不可知的

你应该如何从源代码控制build立你的数据库?

关于数据库对象是否应该受版本控制,关于SO社区wiki已经有一些讨论。 但是, 我还没有看到有关为数据库对象创build构build自动化过程的最佳做法的讨论。 对于我的团队而言,这一直是一个有争议的讨论点 – 尤其是因为开发人员和DBA在评估数据库部署的自动化方法的优点和风险时往往有不同的目标,方法和关注点。 我想听听SO社区关于在现实世界中哪些做法有效的想法。 我意识到这种做法是最好的,但是我认为,对于许多人来说,哪些工作会有所帮助,是一个很好的对话。 这里有一些关于这个主题关注领域的传情问题。 这些并不意味着是一个明确的清单 – 而是帮助人们理解我所寻找的东西的起点。 testing和生产环境是否应该从源代码pipe理构build? 是否应该使用自动化来构build – 还是应该通过从稳定的最终testing环境复制对象来生产? 如何处理部署脚本中的testing和生产环境之间的潜在差异? 您如何testing部署脚本将像testing中那样有效地对抗生产? 什么types的对象应该版本控制? 只是代码(程序,软件包,触发器,Java等)? 指标? 约束? 表定义? 表更改脚本? (如ALTER脚本) 一切? 哪些types的对象不应该受版本控制? 序列? 资助? 用户帐户? 数据库对象应该如何在您的SCM存储库中进行组织? 你如何处理像转换脚本或ALTER脚本一次性的东西? 你如何处理来自数据库的退休对象? 谁应该负责推动对象从开发到testing水平? 你如何协调来自多个开发人员的变化? 你如何处理多个系统使用的数据库对象的分支? 如果有的话,有什么例外可以合理地做到这一过程? 安全问题? 数据与去识别的关注? 脚本不能完全自动化? 你如何使这个过程具有弹性和可执行性? 要开发人员错误? 意想不到的环境问题? 为了灾难恢复? 你如何说服决策者,DB-SCM的好处真正certificate了成本? 传闻? 行业研究? 行业最佳实践build议? 呼吁公认的权威机构? 成本效益分析? 谁应该在这个模型中“拥有”数据库对象? 开发商? 数据库pipe理员? 数据分析师? 超过一个?

如何从一个平坦的结构有效地build立一棵树?

我有一堆扁平结构的物体。 这些对象有一个ID和一个ParentID属性,所以他们可以安排在树上。 他们没有特定的顺序。 每个ParentID属性不一定与结构中的ID匹配。 因此,他们可能是从这些物体出现的几棵树。 你将如何处理这些对象来创build结果树? 我离解决scheme还有很远的距离,但我确信它远远不是最理想的。 我需要创build这些树,然后按正确的顺序将数据插入到数据库中。 没有循环引用。 当ParentID == null或在其他对象中找不到ParentID时,Node是RootNode

私人vs保护 – 可见性良好的实践关注

我一直在寻找,我知道理论上的差异。 public – 任何类/函数都可以访问方法/属性。 保护 – 只有这个类和任何子类可以访问方法/属性。 私人 – 只有这个类可以访问方法/属性。 它甚至不会被inheritance。 这一切都很好,问题是,他们之间的实际区别是什么? 什么时候你会使用private ,什么时候使用protected ? 有没有一个标准的或可接受的良好的做法,这一个? 到目前为止,为了保留inheritance和多态的概念,我使用public来从外部访问(比如构造函数和主类的function),并为内部方法(逻辑,辅助方法等)提供保护。 我在正确的轨道上? (请注意,这个问题对我来说,也是为了将来的参考,因为我没有看到像这样的问题)。

devise模式:工厂vs工厂方法与抽象工厂

我正在从网站阅读devise模式 在那里,我读到了工厂,工厂方法和抽象工厂,但他们是如此混乱,不清楚的定义。 根据定义 工厂 – 创build对象而不会将实例化逻辑暴露给客户端,并通过通用接口引用新创build的对象。 是Factory Method的简化版本 工厂方法 – 定义创build对象的接口,但让子类决定实例化哪个类,并通过一个公共接口引用新创build的对象。 抽象工厂 – 提供用于创build相关对象族的界面,而不显式指定其类。 我也看了关于抽象工厂vs工厂方法的其他stackoverflow线程,但绘制在那里的UML图使我的理解更加糟糕。 任何人都可以告诉我 这三种模式如何不同? 什么时候用哪个? 还有,如果可能的话,任何有关这些模式的Java示例?

使用面向对象的分析和devise对电梯进行build模

在涉及面向对象的devise和分析时,面试和课堂中似乎有一组常见的问题。 这是其中之一; 不幸的是,我的大学OOP教授从来没有给出答案,所以我一直在想。 问题如下:devise一套基本的对象/方法来模拟电梯组。 什么是对象及其属性/方法? 为了辩论,让我们假设我们的build筑有二十层; 底层是大厅,二楼连接到停车场(因此,人们将在底层或二层进出build筑物)。 有一个电梯银行服务所有的楼层; 电梯组中有三个电梯竖井,每个电梯一个电梯。 在面向对象的模型中build立这个模型的正确方法是什么?

TDD与unit testing

我的公司对于unit testing我们的代码是相当新的。 我一直在阅读关于TDD和unit testing一段时间,并确信它们的价值。 我试图说服我们的团队,TDD值得努力学习和改变我们的思维方式,但是这是一场艰苦的斗争。 这使我想到了我的问题。 TDD社区有很多人对编写testing和代码非常虔诚(而且我和他们在一起),但对于一个正在与TDD苦苦挣扎的团队来说,妥协还是会带来额外的好处? 一旦编写代码,我可能成功地让团队编写unit testing(也许作为签入代码的要求),我的假设是编写这些unit testing还是有价值的。 把一个挣扎的团队带进TDD的最好方法是什么? 如果失败了,即使是在编写代码之后,仍然值得编写unit testing吗? 编辑 我从中得到的是,在编码过程中,对我们来说开始进行unit testing是非常重要的。 对于那些拾取概念的团队来说,开始更多地走向TDD并首先进行testing。 感谢大家的意见。 跟进 我们最近开始了一个新的小项目,一小部分使用了TDD,剩下的则是在代码之后写unit testing。 在完成了项目的编码部分之后,那些编写代码的unit testing人员惊讶地发现TDD编码器已经完成了,代码更加稳定。 这是一个赢得怀疑者的好方法。 我们仍然有很多成长的痛苦,但遗嘱战似乎已经结束了。 感谢所有提供build议的人!

什么是最佳的犹太趾甲切割algorithm?

我正在开发一款能够自动修剪脚趾甲的机器的软件,以便用户可以简单地将它们放在脚上并运行,而不必通过咬或用指甲刀来手动操作。 我们的潜在用户群中有相当大的比例可能是犹太人,显然,有一个不按顺序修剪脚趾甲 ( 或指甲 )的传统 似乎对这个传统的确切应用有异议,但是我们认为以下规则足以容纳宗教习惯禁止切割脚趾甲的人: 没有两个相邻的脚趾甲应该连续切割 左脚的切割顺序与右脚的顺序不符 连续两次的切割顺序不能相同。 序列不容易预测,所以硬编码交替序列不起作用。 这就是我们如何决定脚趾的数字: 5 4 3 2 1 1 2 3 4 5 Left foot Right foot 我已经编写了代码来解决这个问题,但是使用的algorithm是次优的:事实上,最糟糕的情况是O(∞) 。 它的工作方式可以与bogosort相媲美。 这里是使用实际代码的伪代码简化: function GenerateRandomSequence sequence = Array[5] foreach (item in sequence) item = RandomNumberBetween(1,5) return sequence function GetToenailCuttingOrder while (true) sequence = GenerateRandomSequence() if (!AllItemsAreUnique(sequence)) continue if (NoTwoAdjacentItemsHaveConsecutiveNumbers(sequence)) […]

如何创build一个灵活的插件架构?

在我的开发工作中重复的主题是使用或创build内部插件架构。 我已经看到它接近许多方面 – configuration文件(XML,.conf等),inheritance框架,数据库信息,库和其他。 在我的经验中: 数据库不是存储configuration信息的好地方,尤其是与数据混合在一起 尝试使用inheritance层次结构需要知道插件编码的含义,这意味着插件体系结构并非全是dynamic的 configuration文件适用于提供简单的信息,但不能处理更复杂的行为 图书馆似乎运作良好,但单向依赖性必须小心创build。 当我试图从我所使用的各种架构中学习时,我也在向社区寻求build议。 你是如何实现SOLID插件架构的? 你最糟糕的失败是什么(或者你所看到的最糟糕的失败)? 如果你要实现一个新的插件架构,你会做什么? 您曾经使用过的SDK或开源项目是否具有良好架构的最佳范例? 我自己发现的几个例子: Perl的Module :: Plugable和IOC,用于在Perl中进行dependency injection 用于dependency injection的各种Spring框架 (Java,.NET,Python)。 带有Java列表的SO问题 (包括服务提供者接口 ) C ++指出Dobbs博士的一篇 SO问题 关于ASP.NET MVC的特定插件思想的SO问题 这些例子似乎发挥了各种语言的优势。 是一个好的插件架构必然与语言绑定? 是最好使用工具来创build一个插件架构,或者在自己的以下模型?

地图和字典有什么区别?

Map和Dictionary什么区别? 我不是要求他们是如何在X或Y语言中定义的(这似乎是人们一般在这里问到的),我想知道它们在理论上有什么不同。 我知道一个Map是一个将键映射到值的对象。 不是一个Dictionary是一样的吗? 他们有什么区别?

编程中的术语“上下文”?

我已经编程了几个月,而且一个常用的单词是类中的“上下文”。 像ServletContext (Java), Activity (Android), Service (Java,Android), NSManagedContext (Objective-C,iOS)。 通过查看词典,我发现这个词的意思是:情况,环境,情况等。但是,因为我不是英语母语的人,所以我不明白我应该直接把它翻译成什么。 例如,如果我要编写一个名为SomeClassContext的类或者一个具有上下文参数的方法,那么我就不能理解何时应该将其命名为上下文,因为我不了解它。 我一直在寻找堆栈溢出的上下文,但没有问题/答案能够帮助我。 如果有人能给我解释,我会很高兴。