标签: legacy-code

Ruby 1.9中的主要语法更改是什么?

另外,我想知道升级到Ruby 1.9会对版本1.86的遗留代码产生什么影响.新版本是否向后兼容?

ruby syntax ruby-on-rails legacy-code backwards-compatibility

7
推荐指数
1
解决办法
4527
查看次数

关于连接性能与系统非规范化的任何好的文献?

作为这个问题的必然结果,我想知道是否有好的比较研究我可以参考并传递使用RDMBS的优点做连接优化与系统非规范化,以便始终一次访问一个表.

具体来说,我想要的信息:

  • 性能或标准化与非规范化.
  • 规范化与非规范化系统的可扩展性.
  • 非规范化的可维护性问题.
  • 模型一致性问题与非规范化.

有一段历史可以看到我要去的地方:我们的系统使用内部数据库抽象层,但它很老,无法处理多个表.因此,必须在每个相关表上使用多个查询来实例化所有复杂对象.现在为了确保系统始终使用单个表格,在整个表格中使用重度系统非规范化,有时会将两个或三个层次压平.至于nn关系,他们似乎已经通过精心设计他们的数据模型来解决这个问题,以避免这种关系,并始终回到1-n或n-1.

最终结果是一个复杂的过于复杂的系统,客户经常抱怨性能.在分析这样的瓶颈时,他们永远不会质疑系统所基于的这些基本前提,并且总是寻找其他解决方案.

我错过了什么 ?我认为整个想法是错误的,但不知何故缺乏无可辩驳的证据来证明(或反驳)它,这就是我转向你的集体智慧,指向我的良好,被广泛接受的文学,可以说服我团队中的其他人方法是错误的(说服我,我对于一致的数据模型我太偏执和教条).

我的下一步是建立自己的测试平台并收集结果,因为我讨厌重新发明轮子我想知道这个主题已经有了什么.

----编辑注意:系统最初是使用没有数据库系统的平面文件构建的...后来才将其移植到数据库,因为客户端坚持使用Oracle进行系统管理.他们没有重构,只是简单地添加了对现有系统的关系数据库的支持.平面文件支持后来被删除,但我们仍在等待重构利用数据库.

sql legacy-code denormalization premature-optimization

7
推荐指数
1
解决办法
760
查看次数

Visual Studio 查找并替换所有引用

使用 Visual Studio (2010) 有什么方法可以Find All ReferencesReplace All功能相结合。

我继承了由 VB6 程序员编写的 VB.NET 代码,并且我想删除对IIFVB6 函数和许多其他 VB6 函数的所有引用,因为它们会导致一些问题。

CodeRush 或 Resharper 是否支持此功能?如果他们这样做的话,我似乎找不到任何关于它的文档。

有些功能我可以通过正常方式删除find and replace,但其他功能则更难为其构建正则表达式。

我尝试删除对 Microsoft.VisualBasic.dll 的引用,但错误数量非常大(只是为创建的每个新类复制粘贴代码)

coding-style legacy-code visual-studio-2010 vb6-migration visual-studio

7
推荐指数
0
解决办法
9654
查看次数

适用于应用程序级集合的体系结构

鉴于应用程序范围内的对象集合以及许多需要频繁访问这些对象的无关类,提供所述访问的最佳方法是什么?

例:

// Object A, stored in collections, used to do useful things
class A
{
  ...
public:
  QString property(const QString& propertyName) {return m_properties.value(propertyName);}

protected:
  QHash<QString,QString> m_properties;
}

// Collection class, contains methods to:
// - Access members of collections
// - Add/Remove members from collection
class GlobalCollection
{
public:
  // Accessors to collection/collection members
  static A* getAs() {return aHash;}
  static QHash<QString,A*> getAByKey(const QString& key) {return aHash.value(key);}
  static QList<A*> getAsMatchingCriteria(const QString& property, const QString& value)
  {
    QHash<A*> subsetOfA;

    foreach(A* pA, …
Run Code Online (Sandbox Code Playgroud)

c++ architecture refactoring design-patterns legacy-code

7
推荐指数
1
解决办法
94
查看次数

Python:检测从未在生产中执行的代码

我需要在一个庞大的遗留Python代码库中进行重构.

我常常认为"这些生产线不再在生产中执行".

但我不确定.

有一些测试触及这些线.但我无法确定生产中是否真的没有使用过.

在这种情况下我该怎么办?

这个问题涉及生产系统的覆盖范围.这个问题与测试/ CI期间的覆盖率无关.

我不想评论这些行,因为我不想在生产系统中产生错误.

refactoring legacy-code code-cleanup

7
推荐指数
1
解决办法
157
查看次数

在新工作中继承应用程序

在新工作中继承应用程序时,您是否倾向于坚持原始的开发人员编码实践,或者您是否开始应用自己的应用程序?

我在没有指导的小商店工作,总是想知道这里的规则是什么.有些应用程序编写得很好,但不遵循我使用的标准(变量名等等),我不想"弄脏"它们.我发现自己花了一点时间保持一致.

其他人的写得非常糟糕,看起来开发人员每次击键都在改变主意......

额外的想法

当我开始自己的项目时呢?所以现在我已经为这个组合引入了一个新的编码标准:

  1. 好的代码 - 但不是我的风格
  2. 糟糕的代码与糟糕的做法和缺乏标准
  3. 我自己的标准

coding-style legacy-code

6
推荐指数
2
解决办法
570
查看次数

在.NET中链接接缝

我刚刚完成了Michael Feathers的" 有效使用遗留代码 "一书.这本书是关于如何有效地创建测试接缝并利用它们来获取现有代码的好书.

他谈到的一种技术是使用"链接接缝".基本上这个想法是,如果你有代码依赖于另一个库,你可以使用链接器插入一个不同的库进行测试而不是生产.这将允许您通过模拟库感知测试条件,或避免调用具有真实世界效果的库(数据库,电子邮件等)等.

他给出的例子是用C++编写的.我很好奇这种技术(或类似的东西)是否可以在.NET/C#中使用?

.net c# unit-testing legacy-code

6
推荐指数
1
解决办法
744
查看次数

在两个ASP.NET应用程序之间共享会话,其中一个嵌套在另一个ASP.NET应用程序中

那么,在你问"你的意思是什么之后,一个嵌套在另一个之内?" 我会尽可能简单地解释一下.

存在.NET Web应用程序(A).构建了一个补充应用程序(B),它可以处理几个相同的核心组件.之前的一家咨询公司以某种方式应用程序A中"安装"了应用程序B ,以便B可以背负A的会话.所以,像这样:

- Application A (C:\Inetpub\wwwroot\ApplicationA)
    + Application B (C:\Inetpub\wwwroot\ApplicationA\sup\ApplicationB
Run Code Online (Sandbox Code Playgroud)

之前的公司没有留下关于他们如何或为什么这样做的文档,但它对他们有用.我现在面临的困境是:应用程序A升级,使B无用.我更新了B来运行A提供的新核心,但是当我完成时,另一个团队已经摧毁了之前的生产和测试服务器,我无法获得备份以查看它是如何配置的.

经过一系列的改进后,我能够通过切断B的web.config文件并删除重复的部分 - 在A的web.config中已存在的部分,在单个IIS应用程序和池中复制上面的层次结构.我还将B的bin文件夹中的所有文件转储到A的bin文件夹中.

两个站点都编译并由IIS提供服务,但我无法使用此结构从A的会话中读取任何内容.我对这个结果并不感到惊讶,但我需要找到一个解决方法.简而言之,A有一个存储在其会话中的sessionID,我需要用它来获取B中的数据源,因为A的创建者施加了一些疯狂的许可规则(sessionID需要传递给其核心API中的每个函数)用户授权).

关于为什么功能不再有效的任何想法(假设我已经正确地复制了旧环境),或者我如何解决它?移动到SQL服务器以获取会话状态不是一个选项 - 我无法更改有关应用程序A的任何内容.

我看了一下A的代码(就像我敢用Reflector一样),我试图从会话中检索的变量仍在那里并被使用.

任何想法都会很棒!

.net asp.net session iis-6 legacy-code

6
推荐指数
1
解决办法
2750
查看次数

如何在没有模拟框架的情况下对具有令人讨厌的依赖性的类进行单元测试?

我正在使用遗留的C++代码库,我想在类上测试一些方法DependsOnUgly,它具有依赖性,这种依赖性在一个很大的类(Ugly)上很容易被破坏,在文件系统上有很多外部依赖,等等.我想得到至少有一些DependsOnUgly测试方法,尽可能少地修改现有代码.没有很多代码修改,无法通过工厂方法,方法参数或构造函数参数创建接缝; Ugly是一个直接依赖于没有任何抽象基类的具体类,并且有很多方法,很少或没有标记virtual,完全嘲弄它会非常危险.我没有可用的模拟框架,但我想得到DependsOnUgly在测试中,我可以做出改变.如何打破Ugly单元测试方法的外部依赖性DependsOnUgly

c++ dependencies unit-testing mocking legacy-code

6
推荐指数
1
解决办法
2160
查看次数

Global.Micrsoft.VisualBasic.ApplicationsServices... 未定义错误 BC30002

我正在将一些旧的旧版 VB 应用程序从 .NET 框架转换为 .NET 5,并且已经解决了大部分问题,但是,我迷失了这些:

Error   BC30002 Type 'Global.Microsoft.VisualBasic.ApplicationServices.ApplicationBase' is not defined.
Error   BC30002 Type 'Global.Microsoft.VisualBasic.ApplicationServices.User' is not defined.
Error   BC30002 Type 'Global.Microsoft.VisualBasic.Devices.Computer' is not defined.
Error   BC30002 Type 'Global.Microsoft.VisualBasic.MyServices.Internal.ContextValue' is not defined.
Run Code Online (Sandbox Code Playgroud)

VisualBasic 10.3.0 包包含在项目中。

任何提示表示赞赏。

谢谢,比尔

vb.net legacy-code .net-5

6
推荐指数
2
解决办法
208
查看次数