另外,我想知道升级到Ruby 1.9会对版本1.86的遗留代码产生什么影响.新版本是否向后兼容?
ruby syntax ruby-on-rails legacy-code backwards-compatibility
作为这个问题的必然结果,我想知道是否有好的比较研究我可以参考并传递使用RDMBS的优点做连接优化与系统非规范化,以便始终一次访问一个表.
具体来说,我想要的信息:
有一段历史可以看到我要去的地方:我们的系统使用内部数据库抽象层,但它很老,无法处理多个表.因此,必须在每个相关表上使用多个查询来实例化所有复杂对象.现在为了确保系统始终使用单个表格,在整个表格中使用重度系统非规范化,有时会将两个或三个层次压平.至于nn关系,他们似乎已经通过精心设计他们的数据模型来解决这个问题,以避免这种关系,并始终回到1-n或n-1.
最终结果是一个复杂的过于复杂的系统,客户经常抱怨性能.在分析这样的瓶颈时,他们永远不会质疑系统所基于的这些基本前提,并且总是寻找其他解决方案.
我错过了什么 ?我认为整个想法是错误的,但不知何故缺乏无可辩驳的证据来证明(或反驳)它,这就是我转向你的集体智慧,指向我的良好,被广泛接受的文学,可以说服我团队中的其他人方法是错误的(说服我,我对于一致的数据模型我太偏执和教条).
我的下一步是建立自己的测试平台并收集结果,因为我讨厌重新发明轮子我想知道这个主题已经有了什么.
----编辑注意:系统最初是使用没有数据库系统的平面文件构建的...后来才将其移植到数据库,因为客户端坚持使用Oracle进行系统管理.他们没有重构,只是简单地添加了对现有系统的关系数据库的支持.平面文件支持后来被删除,但我们仍在等待重构利用数据库.
使用 Visual Studio (2010) 有什么方法可以Find All References与Replace 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
鉴于应用程序范围内的对象集合以及许多需要频繁访问这些对象的无关类,提供所述访问的最佳方法是什么?
例:
// 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) 我需要在一个庞大的遗留Python代码库中进行重构.
我常常认为"这些生产线不再在生产中执行".
但我不确定.
有一些测试触及这些线.但我无法确定生产中是否真的没有使用过.
在这种情况下我该怎么办?
这个问题涉及生产系统的覆盖范围.这个问题与测试/ CI期间的覆盖率无关.
我不想评论这些行,因为我不想在生产系统中产生错误.
在新工作中继承应用程序时,您是否倾向于坚持原始的开发人员编码实践,或者您是否开始应用自己的应用程序?
我在没有指导的小商店工作,总是想知道这里的规则是什么.有些应用程序编写得很好,但不遵循我使用的标准(变量名等等),我不想"弄脏"它们.我发现自己花了一点时间保持一致.
其他人的写得非常糟糕,看起来开发人员每次击键都在改变主意......
当我开始自己的项目时呢?所以现在我已经为这个组合引入了一个新的编码标准:
我刚刚完成了Michael Feathers的" 有效使用遗留代码 "一书.这本书是关于如何有效地创建测试接缝并利用它们来获取现有代码的好书.
他谈到的一种技术是使用"链接接缝".基本上这个想法是,如果你有代码依赖于另一个库,你可以使用链接器插入一个不同的库进行测试而不是生产.这将允许您通过模拟库感知测试条件,或避免调用具有真实世界效果的库(数据库,电子邮件等)等.
他给出的例子是用C++编写的.我很好奇这种技术(或类似的东西)是否可以在.NET/C#中使用?
那么,在你问"你的意思是什么之后,一个嵌套在另一个之内?" 我会尽可能简单地解释一下.
存在.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一样),我试图从会话中检索的变量仍在那里并被使用.
任何想法都会很棒!
我正在使用遗留的C++代码库,我想在类上测试一些方法DependsOnUgly,它具有依赖性,这种依赖性在一个很大的类(Ugly)上很容易被破坏,在文件系统上有很多外部依赖,等等.我想得到至少有一些DependsOnUgly测试方法,尽可能少地修改现有代码.没有很多代码修改,无法通过工厂方法,方法参数或构造函数参数创建接缝; Ugly是一个直接依赖于没有任何抽象基类的具体类,并且有很多方法,很少或没有标记virtual,完全嘲弄它会非常危险.我没有可用的模拟框架,但我想得到DependsOnUgly在测试中,我可以做出改变.如何打破Ugly单元测试方法的外部依赖性DependsOnUgly?
我正在将一些旧的旧版 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 包包含在项目中。
任何提示表示赞赏。
谢谢,比尔
legacy-code ×10
.net ×2
c++ ×2
coding-style ×2
refactoring ×2
unit-testing ×2
.net-5 ×1
architecture ×1
asp.net ×1
c# ×1
code-cleanup ×1
dependencies ×1
iis-6 ×1
mocking ×1
ruby ×1
session ×1
sql ×1
syntax ×1
vb.net ×1