我和Django有点合作,我非常喜欢它的项目/应用程序模型:你可以通过组装一个或多个Django应用程序来构建一个Django项目.这些应用程序可以是自治的,或者某些应用程序可以构建在其他应用程序之上.应用程序可以轻松地依赖于另一个应用程序的模型,以及它的控制器(Django dudes称之为"视图")甚至它的视图(Django中的"模板").
我现在正在开发一个相对大规模的Ruby on Rails项目,我很惊讶地发现在Rails中显然没有简单的方法可以做同样的事情.基本上,在Rails中,一个项目=一个应用程序.我们的项目已经开始作为一个巨大的单片应用程序,我们现在正试图找出如何将其拆分为更小的块.
例如,我们当前的应用程序允许我们管理合作伙伴和合同(以及其他事项).我希望有一个"合作伙伴"应用程序来管理我们的合作伙伴(地址,联系人等)和"合同"应用程序,它将管理我们与合作伙伴的合同."合同"应用程序将依赖于"合作伙伴"应用程序(但为了避免循环依赖,我希望"合作伙伴"应用程序不了解"合同"应用程序).
目前,我认为以下是主要选项:
谢谢你的建议.
重用代码与复制/粘贴的最佳做法是什么?
重用的问题可能是更改重用代码会影响许多其他功能.
这是好的和坏的:好的,如果更改是错误修复或有用的增强.如果其他重用代码意外破坏,因为它依赖于旧版本(或新版本有错误),那就太糟糕了.
在某些情况下,复制/粘贴似乎更好 - 粘贴代码的每个用户都有一个私有副本,它可以自定义而不会产生任何后果.
这个问题是否有最佳实践; 重复使用是否需要水密单元测试?
我有一个程序,它读取文件中的gethostbyname()URL 并在每个URL主机上执行.这个电话很费劲.我想缓存它们.
C中是否有一个非常简单的基于地图的代码片段,我可以用来进行缓存?(我只是不想重新发明轮子).
它必须具有以下几点:
char*和值void*.无需复制它们.remove(),但是contains()需要或者put()应该替换价值.PS:我标记了它的作业,因为它可能.我只是非常懒惰,并且想要避免在重新实现时遇到的所有常见陷阱.
我越来越意识到我的代码在任何单个文件中都可以很容易地跨越数百行,虽然我知道实现可能是合理的,但它仍然感觉凌乱和无组织.
我知道有些情况下需要很多代码,但最好的方法是组织它们吗?
我已经考虑过从方法中分离变量,private从publics中分离变量internals但是我不想这样,因为我不禁想到ONE类的组件属于一个文件.
当我使用WPF窗口的代码隐藏时,整个事情变得更加复杂,WPF窗口似乎总是以指数速率迅速成长为一个巨大的混乱.
另外:C#有一个名为的关键字partial,它允许您在不影响功能的情况下将类拆分为任意数量的文件.但是,我注意到微软似乎只是partial用来隐藏你生成的代码(Winforms/WPF.)这让我质疑是否因为它有很多行而拆分一个类是合法的用法partial- 是吗?
谢谢
我是一名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
我去年在C++中使用了一个数据结构类,因此在模板化代码中实现了所有主要的数据结构.我把它全部保存在闪存盘上,因为我觉得在我生命中的某些时刻,我会再次使用它.我想我最终编程的东西需要一个B树,还是只是妄想?您通常需要多长时间保存您编写的代码以便重复使用?
我们使用SQL Server 2005.我们所有的数据访问都是通过存储过程完成的.我们的选择存储过程总是返回多个结果集.
例如:
CREATE PROCEDURE hd_invoice_select(@id INT) AS
SELECT * FROM Invoice WHERE InvoiceID = @id
SELECT * FROM InvoiceItem WHERE InvoiceID = @id
SELECT * FROM InvoiceComments WHERE InvoiceID = @id
RETURN
Run Code Online (Sandbox Code Playgroud)
我们的应用程序的数据访问层基于结果(O/R Mapper样式)构建对象图.
我遇到的问题是我们有许多不同的发票选择存储过程.它们都返回相同的结构,仅用于不同的选择标准.例如,我也有:
CREATE PROCEDURE hd_invoice_selectAllForCustomer(@customerID INT) AS
SELECT * FROM Invoice WHERE CustomerID = @customerID
SELECT * FROM InvoiceItem WHERE InvoiceID IN
(SELECT InvoiceID FROM Invoice WHERE CustomerID = @customerID)
SELECT * FROM InvoiceComments WHERE InvoiceID = @id
(SELECT InvoiceID FROM Invoice WHERE CustomerID = …Run Code Online (Sandbox Code Playgroud) 在构建ASP.NET项目时,需要完成一定数量的样板或管道,这在整个项目中通常是相同的. MVC和ALT.NET方法尤其如此.[我正在考虑以下事项:IoC,ORM,解决方案结构(项目),会话管理,用户管理,I18n等]
我想知道你最喜欢什么方法来"重用"这些管道跨项目?
你能用html创建可重用的组件吗?假设我想将一些css/html和js封装成一个整洁的可重用组件.Web开发人员如何做到这一点?我是来自地球的Flex,C#侧.
我想在我的函数中重用标准库ParseIntError。但是,我自己实现了输入字符串的解析,因此不需要返回标准库返回的错误值。
我没有找到构建价值的方法ParseIntError。我找到的唯一解决方案如下所示:
use std::num::ParseIntError;
fn from_str_radix(s: &str, radix: u32) -> Result<(), ParseIntError> {
let error_empty = "".parse::<i32>().expect_err("get empty input error");
let error_invalid_digit = "Z".parse::<i32>().expect_err("get invalid digit error");
if s.is_empty() {
return Err(error_empty);
}
for c in s.chars().rev() {
match c.to_digit(radix) {
None => return Err(error_invalid_digit),
_ => unimplemented!(),
}
}
Ok(())
}
Run Code Online (Sandbox Code Playgroud)
ParseIntError有没有更优雅的方式从我自己的代码返回?
code-reuse ×10
refactoring ×2
asp.net-mvc ×1
c ×1
c# ×1
components ×1
deployment ×1
html ×1
javascript ×1
map ×1
partial ×1
rust ×1
sql ×1
sql-server ×1
web-services ×1