标签: legacy-code

继承代码给你留下了什么印象或启发?

多年来,我听到很多关于我们开发人员必须使用的继承项目的抱怨.WTF网站上有大量的代码示例,让我在我的呼吸下实际上嘀咕"WTF?"

但实际上你们中的任何一个人都被提供了让你离开的代码,"这是经过深思熟虑的神圣废话!" 或者"哇,我从未想过那个!"

您必须使用哪些继承代码才能让您微笑,为什么?

legacy-code

8
推荐指数
1
解决办法
1882
查看次数

如何将Perl代码标记为已弃用?

在我的项目中,我正在准备从遗留代码到新的,经过适当设计和测试的模块的逐步过程.由于并非每个程序员都密切关注我的工作,因此我想在使用旧代码时发出警告.我也非常希望能够输出有关如何移植旧代码的建议.

我找到了两种方法:

  1. Attribute :: Deprecated,对于函数来说很好,但是如果不推荐使用完整的模块则相当麻烦.此外,除了警告之外,没有其他信息.

  2. Perl::Critic::Policy::Modules::ProhibitEvilModules对于模块或可能是自定义Perl::Critic规则,以便在函数或方法级别上进行更精细的弃用.这种方法很好,但是代码本身并不是很明显它已被弃用了.

任何其他建议或技巧如何正确和容易地做到这一点?

perl legacy-code deprecated obsolete

8
推荐指数
1
解决办法
1206
查看次数

如何在遗留应用程序中使用Symfony 2 Container

希望将遗留应用程序与Symfony 2应用程序集成 - 用Symfony组件替换旧应用程序的越来越多部分.我将采用的方法是在遗留应用程序中使用Symfony 2容器来获取已为Symfony 2应用程序配置的服务.我想要使​​用的第一个服务是会话和安全上下文.

问题:

  • 这可行吗?
  • 如何获取配置的服务容器?

遗留应用程序中的更多信息:典型的PHP混乱:单个PHP文件,作为"控制器"(检查$ _GET和$ _POST用于不同的执行路径).每个页面包括init.php设置自动加载,数据库连接等.会话管理有自己的类(我想替换),通过调用数据库对象的静态方法(!)来检索数据.

php dependency-injection legacy-code symfony

8
推荐指数
1
解决办法
3692
查看次数

CQRS与Legacy Systems

我正在寻找将具有清晰域模型的相对较新的基于Web的应用程序转换为更多CQRS样式系统.我的新应用程序本质上是旧的现有系统的增强替代品.

我组织中的现有系统共享一组公共数据库,这些数据库由遍布公司的孤岛中的无数应用程序(通过混沌方法开发)进行更新.(就目前而言,我相信公司中没有任何一个人可以识别所有人.)

因此,我的问题是关于我的应用程序的读取模型.由于各种状态更改,一般用户数据等由我控制之外的其他应用程序更新,处理构建读取模型的最佳方法是什么,以便我可以处理外部更新,但仍然保持相对简单的事情?

到目前为止我考虑过以下几点:

  1. 在数据库中为读取模型创建视图,读取所有表,旧表和新表
  2. 将触发器添加到现有表以更新新的读取模型表
  3. 将一些代码添加到数据库(CLR Stored proc/etc [sql server])以更新读取模型的外部数据存储区
  4. 抛弃希望

关于如何处理这个问题的一般共识是什么?认为如果不从头开始完全重写所有内容,我可以为遗留系统带来秩序,这是愚蠢的吗?

legacy-code legacy-database cqrs

8
推荐指数
1
解决办法
715
查看次数

在循环之前或内部放置初始化代码更好?

对不起,如果这是一个愚蠢的问题:-)

背景

我有遗留代码,如下所示:

struct {
int field1;
int field2;
int field3;
int field4;
... many many fields
} myStruct;


while (something) {
initialzationFunction(&myStruct);

// ...change fields of myStruct and do stuff.
}
Run Code Online (Sandbox Code Playgroud)

while循环的每次迭代都需要将myStruct初始化为某个东西,假设为零.initialzationFunction将myStruct的所有字段初始化为零.

这个问题

将initialzationFunction保留在while循环中是否合适,或者最好在循环之前调用它一次,如果碰巧更改此代码,让程序员"手动"初始化他们需要的东西.

编辑:不幸的是myStruct是一个全局变量,因此将其作为自动变量不是一个选项,除非我想将它作为参数传递给大量使用它的遗留函数.

我的想法

  • 只是调用initialzationFunction()将防止错误,以防有人修改代码并忘记以后初始化myStruct.
  • 查看哪些特定字段已初始化可能会提供更多信息.
  • 如果稍后在while循环中仅修改了几个字段,则调用所有字段中的initialzationFunction()是多余的.

你会怎么做?

c legacy-code

8
推荐指数
2
解决办法
450
查看次数

BigQuery - 标准SQL的IFERROR

我即将在BQ中将查询从Legacy迁移到Standard.在Legacy中,我曾经有过x/y返回,但是,null如果y=0我因为错误而陷入StandardSQL:

错误:除以零

我想申请类似的东西 IFERROR(x/y,null)

它在StandardSQL中可用吗?

legacy-code google-bigquery

8
推荐指数
1
解决办法
3814
查看次数

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
查看次数

我真的应该大量介绍显式关键字吗?

当我在我的代码1上使用(最近发布的)Cppcheck 1.69时,它显示了很多消息,我没有预料到;-)禁用noExplicitConstructor证明了所有这些消息都属于这种类型.

但是我发现我不是唯一一个有很多新的Cppcheck消息的人,看看LibreOffice的分析结果(我可以公开展示):

在此输入图像描述

有经验的程序员会做什么:

  • 取消支票?
  • 大量介绍explicit关键字?

1 编辑:这当然不是我的代码,而是我必须处理的代码,它是遗留代码:C和C++在几种(预)标准风格中的混合,并且它是一个相当大的代码库.

c++ explicit legacy-code cppcheck

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

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

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

例:

// 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
查看次数