问题标签 [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 投票
1 回答
1124 浏览

c++ - 调试类、c++、链接器错误

我正在尝试为我正在处理的项目编写一个调试类,并且我不想传递一个调试对象,所以我试图这样做。但是,我不知道为什么我的编译器或链接器似乎跳过了我正在为它编写的实现。

如果我将 #include "Debug.cpp" 添加到 main.cpp,则此代码可以正常工作。编译器不知何故缺少 open、close 和 print 函数的实现,除非我将实现放在 .h 文件或 #include Debug.cpp 中。

你知道为什么它没有在 Debug.cpp 中看到实现吗?

我认为这并不重要,但目前 debug.h 和 debug.cpp 在一个项目中,而 main.cpp 在另一个项目中(但都在同一个解决方案中,Visual Studio 2008)。main.cpp 正在构建为可执行文件,而 debug.h 和 debug.cpp 正在编译为动态库 (dll)。

调试.h

代码:全选

调试.cpp

代码:全选

主文件

代码:全选

如果我取消注释主函数中的打印行,我会收到以下错误:

代码:全选

编辑:我原来讨论的链接:

http://elysianshadows.com/phpBB3/viewtopic.php?f=6&t=5328&start=999999

0 投票
4 回答
362 浏览

javascript - 在进程中间提示用户确认

我正在寻找一种有时暂停操作(函数/方法调用)的好方法,直到用户确认他想要执行该操作的特定部分。我需要在不允许代码执行停止的环境中执行此操作(在我的情况下为 ActionScript,但 JavaScript 的方法应该相同)。

为了说明,这是在引入用户提示之前的动作模型:



我需要的是插入一个有条件的用户提示,一个“你想要做这部分吗?”,并且<optional-phase>只在用户想要的时候做。



当尝试在 ActionScript/JavaScript 中执行此操作时,我得到了如下信息:

现在两者<optional-phase><ending-phase>都是重复的。也因为他们使用创建的对象,<preliminary-phase>如果不将所有数据传递给这些函数,我就无法将它们移动到外部函数。


我目前的解决方案是,在我要求确认之前,我将每个<optional-phase><ending-phase>在一些本地函数中(以便它们可以访问数据<preliminary-phase>)包含在内,并且我调用这些函数而不是复制代码,但似乎不对代码不再按执行顺序排列。

你们会推荐什么?

注意事项:
1.askForConfirmation是一个非阻塞函数。这意味着在其调用之后的代码会立即执行(这就是为什么我的return;方法中有一个)。

0 投票
4 回答
3670 浏览

php - 如何将sql与php代码分开

我有一门课可以帮助我处理用户。例如:

所有这些方法内部都有 SQL 查询。有些操作只需要一个 sql 查询,有些 - 不止一个。如果数据库结构发生变化 - 将很难更改所有查询(类很长)。所以我想让 SQL 查询远离这个类。但是如何做到这一点?

阅读此问题后,我了解了存储过程。这是否意味着,现在一个动作只需要一个 SQL 查询(调用存储过程)?但是如何组织分离 sql​​ 和 php?我应该将 sql 查询保存在数组中吗?或者它应该是一个 sql-queries 类。如果是,如何组织这堂课(也许我应该学习什么模式)

0 投票
1 回答
517 浏览

asp.net - 单独项目中的 asp.net 静态内容。现在怎么参考?

Project1.csproj 是网站项目,StaticContent.csproj 是包含所有 .css、.js 和图像文件的静态内容项目。我将它分开,以便设计师可以在不接触主项目文件的情况下工作,并且将来可能会使用 cdn。但问题是我的 .ascx 和 .aspx 页面如何引用这些 css 和 js 文件,因为当我在 localhost 中运行时,它仍然会启动。

0 投票
2 回答
107 浏览

jquery - Flex 有组件。HTML中有什么相似之处?

flex 中非常方便的一点是,您可以创建一个组件、对其进行编码、对其进行蒙皮,然后您可以随意重用它。这意味着代码独立于您生成的每个副本。

我正在尝试使用 html 和 js 来实现这一点(我正在使用 jQuery,但对可能性持开放态度)。

基本上,我创建了一个页面(组件),它有自己的 JS 代码和自己的皮肤。现在,我想复制这个组件并让每个组件都有自己的代码。

我尝试了两种选择。

  1. 将组件作为 iFrame 加载。这样,它会加载两个页面,从而隔离其中的代码。但是,iFrame 很麻烦。它们在拖放方面效果不佳,并且在调整大小时表现不同。
  2. 我尝试使用 PHP 包含这些组件。但是,当我这样做时,我不知道如何隔离代码,因为它们都共享相同的源!也就是说,视觉部分是拆分的(有两份),但是下面的代码是一样的。

你知道有什么聪明的方法吗?

如果你需要一个具体的例子,这里有一个简单的例子:

您正在创建一个汽车游戏。只有两辆车。每个玩家使用不同的键在同一个键盘上演奏。因此,您创建了一个“汽车”组件”。每辆汽车都有相同的行为,但必须独立运行。

构建一个非常容易。但是,如果不复制代码,您将如何进行第二个呢?

0 投票
2 回答
791 浏览

android - Android应用程序中的逻辑和GUI分离。服务有应用程序的知识,不应该

我是 Android 编程的新手(我主要在 Windows 上使用 C#)。我继承了一些由服务和应用程序组成的代码。我想在另一个应用程序中重用该服务和一些应用程序。我把它放在图书馆里。除了一个问题,一切都很顺利。该服务有一些代码将主要活动放在屏幕上。它按名称调用此活动。显然,我不能在通用代码中使用它。服务代码如下所示:

当发生一些有趣的事情(银行账户变为负数或其他事情)时,此代码将由服务运行。问题是上面硬编码的“MyBankingActivity.class”。我已经从库中删除了 MyBankingActivity,因为它是特定于应用程序的。但是,我必须让旧应用程序正常工作。我只想把它分成一个库和应用程序,这样我就可以在另一个应用程序中重用库中的大量逻辑。在那个其他应用程序中,我并不特别希望收到有关此“银行事件”的通知。即使我这样做了,代码目前也是用一个活动的名称硬编码的。

在这里分离逻辑的正确方法是什么?看起来服务应该“发布”事件,感兴趣的应用程序应该“订阅”。至少这是我熟悉的术语。顺便说一句,目前,我刚刚注释掉了整个代码块,并且在旧应用程序中一切正常,当然除了收到此通知。

我意识到(并道歉)我的问题很广泛。由于“授人以渔,不如授人以渔”可能更好,因此请随意推荐涵盖该主题的参考资料/文章/书籍。我曾尝试自己查看有限的图书馆,但要么我的书太介绍性(Android in Action 就是其中之一),要么我找错地方了。即使是建立图书馆和写作服务的话题似乎也很难找到。在我看来,有几个关键概念我很弱: 1. 服务如何在不了解应用程序的情况下将事件传达给感兴趣的应用程序 2. 如何根据某些消息将应用程序带到前台从服务 3 收到。如何获取现有应用程序并闯入库(对于非 gui 或非应用程序特定的东西)和应用程序。4.

非常感谢,戴夫

0 投票
2 回答
396 浏览

javascript - 在 JQuery 中,如何将 HTML OUT 保留在我的 javascript 中?

我认为 JQuery 很棒,但我也喜欢将 HTML 保留在 HTML 文档中而几乎没有保留在 javascript 中的想法。我是什么意思?您知道,假设您正在创建一个包含许多行或可变行数的动态表。这正是我不想做的:

几年前,我想出了一个几乎效果很好的解决方案,并且我经常使用它,但我仍然希望看到更好的东西,这就是我的问题所在。我目前的策略是在主 HTML 文件的底部创建一个隐藏的 div。例如:

然后将javascript更改为如下内容:

好的,你注意到我的解决方案很糟糕的一件事是相当冗长,但公平地说,如果你的模板有任何复杂性,它似乎确实会发光。一个很好的模板候选者是具有 5 行或更多行的 HTML。对它有利的另一件事是它确实完成了从 Javascript 中获取 HTML 的工作。现在我可以让我的 HTML 设计师在 hidden-template div 中编辑 HTML,改变它的外观并根据需要放入类(很容易教他模板和它们的作用),所以现在他没有不必接触 Javascript。但是,最近我在将整个表格定义为模板时遇到了一些问题。当 JQuery 读取模板时,它会尝试重新解释表代码,但它搞砸了。

0 投票
1 回答
308 浏览

actionscript-3 - 在 Flex 中将 Accordion 面板拆分为多个文件?

我有五个面板,每个面板都有一些逻辑。

如何将每个面板的样式、代码和布局拆分为多个文件?

0 投票
2 回答
642 浏览

java - 在Java Swing中将用户界面与域分开

作为一名 Java Swing 新手,我在将用户界面逻辑与域逻辑分开时遇到了一些麻烦。

我有一个带有 JFrame 的小型(微不足道?)Swing 应用程序,其中包含一个 JLabel、JTextField 和一个 JButton。当按下 JButton 时,会弹出一个 JFileChooser 对话框。选择文件后,JTextField 包含文件的绝对路径。到目前为止没有什么壮观的。我要完成的下一件事是将文件的这个绝对路径“注入”到文件管理器类中,该类将在进行选择并更新 JTextField 时处理文件的实际处理(每次选择文件时)使用 JButton)。

我的问题:

  1. 如何让文件管理器知道何时开始读取文件?(例如计算该文件中的行数)
  2. 如何以在 UI 层内共享最少信息的方式实现域层?我应该向 UI 添加文件管理器实例吗?
  3. 我应该使用 JTextField 的值作为对文件管理器的引用,还是应该使用 JButton 操作将值设置到文件管理器中?我的意思是:使用 JTextField 的 propertychangelistener 或使用 JButton 的 actionlistener?
  4. 我应该使用 filebean 将文件的绝对路径存储在域层中还是直接将其插入文件管理器?不同之处在于:当我使用属性更改侦听器时,绝对文件路径的值可以在 UI 输入更改时更新,但是当我直接使用构造函数或设置器插入值时,我必须在文件管理器中处理更改而不是处理文件bean中的更改。
  5. 如何在域逻辑内的文件管理器内引用 UI 中使用的文件bean?
  6. 领域逻辑和业务逻辑一样吗?我的意思是:文件管理器类应该在包whatever.b-logic中,而filebean类应该在包whatever.domain中?

该应用程序分为几个包:

  • 随便:主类
  • 不管什么.presentation : 摇摆的东西
  • 不管是什么域名:数据的东西
  • 不管是什么逻辑:应用程序逻辑

我希望我足够清楚...

提前感谢您的清理工作。

0 投票
3 回答
2103 浏览

c++ - 保持客户端-服务器游戏中的代码井井有条

背景: 我帮助开发了一个多人游戏,主要用 C++ 编写,使用标准的客户端-服务器架构。服务端可以自己编译,客户端和服务端一起编译,这样就可以托管游戏了。

问题

游戏将客户端和服务器代码合并到同一个类中,这开始变得非常麻烦。

例如,以下是您可能在普通类中看到的一小部分示例:

和标题:

如您所见,仅在编译服务器时,预处理器定义用于排除图形和声音代码(看起来很难看)。

问题:

在客户端-服务器架构中保持代码有条理和整洁的最佳实践是什么?

谢谢!

编辑:也欢迎使用良好组织的开源项目示例:)