Questions tagged «maintenance»

30
11000行C ++源文件怎么办?
所以我们的项目中有mainfile.cpp这个巨大的文件(是11000行吗?),每当我不得不触摸它时,我都会畏缩。 由于该文件是如此之大且庞大,因此它会不断积累越来越多的代码,我想不出一种使它真正开始缩小的好方法。 该文件已在我们产品的多个(> 10)维护版本中使用并进行了有效更改,因此实际上很难对其进行重构。如果要“简单地”将其拆分为3个文件(例如,一开始),那么将维护版本中的更改合并回来将成为一场噩梦。而且,如果您拆分了具有如此长而丰富的历史记录的文件,则跟踪和检查SCC历史记录中的旧更改会突然变得困难得多。 该文件基本上包含我们程序的“主类”(主要内部工作的调度和协调),因此,每次添加功能时,它也会影响此文件及其每次扩展。:-( 在这个情况下,你会怎么做?关于如何将新功能移动到单独的源文件而不弄乱SCC工作流程的任何想法? (有关工具的注意事项:我们将C ++与一起使用Visual Studio;我们使用AccuRev,SCC但我认为这里的类型SCC并不重要;我们用于Araxis Merge进行文件的实际比较和合并)

16
Visual Studio安装程序问题-'加载安装程序组件时遇到问题。取消设置。”
我的Visual Studio 2008安装程序遇到了严重问题。我收到一个非常有用的错误消息“加载安装程序组件时遇到问题。取消设置。” 每当我尝试卸载,重新安装或修复Visual Studio 2008(团队系统版本)时。如果无法解决此问题,我别无选择,只能彻底清除计算机,然后重新开始,这将需要一整天!我最近在尝试构建有关内存不足的组件的项目时收到了一个非常奇怪的错误(尽管当时有约2gb的物理内存可用),这使我当前的VS安装无用。 注意:在我安装VS2008 之后,我使用SQL Server文件夹中的vs_setup.msi文件安装了VS2005 shell版本,以便获得对Business Intelligence Development Studio中的SQL Server 2005 Reporting Services设计器的访问权限(这在VS2008中莫名其妙地不可用)。 有人对这个问题有解决方案吗? PS:我知道这与编程没有直接关系,但是我觉得这很适合SO,因为它与我的编程能力直接相关! 注意:一位同事找到了解决此问题的方法,希望这对其他人有帮助。


13
在MySQL中删除数百万行
我最近发现并修复了我正在处理的站点中的错误,该错误导致表中数百万行数据的重复行,即使没有行,行也将非常大(仍然有数百万行)。我可以轻松找到这些重复的行,并可以运行一个删除查询来杀死它们。问题是试图一次删除这么多行会长时间锁定表,如果可能的话,我想避免这种情况。我看到的摆脱这些行而又不占用站点(通过锁定表)的唯一方法是: 编写一个脚本,该脚本将循环执行数千个较小的删除查询。从理论上讲,这将解决锁定表的问题,因为其他查询将能够使其进入队列并在删除之间运行。但是它仍然会在一定程度上增加数据库的负载,并且需要很长时间才能运行。 重命名表并重新创建现有表(该表现在为空)。然后在重命名的表上进行清理。重命名新表,重命名旧表,然后将新行合并到重命名表中。这种方式需要花费更多的步骤,但是应该以最小的中断来完成工作。这里唯一棘手的部分是,所讨论的表是报表表,因此一旦将其重命名并放了一个空表,所有历史报表都将消失,直到我将其放回原位。另外,由于要存储的数据类型,合并过程可能会有些麻烦。总的来说,这是我现在可能的选择。 我只是想知道以前是否有人遇到过这个问题,如果是的话,您如何在不关闭站点的情况下进行处理,希望对用户的干扰最小(如果有的话)?如果我使用2号或其他类似的方法,我可以将这些内容安排在深夜运行,并在第二天清晨进行合并,并且只需要提前通知用户即可,所以这不是什么大问题。我只是想看看是否有人对更好或更轻松的清理方式有任何想法。

9
用Java管理高度重复的代码和文档
高度重复的代码通常是不好的事情,并且有些设计模式可以帮助最大程度地减少这种情况。但是,由于语言本身的限制,有时这是不可避免的。以以下示例为例java.util.Arrays: /** * Assigns the specified long value to each element of the specified * range of the specified array of longs. The range to be filled * extends from index <tt>fromIndex</tt>, inclusive, to index * <tt>toIndex</tt>, exclusive. (If <tt>fromIndex==toIndex</tt>, the * range to be filled is empty.) * * …
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.