问题标签 [code-separation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1113 浏览

java - 用于将模型与其图形表示分离的设计模式

问题

我正在寻找(希望)一种我可能不知道的设计模式,它可以帮助完成我在下面定义的问题的一些代码分离:

我有一组代表各种实体的类,例如PointVectorArc等,它们属于二维笛卡尔平面,由 class 表示Model。该类Model充当这些实体的集合并存储有用的计算值。

我还有一个可视化界面,应该呈现模型状态的 2D 图像,并且还可以通过向模型添加实体来与模型进行小范围的交互(例如,用户可以Point通过单击向模型添加在某处的GUI上。)。

第一个想法

起初,我有一个接口Drawable,它有一个方法,Draw它可以接受一个图形上下文对象,并且实现实体会使用我正在使用的图形库(在本例中为 Java Swing/AWT)将自己绘制到该上下文中。

这很有效,因为我的应用程序的 GUI 部分只需遍历模型中的所有实体并运行它们的Draw方法来生成可视化。最大的问题是我将我的模型与它的图形表示结合起来,我觉得这是一种不好的做法。

第二个想法

我创建了一个EntityDrawer接受实体的类,根据实体类型选择正确的绘图方法,然后绘制到我的图形上下文。

这种方法实现了我一直在寻找的代码分离,但EntityDrawer该类严重依赖instanceOf/isA方法来确定如何绘制实体,我多次看到这种方法被描述为糟糕的设计。我尝试重新设计它,以便类使用重载方法来确定要使用哪种绘图方法,但我意识到这基本上是相同的instanceOf/isA以更好看的方式编写的方法。此外,对于我添加的每个新实体类,我都需要在 thisEntityDrawer的代码中进行镜像,这对我来说就像是一种耦合形式。


我希望我的模型与其图形表示之间尽可能多地解耦,以便模型可以专注于对问题进行建模,而不是如何将自己呈现到图形上下文中。此外,将来我可能会添加更多的模型实体类型,它们将具有截然不同的绘图需求。

那么,有没有一种模式或设计技术可以用来实现这一点?我觉得我提出的两种解决方案都不是最优的,并且可能有一种设计模式可以解决这类问题。

0 投票
3 回答
15536 浏览

python - 1 个输入分隔中的 3 个值(数字)。蟒蛇 3

我现在正在编写一个代码,其中一部分需要在一行中向用户询问 3 个不同的数字(可以是每个数字中的任意位数)。假设我要求用户输入,他输入:“31 722 9191”。数字之间需要一个空格。您将如何分离这些数字并为每个数字分配一个变量。因此,例如 31 将是“A”,722 将是“B”等等......到目前为止我得到了什么:

谢谢 !

0 投票
4 回答
5157 浏览

javascript - 一个 js 文件中的所有代码 vs 将代码分成多个 js 文件

到目前为止,我的项目中只有一个 javascript 文件,其中包含大量函数,其中只有几个函数被多个网页使用。随着涉及的代码量增加,我可以看到文件变得混乱,而且方式也很混乱长。我正在考虑为每个网页创建一个单独的 javascript 文件,以便:

  1. 即使对于那些很少使用它的页面,我也不必加载一个巨大的 javascript 文件。
  2. 该文件不会变得更加混乱

但我不知道这是否会产生我不知道的负面影响。

0 投票
1 回答
308 浏览

php - Zend Framework 2 中的正确代码分离

我正在编辑 Zend Framework 2 模块,遇到以下代码:

其中大部分是现有代码,现在我添加了一些 jQuery。代码有 HTML、CSS、JavaScript/jQuery 和 PHP。代码位于我的/vendor/$module/$submodule/view/$submodule/register/index.phtml文件中。

在印象中 Zend Framework 2 是 PHP 世界中最新和最伟大的重量级框架,我不禁想知道在代码分离原则方面到底发生了什么。当然,上述代码的这种可恶之处一定是用户错误。包括我在内的代码作者帮助在一个文件中创建了这种令人难以忍受的混乱技术。我想这表明,无论一个复杂的框架多么善意,当涉及到松散耦合组件时,仍然有人可以将 5 种技术放入一个简短的文件中,让它看起来像地狱一样。

虽然可能有几种方法可以做到这一点,但我的问题是:

在 Zend Framework 2 中分离 HTML、CSS、jQuery、JavaScript、PHP 代码的正确(推荐、设计)方法是什么,以便在可能的情况下将每种技术分离到自己单独的文件和文件夹中,同时保持适当的定义良好的工作连接(松散耦合),并且仅在绝对需要或通过行业最佳实践推荐的情况下将技术直接嵌入彼此?

0 投票
3 回答
185 浏览

html - Knockout.js 是否符合内容/UI/行为分离的最佳实践?

我在网络上工作了很长时间,我看到了“最佳实践”的发展。我现在相当确信将 HTML(内容)、Javascript(行为)和 CSS(UI)分开是最好的做法。

几个月前,我开始使用 knockout.js。我确实在其他类似的框架(如骨干或 Angular)中选择了它,因为我遵循的 MVC 培训中的一章是关于淘汰赛的,这个概念吸引了我。然后在网上进行了快速比较之后,它看起来对我的需求来说并不是一个糟糕的选择,并且作为一个开始。

但这是我的问题:当我现在查看我的 HTML 代码时,经过几周的项目开发,其中有相当多的淘汰赛绑定,这让我想起了很多旧时代,当我们(或至少我)曾经通过onclick属性等进行内联javascript事件处理。

因此,我不确定这 2 个问题是否 100% 适合 SO,但我找不到更好的 StackExchange 网站来问它:

  1. 是否使用淘汰赛(或其他框架,因为它们似乎基本上都使用相同的模式)与“分离规则”相反?或者它是这个规则的一个可接受的小步骤?或者它甚至完全可以接受,因为它使用了“数据”属性?

  2. 如果这可能是一种不好的做法,是否有可能通过单独的 javascript 文件进行所有绑定,例如使用 jQuery 来选择控件并将绑定应用于它们?如果在淘汰赛中不可能,是否与另一个框架一起使用?我必须承认,在我做选择的时候,我并没有考虑到这种影响......

谢谢你,如果这应该转移到另一个 SE 站点,我很抱歉。

0 投票
1 回答
240 浏览

angularjs - 如何使用角度将 UI 与控制器分开?

我正在开发 Angular Web 应用程序,我怀疑是否可以将 UI 与控制器完全分开?

我有一个控制器方法,它向服务器发送请求以检索数据。如果发生错误,我需要用一些友好的消息通知用户。所以我想我必须调用 UI 框架的某些 api 来通过弹出窗口或某种 toast 通知用户。但是这样做,是否意味着我将 UI 代码嵌入到我的控制器逻辑中?这不是 UI 和控制器之间干净分离的反面吗?如果我想切换到另一个 UI 框架,这意味着我还需要更改我的控制器代码。

我是网络应用程序的新手,希望有人能澄清我的疑问。你会怎么做?

0 投票
2 回答
825 浏览

java - 与jetty + guice的可运行战争

这是一个关于更好地将嵌入码头的代码与连接 servlet的代码分开的问题。

我正在尝试修改此示例代码,以便获得可运行的战争,即我可以放入现有 Jetty 容器的战争文件,或使用类似java -jar webapp-runnable.war. 示例代码属于这两篇博文:No.1No.2

我遵循了GuiceServlet 手册并创建了一个web.xmland GuiceServletContextListener(见下文),但它们似乎并没有让我很了解mvn jetty:run; 当我尝试跑步时mvn jetty:run,我收到以下错误:

这是我的代码。如前所述,我从github 上的这个 repo开始。

1)我从中提取了 AbstractModule 类型的匿名内部类com.teamlazerbeez.http.HttpServerMain并将其放入一个新类com.teamlazerbeez.http.HttpServerModule中。这个类现在在创建 Guice Injector 时被实例化HttpServerMain(l36)中创建 Guice Injector 时实例化此类中创建 Guice Injector 时实例化此类。

2)我的web.xml

3)我的com.teamlazerbeez.http.GuiceServletConfig

我的问题:我如何重构该HttpServerMain main方法,并HttpServerModule以使他们描述的设置过程对我有用的方式GuiceServletConfig?它必须是什么GuiceServletConfig样子才能起作用?

0 投票
0 回答
995 浏览

cuda - CUDA 使用 cmake 分离编译问题

我有一个用 cmake 编译的 CUDA 项目。在我想添加一个包含新文件(.cu 和 .cuh)中描述的设备功能的新类之前,它工作得很好。这是 CMakeList 文件:

在 SINS_ODEINT.cuh 中:

在 SINS_bufferGas.cuh 中:

在 SINS_bufferGas.cu 中:

编译产生:

我尝试在 CUDA_NVCC_FLAGS 中添加 -dc,设置来自 FindCUDA.cmake 的变量 CUDA_SEPARABLE_COMPILATION,这篇文章中建议的多种组合,试图了解这里的内容(没有 cmake)无济于事......

我正在使用 CUDA 5.0,可以访问 2.0 计算能力和 cmake 2.8.7 - 我非常感谢您解释正在发生的事情以及如何很好地修复它。谢谢你的任何建议。

编辑:添加了 David Kernin 询问的信息。

CMake 输出:

以及 make 的完整输出:

0 投票
1 回答
77 浏览

c++ - 分离 C++ 代码时生成错误

我最近做了一个小例子,以练习使用Geany.h分离 C++ 代码和.cpp文件。代码编译没有问题,但是在我构建时出现以下错误:

源文件:

父1.h:

父1.cpp:

您好,感谢您的快速回复。

在 parent1.cpp 中删除这一行 #include "grandparent.h" --- 这不起作用。(错误: {-token 之前的预期类名)

祖父母.h看起来像这样:

0 投票
1 回答
116 浏览

include - 在 Maple 中分离和组合代码

我使用table创建简单的包。因为包有很多程序所以我把代码拆分成很多文本文件。每个文件都会通过 Maple 的约定检查

我想在编译之前创建一个主文件并将所有文本代码文件“包含”到主文件中。


但是主文件编译错误


请帮我找出包含和编译代码的方法

谢谢