标签: code-reuse

如何将大型Rails应用程序切割成可以协同工作的小型应用程序?

我和Django有点合作,我非常喜欢它的项目/应用程序模型:你可以通过组装一个或多个Django应用程序来构建一个Django项目.这些应用程序可以是自治的,或者某些应用程序可以构建在其他应用程序之上.应用程序可以轻松地依赖于另一个应用程序的模型,以及它的控制器(Django dudes称之为"视图")甚至它的视图(Django中的"模板").

我现在正在开发一个相对大规模的Ruby on Rails项目,我很惊讶地发现在Rails中显然没有简单的方法可以做同样的事情.基本上,在Rails中,一个项目=一个应用程序.我们的项目已经开始作为一个巨大的单片应用程序,我们现在正试图找出如何将其拆分为更小的块.

例如,我们当前的应用程序允许我们管理合作伙伴和合同(以及其他事项).我希望有一个"合作伙伴"应用程序来管理我们的合作伙伴(地址,联系人等)和"合同"应用程序,它将管理我们与合作伙伴的合同."合同"应用程序将依赖于"合作伙伴"应用程序(但为了避免循环依赖,我希望"合作伙伴"应用程序不了解"合同"应用程序).

目前,我认为以下是主要选项:

  1. 使这些应用程序通过REST请求进行通信(每个应用程序将充当Web服务):这很好,但它似乎禁止重用其他应用程序的视图.例如,如果"合作伙伴"应用程序有一个很好的页面来显示合作伙伴的详细信息,并且如果我想显示该页面,稍微修改一下,在合同详细信息页面的中间,我看不到其他方法可以做这是让"合同"应用程序通过REST请求向"合作伙伴"应用程序询问合作伙伴详细信息(它将获得对象表示,而不是视图),然后复制/粘贴合作伙伴详细信息页面的源代码来自"合作伙伴"app"到"合同"应用程序.
  2. 将这些应用程序转换为插件:不是很好,而且有点困难,但似乎允许模型和视图重用
  3. 使用svn external从应用程序到应用程序共享一些模型:简单但难看.

谢谢你的建议.

deployment code-reuse refactoring ruby-on-rails

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

代码重用和重构

重用代码与复制/粘贴的最佳做法是什么?

重用的问题可能是更改重用代码会影响许多其他功能.

这是好的和坏的:好的,如果更改是错误修复或有用的增强.如果其他重用代码意外破坏,因为它依赖于旧版本(或新版本有错误),那就太糟糕了.

在某些情况下,复制/粘贴似乎更好 - 粘贴代码的每个用户都有一个私有副本,它可以自定义而不会产生任何后果.

这个问题是否有最佳实践; 重复使用是否需要水密单元测试?

code-reuse refactoring

7
推荐指数
2
解决办法
2150
查看次数

没有代码的Html重用

我正在.net之外和ruby-on-rails环境之外创建一些静态html页面.

我创建了一个菜单,我希望在几个页面之间共享,但我想知道如何使用常规的html结构(即没有.net的母版页,没有轨道布局)

有没有办法在不切割和粘贴的情况下做到这一点?

html code-reuse

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

准备培训数据的一般框架?

作为计算语言学的学生,我经常进行机器学习实验,我必须从各种不同的资源准备训练数据,如原始或注释文本语料库或语法树库.对于每个新任务和每个新实验,我编写程序(通常使用Python,有时是Java)来提取我需要的功能和值,并将数据从一种格式转换为另一种格式.这通常导致非常大量的非常大的文件和大量的小程序处理它们以获得某些机器学习框架的输入(如Weka的arff文件).

人们需要非常有条理地处理这个问题和计划,并且要小心谨慎,不要错过大量数据中的任何重要特性,例外或错误.良好的软件设计原则,如设计模式或重构范例,对于这些任务来说并不是很重要,因为安全性,可维护性或可持续性等问题并不重要 - 一旦程序成功处理了数据,就不再需要它了.到目前为止,我甚至已经停止了在Python代码和程序中使用类或函数的简单程序方式.下一个实验将需要具有独特特征和不同格式的不同数据集,以便无论如何都可能必须从头开始编程.到目前为止,我的经历是' 将80-90%的项目时间花在准备培训数据的任务上并不罕见.小时和日子只考虑如何从一种数据格式到另一种数据格式.有时,这可能会变得非常令人沮丧.

好吧,你可能猜到我有点夸张,甚至有目的,但我很肯定你理解我想说的话.实际上,我的问题是:

是否有任何通用框架,架构,最佳实践来处理这些任务?在优化设计的情况下,我希望能够重复使用多少代码?

code-reuse nlp machine-learning training-data

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

如何组织大型代码文件?

我越来越意识到我的代码在任何单个文件中都可以很容易地跨越数百行,虽然我知道实现可能是合理的,但它仍然感觉凌乱和无组织.

我知道有些情况下需要很多代码,但最好的方法是组织它们吗?

我已经考虑过从方法中分离变量,privatepublics中分离变量internals但是我不想这样,因为我不禁想到ONE类的组件属于一个文件.

当我使用WPF窗口的代码隐藏时,整个事情变得更加复杂,WPF窗口似乎总是以指数速率迅速成长为一个巨大的混乱.

另外:C#有一个名为的关键字partial,它允许您在不影响功能的情况下将类拆分为任意数量的文件.但是,我注意到微软似乎只是partial用来隐藏你生成的代码(Winforms/WPF.)这让我质疑是否因为它有很多行而拆分一个类是合法的用法partial- 是吗?

谢谢

c# code-reuse code-organization partial

7
推荐指数
3
解决办法
2143
查看次数

如何避免代码重复

我有三个C#中的方法几乎执行相同.更具体地说,存在大量的代码重复,但最后,它们执行不同的功能.

这显然非常低效,那么减少代码重复的最佳方法是什么?我应该将它全部放在一个方法中,并在最后使用switch和enum来实现不同的功能吗?或者,是否有某种方式可以有3个单独的类并从另一个继承共享位?我已经对此进行了相当多的阅读,从我可以收集到的内容来看,这仅用于获取来自不同类别的属性.

c# code-reuse

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

在PHP中你如何创建可重用的对象?,这是最好的做法吗?你喜欢哪个?

我在php中创建了一些可重用的对象,我想知道最好的构建它们的方法.下面我有两个不同方法的例子.

Class Uploader{
    public $Filename;
    public $Directory;

    function upload(){
        upload_file($this->Filename, $this->Directory)
    }
}

// Then use the class above like this.
$u = new Uploader;
$u->Filename = 'foo.png'; // Set all the props
$u->Directory = 'bar/'    //  ^   ^   ^    ^
$u->upload();             // Then Execute
Run Code Online (Sandbox Code Playgroud)

或者这样做会更好......

Class Uploader {
    function uploader($filename, $directory){
        upload_file($filename, $directory)
    }
}

// Then use the class above like this.
$u = new Uploader;
$u->uploader('foo.png', 'bar/') // Obviously much less code, All in One.
Run Code Online (Sandbox Code Playgroud)

在这两种方法中,哪一种更受欢迎,是它们的速度差异还是使用一种方法而不是另一种方式的增益?
我赞成示例#1,但这是他们最好的做法吗?

php oop code-reuse object

7
推荐指数
2
解决办法
2427
查看次数

从多个项目中引用C#代码

我有一个.cs充满C#代码的文件,我一直在多个项目中重复使用.

现在我通过将代码复制并粘贴到每个项目目录中的新文件中来将它包含在这些项目中.这是错误的做法.

什么是正确的方法呢?

正确的方法应该:

  • 将公共代码仅保留在计算机上的一个位置
  • 并保持链接新鲜 - 所以当公共代码更改时,每个项目都知道它,下次我重新编译该项目.

随机猜测,我期待某种指令using mycode = C:\common\mycode.cs,但我确信这不是.NET的做事方式.

(我正在使用C#2010,.NET 4.0,并且只在一台计算机上本地编译此代码.)

c# code-reuse

7
推荐指数
3
解决办法
3655
查看次数

避免在多种不同语言中编写相同的算法

我是一名Web开发人员,我观察到很多次我需要在客户端和服务器上使用相同的功能.所以我用JS以及PHP或任何服务器端语言编写它.我厌倦了这个.如果我必须改变它,那么我需要在两个地方改变它.如果我想将它用于某些手持设备,那么我将不得不再次使用Objective-C或Java等重写该代码.然后,如果我需要更改该功能,那么我将需要在任何地方更改它.

这有解决方案吗?如果我将通过ajax调用一些web服务,那么客户端将有延迟.如果它将在JS中,则无法从PHP或Java等中访问它.如果我使用其他语言的PHP中的某些服务,那么这也可能成为性能问题.

也有一段时间我们需要使用db或不使用db从某些参数输出这些函数作为输入.

我知道会有一些非常简单的解决方案,但我不知道.请告诉我一些语言无关的解决方案,因为我总是没有VPS.

我不确定我的问题是否真的属于stackoverflow.com或programmers.stackexchange.com所以请将它转移到programmers.stackexchange.com而不是关闭这个问题,如果它属于那里.

javascript code-reuse web-services language-interoperability

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

正确/不正确使用委托以实现可扩展性

我试图让我的GUI库用户不受限制地自定义输入/输出过渡效果,同时仍然保持简单/防止误用(当控件进入或退出视图时).

为此,我向Control类添加了一个委托,它将采用Control引用和转换完成百分比,以便用户能够以他想要的任何方式平滑地转换控件的位置/不透明度,基于给定百分比.他所要做的就是在控制进入/退出之前订阅过渡功能.

但是,我意识到仅使用当前完成百分比来转换/动画控件是不可能的,因为您还必须存储和比较控件的初始位置.
为了明确这个存储要求,我应该强制使用委托函子吗?

如果是这样,我怎么能以简约/干净的方式做到这一点?


随意提出另一种方法,允许用户应用自定义过渡动画!

c# generics code-reuse animation delegates

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