标签: modularization

OSGi包的包结构

我一直在思考一些关于osgi包中的包结构的"良好实践".目前,平均而言,我们每捆有8-12个班级.我的主动/建议之一是有两个包; com.company_name.osgi.services.api(用于api相关的类/接口(外部导出)和一个用于实现的包com.company_name.osgi.services.impl(未导出)).这有什么优点?还有其他建议吗?

java osgi modularization

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

如何在Java 9中避免拆分包

我是Java 9的新手,正在通过YouTube上的Java模块化视频讲座.他们提到了模块化的3个好处 - 1.没有遗漏的依赖性2.没有循环依赖性3.没有拆分包.

据我所知,拆分包就是说应用程序依赖于多个依赖关系,让我们说包abc.pqr.xyz存在于更多的1个jar中.然后有可能从jar1中使用该包中的某些类,而从jar2中使用其他类.这可能会在运行时导致一些难以调试的问题.

视频说模块化解决了这个问题.但那是怎么回事?

假设有test.module1,它有以下模块信息 -

module test.module1{
exports abc.pqr.xyz;
}
Run Code Online (Sandbox Code Playgroud)

另一个模块2具有以下模块信息 -

module test.module2{
 exports abc.pqr.xyz;
}
Run Code Online (Sandbox Code Playgroud)

现在让我们在我的应用程序中说我添加了这两个模块的依赖关系 -

module test.myapp{
 requires test.module1;
 requires test.module2;
}
Run Code Online (Sandbox Code Playgroud)

现在我又有2个模块化依赖项,其中有些类可能会出现在这两个模块中.那么在运行时如何解决从哪个模块中获取类定义?Java 9如何避免拆分包问题?

java modularization java-9

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

何时抽象和模块化是编程中的一个不好的做法?

刚刚在"你使用什么JS lib"民意调查中看到了这个评论

"@Xanti - 是的,是的,编程中的模块化和抽象是一种可怕的做法.调用其他函数的函数?浪费."

这让我很好奇,因为我正在使用Kohana框架为PHP和Jquery库的javascript.

为什么有些人会考虑抽象和模块化的不良做法?是不是为简化和加快开发而制定的框架和库?

这是投票的链接

language-agnostic abstraction modularization

6
推荐指数
1
解决办法
1142
查看次数

学习编写有组织的模块化程序

我是一名计算机科学专业的学生,​​我刚刚开始为我的课程编写相对较大的课程(750到1500行之间).到目前为止,可以通过任何合理水平的模块化和面向对象设计来实现.但是,现在我正在为我的作业编写更复杂的代码,我想学习编写更好的代码.

在设计程序的架构时,有没有人能指出我的方向来学习在寻找什么样的东西,以便你可以尽可能模块化?

c++ oop modularization

6
推荐指数
1
解决办法
575
查看次数

Flutter中如何进行模块化,将各个应用功能分开

在 Android 原生上分离每个应用程序功能,构建项目,实现架构组件并使其更容易在团队中工作,您可以使用模块化,这样每个人都可以通过只专注于模块来专注于各自的工作。如果我想使用 3 个应用程序功能(登录、注册、配置文件)的示例制作一个 Flutter 应用程序,并希望为每个功能实现模块化以使其更易于团队合作。你如何实现模块化?是否有参考其模块化 Flutter 的最佳实践?因为如果在 Android Native 上已经有很多相关的文章了,而我在检查 Flutter 时还没有找到。

modularization flutter

6
推荐指数
1
解决办法
2510
查看次数

在 React Router Routes 中动态注入数据

我一直在尝试模块化我的 React.js 应用程序(它将作为带有 Electron 的桌面应用程序交付),如果我将来创建一个新模块,我只需添加一个新文件夹并修改一个几个文件,它应该可以很好地集成。我最初受到这篇文章的启发:https : //www.nylas.com/blog/react-plugins/

在那之后,我开始尽可能多地进行研究,最终创建了一个 JSON 文件,该文件将存在于服务器中,其中包含为该特定客户端注册的插件清单。像这样的东西:

{
    "plugins": [
        {
            "name": "Test Plugin",
            "version": "0.0.1",
            "path": "testplugin",
            "file": "test",
            "component":"TestPlugin"
        },
        {
            "name": "Another Plugin",
            "version": "0.0.1",
            "path": "anothertest",
            "file": "othertest",
            "component":"TestPluginDeux"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

之后,我创建了几个与path值匹配的文件夹,其中包含一个与清单中的名称匹配的组件(例如testplugin/test.jsx,将TestPlugin组件导出为默认值)。我还制作了一个pluginStore文件,用于读取清单并将插件安装在this.state.

然后,在谷歌和这里做了大量研究并找到了这个答案:React - Dynamically Import Components

使用该函数,我能够遍历清单,找到目录中的文件夹,并this.state通过运行mountPlugins()我在主页中pluginStorecomponentDidMount()方法中创建的函数来安装插件。

到现在为止还挺好。我使用的阵营,路由器和我能够在国家动态地安装插件,并能够通过只要求他们这样加载它们在我的主页路线:<TestPlugin />

我现在遇到的问题是,我想动态创建路由,通过使用componentrender方法从状态加载这些组件,但我没有运气。我总是会得到相同的结果......显然我传递的是一个对象而不是一个字符串。

这是我在这次尝试中的最后一次迭代:

{this.state.modules.registered.map((item) =>
<Route exact …
Run Code Online (Sandbox Code Playgroud)

javascript modularization reactjs react-router

6
推荐指数
1
解决办法
4744
查看次数

从库模块获取版本代码和名称

我目前正在致力于模块化我的应用程序,因此我将每个功能放入库模块中。在我的一项功能中,我访问版本代码和名称。但是,尽管我在特定于该模块的 build.gradle 文件中定义了它们

库模块的 build.gradle 文件

它们不存在于生成的 BuildConfig 文件中

模块中生成的BuildConfig文件

我无法引用原始:app模块的 BuildConfig 文件,因为我不能让我的功能模块依赖于该模块。

是否有其他方法可以从库模块访问此信息?

android modularization android-buildconfig

6
推荐指数
2
解决办法
4074
查看次数

在emscripten中使用MODULARIZE和EXPORT_NAME时如何使用FS

我有一个包含使用 emscripten 生成的库的应用程序。我正在使用标志编译它们:

-s MODULARIZE=1 -s EXPORT_NAME=\"'SomeModuleName'\"
Run Code Online (Sandbox Code Playgroud)

但是,库 FS 不再可用。当我在没有标志的情况下进行编译时,我可以在任何其他脚本中使用库 FS。

是否可以在我的模块中导出 FS?

browser export fs modularization emscripten

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

多模块项目:如何设置 Dagger 来提供接口但隐藏特定于实现的依赖项?

在我的应用程序中,我有两个模块:apprepository
repository依赖于 Room,并且有一个GoalRepository接口:

interface GoalRepository
Run Code Online (Sandbox Code Playgroud)

和一个GoalRepositoryImpl内部类,因为我不想将它或 Room 依赖项暴露给其他模块

@Singleton
internal class GoalRepositoryImpl @Inject constructor(private val dao: GoalDao) : GoalRepository
Run Code Online (Sandbox Code Playgroud)

app取决于repository获取一个GoalRepository实例。目前,
我有一个:GoalRepositoryModule

@Module
class GoalRepositoryModule {
    @Provides
    @Singleton
    fun provideRepository(impl: GoalRepositoryImpl): GoalRepository = impl

    @Provides
    @Singleton
    internal fun provideGoalDao(appDatabase: AppDatabase): GoalDao = appDatabase.goalDao()

    @Provides
    @Singleton
    internal fun provideDatabase(context: Context): AppDatabase =
        Room.databaseBuilder(context, AppDatabase::class.java, "inprogress-db").build()
}
Run Code Online (Sandbox Code Playgroud)

问题是这不会编译(显然),因为公共provideRepository函数正在公开GoalRepositoryImpl,即一个internal类。
如何构建我的 Dagger …

android modularization dagger dagger-2 android-module

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

3
推荐指数
1
解决办法
237
查看次数

我可以在字符串中存储逻辑比较吗?

我试图模块化一个冗长的if..else功能.

$condition = "$a < $b";
if($condition)
{
    $c++;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将文字字符串翻译成逻辑表达式?

php conditional if-statement modularity modularization

3
推荐指数
1
解决办法
359
查看次数

C多重定义/首先在此定义错误

我正在尝试写一个书店程序,我在我的函数实现的源代码文件中收到一条错误"多重定义".

这是我的Book.c文件:

#include "Book.h"

void scanBook(book_t* bk) //error here
{
    //implementation here
}
Run Code Online (Sandbox Code Playgroud)

这是我的Book.h文件:

#pragma once
#include <stdio.h>

typedef char* str;    
typedef enum Genre {Education, Business, Novel} genre_t;

typedef struct Book{
    str ISBN;
    str title;
    str author;
    float price;
    int quantity;
    genre_t genre;
} book_t;

void scanBook(book_t* bk);
Run Code Online (Sandbox Code Playgroud)

这是我的main.c文件:

#include "Book.h"
#include "Book.c"

int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该错误发生在Book.c中的scanBook函数但我不知道为什么,因为我包括头文件以及#pragma一次,并在头文件中我声明了该函数.它说'scanBook'和obj\Debug\Book.o ....的多个定义首先在这里定义.

任何帮助或澄清将不胜感激!

c multiple-definition-error modularization

2
推荐指数
1
解决办法
9973
查看次数