标签: modularity

建议保持大型C++项目模块化?

我们的团队正在进入规模更大的项目,其中许多项目都使用了几个开源项目.

任何建议或最佳实践,以保持库和依赖项相对模块化,并在新版本发布时轻松升级?

换句话说,假设您创建的程序是开源项目的一个分支.随着两个项目的增长,维护和共享核心更新的最简单方法是什么?

关于我的要求的建议只是请...我不需要"你应该这样做"或"你为什么"..谢谢.

c++ open-source modularity shared-libraries libraries

5
推荐指数
1
解决办法
468
查看次数

你如何在c/c ++中进行模块化开发?

当只有2个模块AB时,我只能处理最简单的情况

A依赖于B,因此我将B构建为库并在A中包含B的头文件,在构建A时也链接到B库.

AB相互依赖时,这将不起作用,当模块数量增加时更是如此.

那么进行模块化开发的一般方法是c/c++什么?

UPDATE

对不起,似乎我的标题是不正常的,重新版本的版本是:如何将模块分成多个.h.cpp文件(不是一个)?

c++ modularity

5
推荐指数
2
解决办法
423
查看次数

创建一个模块化和有组织的javascript网站

我正在寻找一些关于如何保持我的Javascript组织和模块化的一般提示.

我工作过的最新的javascript项目看起来像[以下] [1](格式化http://jsfiddle.net/wdkZd/)

你可以看到我试图命名我的JavaScript并构建一些单独的功能.尽管如此,当我需要实现功能之后,我仍然会在自己的代码中丢失.我得到的想法是我可以更好地组织我的代码.

基于你在这里可以看到的任何一般指针?

javascript design-patterns modularity organization

5
推荐指数
1
解决办法
1296
查看次数

你怎么能在MVC中构建和路由模块?

我正在构建一个MVC,其中一切都是模块.这将允许我分离对象集合,如论坛和用户模块,以进一步组织我的MVC.

/blog
    /controller
    /model
    /view
/user
    /controller
    /model
    /view
/forum
    /controller
    /model
    /view
Run Code Online (Sandbox Code Playgroud)

我目前是类似地图的路线forum/edit/34/forum/controller/edit.php其中包含的Forum_Controller_Edit类.(这与标准方法略有不同,其中所有操作都是控制器的方法Forum_Controller::edit()).这允许我将控制器的所有单个"动作"分离到它们自己的文件中,因此我不必管理具有10个不同动作的大型控制器.

无论如何,这是问题所在.假设我想将新控制器添加到模块中.例如,假设我想要论坛主题(forum/topic/view/34).我可以创建一个新的"主题"模块.

/forum
    /controller
    /model
    /view
/topic
    /controller
    /model
    /view
Run Code Online (Sandbox Code Playgroud)

但然后1)我将不得不使用URL /topic/view/代替forum/topic/view,2)我会分离相关的组件(主题应该是论坛模块的一部分),3)我现在将无法创建一般的"主题"如果我愿意,可以使用内容节点之类的模块.

那么如何在每个模块中允许多个控制器(具有多个动作)的同时构建模块化MVC?

Kohana Framework决定实施HMVC来解决这个问题.但是,这会导致许多is_file()检查以查找要加载的文件的正确位置.I/O检查在商品硬件上非常珍贵,所以我不认为这是一个选项.此外,在使用具有相同名称的多个类时,不明显加载哪个类的版本会导致混淆.

我想找到一个解决这个问题的方法,它不涉及预先设置路径或检查正确类的文件夹.然而,在我看过的最后20个框架中,他们似乎没有对这个普遍问题有一个好的答案.有人有想法吗?

路由更新

如果我要实现路由,它将如何工作?我将如何处理第一个(/论坛),第二个(/论坛/视图)和第三个级别(/ forum/topic/view)?我的路线如何通过参数知道第三级路线和第二级路线之间的区别?换句话说,我的系统会尝试做哪些这些?(鉴于URI"forum/topic/view/34")

$controller = new \Forum\Controller\Topic\View;
$controller->action('34');

// or
$controller = new \Forum\Controller\Topic;
$controller->view('34');

// or
$controller = new \Forum\Controller;
$controller->topic('view', '34')
Run Code Online (Sandbox Code Playgroud)

路由更新2

考虑到Kyles的建议我决定所有控制器都需要一个路由集,这将允许我定义URL路径"forum/topic/view/34"上面的哪些类路由.毕竟,每个URL都很重要,不应该基于您拥有的文件系统结构.我相信他说的是URL设计比我们经常提供的更值得关注.

php model-view-controller frameworks modularity file-structure

5
推荐指数
1
解决办法
2578
查看次数

在Xcode中组织大型Cocoa应用程序源代码的最佳方法是什么?

这是我正在寻找的:

我想将各种功能分成某些模块或组件,以限制其他类的可见性,以防止每个类都可以访问其他类,这些随着时间的推移会产生意大利面条代码.

例如,在Java和Eclipse中,我将使用包并将每个包放入一个具有明确定义的依赖结构的单独项目中.

我考虑过的事情:

  1. 为源文件使用单独的文件夹并在Xcode中使用Groups:
    • 优点:操作简单,几乎不需要Xcode配置
    • 缺点:没有编译时功能分离,即访问所有内容只是一个#import声明
  2. 使用框架:
    • 优点:框架代码无法访问框架之外的访问类.这会强制执行封装并将事物分开
    • 缺点:如果您同时处理多个框架,则代码管理很麻烦.每个Framework都是一个单独的Xcode项目,带有一个单独的窗口
  3. 使用插件:
    • 优点:与Frameworks类似,插件代码无法访问其他插件的代码.在编译时清除分离.插件源可以是同一个Xcode项目的一部分.
    • 缺点:不确定.这可能是要走的路......

根据您的经验,在能够编辑同一项目中的所有来源时,您会选择将内容分开?

编辑:

  • 我的目标是Mac OS X.
  • 我真的在寻找一种在编译时强制分离的解决方案
  • 通过插件我的意思是Cocoa捆绑(http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingCode/Concepts/Plugins.html)

xcode cocoa modularity objective-c

5
推荐指数
1
解决办法
3685
查看次数

有没有办法模块化JavaFX应用程序?

我开始玩JavaFX 2了,我真的很喜欢用FXML创建UI的简易性.但是,一旦您通过基本示例并且需要具有许多窗口的UI,将整个应用程序的UI定义放在单个FXML文件中似乎是不合逻辑的.

是否可以在单独的FXML文件中编写单独的组件,然后根据需要包含它们?比如说,当用户点击主菜单中的项目时,我想要一个窗口弹出; 我可以在单独的FXML文件中编写该窗口的定义,在运行时加载它并将其添加到节点树吗?

java modularity javafx-2 fxml

5
推荐指数
1
解决办法
2565
查看次数

我如何处理没有coroutine.yield()的Lua库?

我想下载一个大文件并同时处理其他事情.

但是,luasocket.http从不打电话coroutine.yield().文件下载时,其他所有内容都会冻结.

这是一个说明性示例,我尝试同时下载文件并打印一些数字:

local http = require'socket.http'

local downloadRoutine = coroutine.create(function ()
    print 'Downloading large file'
    -- Download an example file
    local url = 'http://ipv4.download.thinkbroadband.com/5MB.zip'
    local result, status = http.request(url)
    print('FINISHED download ('..status..', '..#result..'bytes)')
end)

local printRoutine = coroutine.create(function ()
    -- Print some numbers
    for i=1,10 do
        print(i)
        coroutine.yield()
    end
    print 'FINISHED printing numbers'
end)

repeat
    local printActive = coroutine.resume(printRoutine)
    local downloadActive = coroutine.resume(downloadRoutine)
until not downloadActive and not printActive
print 'Both done!'
Run Code Online (Sandbox Code Playgroud)

运行它会产生这样的:

1
Downloading …
Run Code Online (Sandbox Code Playgroud)

lua modularity luasocket coroutine

5
推荐指数
1
解决办法
2185
查看次数

模块化程序设计

不幸的是,我的问题很糟糕,因为我并不完全肯定会打电话给我正在尝试做的事情.我为此道歉.

它出现了,因为我正在尝试编写一个我想在C中实现的非常基本的浏览器,而我正在思考如何最好地实现它.基本的想法是像libcurl(用于网络交互) - > libxml2(解析HTML) - > UI然后某种方式让libcurl接受来自UI的GET或POST请求(还没有达到这一点).

但是,这个approuch是非常有限的,如果我说要检查它是否是PDF然后将它发送到libpoppler然后再将其发送到libxml2我将不得不重新编写我的整个程序流程.此外,如果我想使用我的程序的一部分(例如,libcurl - > pdftohtml - > libxml2部分)并将其发送到另一个程序(例如w3m而不是我的UI),我再次看不到我将如何管理那个.

我可以简单地为curl,libxml2等编写一个Perl或Python包装器,或者执行"curl example.com | parser | UI"这样的操作.然而,在Perl或Python中执行它仍然看起来我每次想要做一些新的事情时都必须重新编写我的程序逻辑,并且管道一切似乎都不优雅.如果可能的话,我也想在C中这样做.

所以我的问题是; 人们怎么称呼这个想法?我一直在疯狂地试图弄清楚如何寻找一个我无法命名的问题的解决方案.我知道它与模块化有关,但我不知道具体是什么,模块化是一个非常广泛的术语.其次,如果有人能指出我的解决方案,我会很感激,尽管它并不像它所说的那样重要.

感谢所有阅读此内容的人.:)

c modularity

5
推荐指数
1
解决办法
503
查看次数

Laravel 5+中模块化编程的最佳实践

我正在开始一个新项目,我想重用它的一些部分,主要是与用户注册和身份验证相关的东西.我可以复制并粘贴所有代码,但我想再次使用.我知道Package DevelopmentLaravel 有,但这并不容易,并且觉得必须有更好的方法.几天前我发现了一个,pingpong/modules但我不知道.它是第三方插件,不相信它.

使用这个插件是真的吗?这个插件会在以后更新吗?Embedd Package Laravel和之间有什么不同pingpong/modules?或者你有什么建议吗?

modularity recommendation-engine package laravel-5

5
推荐指数
1
解决办法
1405
查看次数

减少代码重复而无需子类继承

我正在研究子类与接口和组合的关系。当涉及到代码重复时,我最终对一些事情感到困惑。众所周知,在很多情况下,子类化和继承都不是可行的方法,但是在减少代码重复方面有效。

接口功能强大,如果正确完成操作,将提供很好的可读性,但是我无法解决这样的事实,即它实际上并不能帮助我减少代码重复。我们可能会遇到子类无效的情况。但是,扩展程序的可能性很大,并且每当这样做时,尝试维护Open封闭的主体,我们最终都会以荒谬的数量进行接口的实现/实现。粘贴代码,通过子类化(在代码重复方面)可以避免这种情况。

我们如何通过接口和组合构建出色的策略,从而避免一遍又一遍地编写相同的方法?这样,我们就可以保持模块性,并同时遵守开放式封闭原则。我们是否有任何准则来指导我们如何快速而有效地决定实际上是否值得进行代码重复?

干杯

</ wallOfText>

java inheritance modularity interface open-closed-principle

5
推荐指数
1
解决办法
954
查看次数