标签: maintenance

如何处理11000行C++源文件?

所以我们在我们的项目中有这个巨大的(11000行巨大的?)mainmodule.cpp源文件,每次我都要触摸它时我都会感到畏缩.

由于这个文件是如此中心和大,它不断累积越来越多的代码,我想不出一个让它真正开始缩小的好方法.

该文件在我们产品的几个(> 10)维护版本中使用并主动更改,因此很难重构它.如果我"简单地"把它分开,比如说开始,分成3个文件,那么合并来自维护版本的变化将成为一场噩梦.而且,如果你拆分了一个历史悠久且历史悠久的文件,跟踪和检查历史中的旧变化SCC突然变得更加困难.

该文件基本上包含我们程序的"主类"(主要内部工作调度和协调),因此每次添加一个功能时,它也会影响该文件,并且每次增长时都会影响该文件.:-(

在这个情况下,你会怎么做?有关如何将新功能移动到单独的源文件而不会弄乱SCC工作流程的任何想法?

(关于工具的注意事项:我们使用C++ Visual Studio;我们使用AccuRevas SCC但我认为这里的类型SCC并不重要;我们Araxis Merge用来做实际比较和合并文件)

c++ version-control maintenance anti-patterns

228
推荐指数
13
解决办法
2万
查看次数

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:我知道这是没有直接关系的节目,但是我觉得这适当的,从而它直接关系到我的能力在所有的程序!

注意:一位同事找到了这个问题的解决方案,希望这可以帮助其他人解决这个问题.

installation maintenance visual-studio-2005 visual-studio-2008 visual-studio

151
推荐指数
6
解决办法
12万
查看次数

在git中列出每个分支及其最后修订的日期

我需要从远程仓库中删除旧的和未维护的分支.我正试图找到一种方法来列出他们上次修改日期的远程分支,但我不能.

有人知道以这种方式列出远程分支的简单方法吗?

git maintenance branch administration

130
推荐指数
6
解决办法
4万
查看次数

使用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.)
 *
 * @param a the array to be filled
 * @param fromIndex the index of the first element (inclusive) to be
 *        filled with the specified value
 * @param toIndex …
Run Code Online (Sandbox Code Playgroud)

java maintenance preprocessor guava

70
推荐指数
3
解决办法
5003
查看次数

删除MySQL中的数百万行

我最近发现并修复了我正在处理的网站中的一个错误,导致表中数百万个重复的数据行即使没有它们也会非常大(仍然是数百万).我可以很容易地找到这些重复的行,并可以运行单个删除查询来终止它们.问题是尝试一次性删除这么多行会长时间锁定表,如果可能的话我想避免这种情况.我可以看到摆脱这些行的唯一方法,而不是取下网站(通过锁定表):

  1. 编写一个脚本,在循环中执行数千个较小的删除查询.这理论上会解决锁定表问题,因为其他查询将能够进入队列并在删除之间运行.但它仍然会在数据库上加载相当多的负载,并且需要很长时间才能运行.
  2. 重命名表并重新创建现有表(它现在将为空).然后在重命名的表上进行清理.重命名新表,将旧表命名并将新行合并到重命名的表中.这需要采取相当多的步骤,但应该以最小的中断完成工作.这里唯一棘手的部分是所讨论的表格是一个报表,所以一旦它重新命名,而空的一个放在它的位置,所有历史报告都会消失,直到我把它放回原位.此外,由于存储的数据类型,合并过程可能会有点痛苦.总的来说,这是我现在可能的选择.

我只是想知道是否有其他人之前有这个问题,如果是这样,你如何处理它而不取下网站,并希望,如果有任何中断用户?如果我使用2号或类似的方法,我可以安排这些东西在深夜运行并在第二天早上进行合并,并且让用户提前知道,这不是什么大问题.我只是想看看是否有人有更好或更简单的方法来进行清理.

mysql maintenance query-performance sql-delete

68
推荐指数
6
解决办法
6万
查看次数

ResultSet:按索引检索列值与按标签检索

使用JDBC时,我经常遇到类似的结构

ResultSet rs = ps.executeQuery();
while (rs.next()) {
    int id = rs.getInt(1);
    // Some other actions
}
Run Code Online (Sandbox Code Playgroud)

我问自己(以及代码的作者)为什么不使用标签来检索列值:

int id = rs.getInt("CUSTOMER_ID");
Run Code Online (Sandbox Code Playgroud)

我听过的最好的解释是关于表现的.但实际上,它是否会使处理速度极快?我不相信,尽管我从未进行过测量.即使按标签检索会慢一点,但在我看来,它提供了更好的可读性和灵活性.
那么有人可以给我很好的解释,避免通过列索引而不是列标签来检索列值吗?这两种方法的优点和缺点是什么(可能是关于某些DBMS)?

java optimization maintenance jdbc resultset

50
推荐指数
4
解决办法
9万
查看次数

多年来有没有办法避免意大利面条代码?

我有几个编程工作.每个人有20-50名开发人员,项目持续3 - 5年.

每次都是一样的.有些程序员很聪明,有些程序员很平均.每个人都有自己的CS学位,每个人都阅读设计模式.意图是好的,人们正在努力编写好的代码,但几年后代码变成了意大利面条.模块A中的更改突然中断了模块B.除了编写模块的人之外,总有这些代码部分无人能理解.改变基础设施是不可能的,向后兼容性问题阻碍了良好的功能进入.有一半时间你只想从头开始重写所有内容.

比我更有经验的人将此视为正常.是吗?它必须是吗?我该怎么做才能避免这种情况,或者我应该接受它作为生活中的事实?

编辑:伙计们,我对这里的回复数量和质量印象深刻.这个网站及其社区摇滚!

maintenance coding-style

45
推荐指数
6
解决办法
9973
查看次数

如何编写更易于维护的正则表达式?

我开始觉得使用正则表达式会降低代码的可维护性.正则表达式的简洁性和强大功能有些恶意.Perl将其与副作用(如默认运算符)相结合.

我有习惯记录正则表达式,至少有一个句子给出基本意图,至少有一个匹配的例子.

因为构建了正则表达式,所以我觉得对表达式中每个元素的最大组件进行注释是绝对必要的.尽管如此,即便是我自己的正则表达式让我摸不着头脑,好像我在读克林贡一样.

你故意愚弄你的正则表达式吗?你是否将可能更短,更强大的那些分解成更简单的步骤?我放弃了嵌套正则表达式.是否存在由于可维护性问题而避免的正则表达式构造?

不要让这个例子覆盖这个问题.

如果迈克尔·艾什的下面有一些错误,你会有什么可以做任何事情,但完全扔掉它?

^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
Run Code Online (Sandbox Code Playgroud)

根据请求,可以使用上面的Ash先生的链接找到确切的目的.

比赛 01.1.02 | 11-30-2001 | 2000年2月29日

非比赛 02/29/01 | 13/01/2002 | 11/00/02

regex maintenance readability

41
推荐指数
5
解决办法
2780
查看次数

继承了PHP的噩梦,从哪里开始?

我继承了一个PHP项目,结果证明这是一场噩梦.以下是重点:

  1. 所有原始开发者都离开了
  2. 代码没有版本控制
  3. 所有开发和测试都是通过重命名和编辑PHP文件在实时服务器上完成的.每个文件index.php,index2.php,index3.php等有多个副本,并且不清楚哪些文件真正被使用
  4. 每个文件中有多个包含文件,其中包含包含其他文件的其他文件等.
  5. 项目中有多个开发人员,每个人都有自己的做事方式.例如,有一个JavaScript框架的大杂烩,一些数据库查询使用SQL,另一些是XML接口,其他人调用数据库中的过程函数.

由于所有这些问题,开发速度令人沮丧.除了向Stack Overflow发泄我的挫折之外,还有关于如何开始这个烂摊子的任何建议?我自己也很熟悉PHP开发,但它似乎设置了某种开发环境,以便在不破坏实时服务器的情况下测试更改是第一步.有关如何入门的任何提示?什么是典型的测试方法?在我的桌面上设置本地版本的网站似乎需要做很多工作(服务器是Linux,但这里的桌面是Windows).我可以在实时服务器上创建一个子目录进行测试,还是......?那数据库怎么样?

其次,是否有某种分析我能够跟踪服务器上实际使用的文件?我想删除实际上没有包含的重命名的副本.更好的是,有没有办法告诉文件的哪些部分没有被执行?有许多复制的函数和垃圾,我怀疑它们也没有被使用.同样,对于包括,任何解决混乱的提示?

好吧,我会停止在这里发泄,让自己受到每个人的怜悯.:)

php maintenance

40
推荐指数
10
解决办法
4032
查看次数

您的网络应用程序或网站是否有健康检查?

我过去为几个项目构建了基于PHP的"运行状况检查"脚本,但它们总是为场合定制,而不是作为独立产品进行抽象编写.我想知道这种解决方案是否存在.

我通过"健康检查"获得的是一个受保护的网页,其功能与单元测试套件非常相似,但在更具操作性的级别上,显示红色/黄色/绿色状态等

  • 缓存目录是否可写?
  • PHP版本是否正确,是否安装了必需的扩展?
  • 数据库服务器是否可访问?
  • 数据库中是否存在必要的表?
  • 有足够的磁盘空间可用吗?
  • 网站的首页是否可以访问并完全呈现(=没有PHP错误)?
  • 项目库的MD5校验和是否与原始校验和匹配?
  • 首页的输出是否通过了W3C验证器?

您是否在您的应用程序和网站中执行此操作或部分操作?

是否有任何标准化工具可以带来执行测试的所有功能(理想情况下是插件),只需要相应配置?

我说的是一个轻量级的解决方案,甚至可以在最小的基于PHP的Web包上运行,没有扩展和服务器访问.

也许有一种方法可以使用一个可用于PHP的单元测试框架(最好是PHPUnit)来设置它?如果是这样,您是否知道任何资源/教程概述如何?

更新:似乎没有一个流行的现成解决方案,否则,有超过100个视图,我相信会有一些提及它.由于最初对构建开源项目这样的工具感兴趣,请随时发布一个理想的解决方案,以及它必须具备的功能.

php maintenance

38
推荐指数
0
解决办法
3611
查看次数