多年来,我听到很多关于我们开发人员必须使用的继承项目的抱怨.WTF网站上有大量的代码示例,让我在我的呼吸下实际上嘀咕"WTF?"
但实际上你们中的任何一个人都被提供了让你离开的代码,"这是经过深思熟虑的神圣废话!" 或者"哇,我从未想过那个!"
您必须使用哪些继承代码才能让您微笑,为什么?
在我的项目中,我正在准备从遗留代码到新的,经过适当设计和测试的模块的逐步过程.由于并非每个程序员都密切关注我的工作,因此我想在使用旧代码时发出警告.我也非常希望能够输出有关如何移植旧代码的建议.
我找到了两种方法:
Attribute :: Deprecated,对于函数来说很好,但是如果不推荐使用完整的模块则相当麻烦.此外,除了警告之外,没有其他信息.
Perl::Critic::Policy::Modules::ProhibitEvilModules对于模块或可能是自定义Perl::Critic规则,以便在函数或方法级别上进行更精细的弃用.这种方法很好,但是代码本身并不是很明显它已被弃用了.
任何其他建议或技巧如何正确和容易地做到这一点?
希望将遗留应用程序与Symfony 2应用程序集成 - 用Symfony组件替换旧应用程序的越来越多部分.我将采用的方法是在遗留应用程序中使用Symfony 2容器来获取已为Symfony 2应用程序配置的服务.我想要使用的第一个服务是会话和安全上下文.
问题:
遗留应用程序中的更多信息:典型的PHP混乱:单个PHP文件,作为"控制器"(检查$ _GET和$ _POST用于不同的执行路径).每个页面包括init.php设置自动加载,数据库连接等.会话管理有自己的类(我想替换),通过调用数据库对象的静态方法(!)来检索数据.
我正在寻找将具有清晰域模型的相对较新的基于Web的应用程序转换为更多CQRS样式系统.我的新应用程序本质上是旧的现有系统的增强替代品.
我组织中的现有系统共享一组公共数据库,这些数据库由遍布公司的孤岛中的无数应用程序(通过混沌方法开发)进行更新.(就目前而言,我相信公司中没有任何一个人可以识别所有人.)
因此,我的问题是关于我的应用程序的读取模型.由于各种状态更改,一般用户数据等由我控制之外的其他应用程序更新,处理构建读取模型的最佳方法是什么,以便我可以处理外部更新,但仍然保持相对简单的事情?
到目前为止我考虑过以下几点:
关于如何处理这个问题的一般共识是什么?认为如果不从头开始完全重写所有内容,我可以为遗留系统带来秩序,这是愚蠢的吗?
对不起,如果这是一个愚蠢的问题:-)
我有遗留代码,如下所示:
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是一个全局变量,因此将其作为自动变量不是一个选项,除非我想将它作为参数传递给大量使用它的遗留函数.
你会怎么做?
我即将在BQ中将查询从Legacy迁移到Standard.在Legacy中,我曾经有过x/y返回,但是,null如果y=0我因为错误而陷入StandardSQL:
错误:除以零
我想申请类似的东西 IFERROR(x/y,null)
它在StandardSQL中可用吗?
使用 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期间的覆盖率无关.
我不想评论这些行,因为我不想在生产系统中产生错误.
legacy-code ×10
c++ ×2
refactoring ×2
architecture ×1
c ×1
code-cleanup ×1
coding-style ×1
cppcheck ×1
cqrs ×1
deprecated ×1
explicit ×1
obsolete ×1
perl ×1
php ×1
symfony ×1