问题标签 [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 回答
30797 浏览

c++ - C++ 头文件,代码分离

我是 C++ 新手,我有一些关于代码分离的一般性问题。我目前在一个文件中构建了一个小型应用程序。我现在要做的是将其转换为单独的文件,以便它们包含类似的代码或诸如此类的东西。我现在真正的问题是,我怎么知道如何分开事物?代码应该分开的不可见边距是多少?

另外,头文件有什么用?是否转发声明方法和类,以便我可以在编译期间将它们包含在链接器中之前在我的代码中使用它们?

任何对方法或最佳实践的见解都会很棒,谢谢!

0 投票
17 回答
139522 浏览

c++ - 将 C++ 定义放在头文件中是一种好习惯吗?

0 投票
3 回答
7325 浏览

c++ - 多个单例实例

我正在编写一个实用程序类库,其中许多是单例。我已经使用继承实现了它们:

显然这是一个简单的例子,而不是一个实际的类。无论如何,我发现使用以下代码:

将创建多个 SomeClass 的实例。我认为这可能是因为它在我的库(.a)文件之外以及在内部使用。例如,我正在使用一个不是我自己编写的 UI 库,它是单独编译的,我正在对其进行添加。其中一些添加使用了我的 .a 库中也使用的单例。

单独编译会导致这种情况吗?还有什么?

我设法解决这个问题的唯一方法是在我的 main.cpp 文件中创建一个全局对象,我用我需要的任何单例初始化它。然后所有代码通过如下调用访问这个通用全局对象:

我讨厌每次创建另一个单例时都必须向这个对象添加一个额外的方法。另外,使用第一种访问方法,语法似乎更清晰、更熟悉:

如果您有任何想法,意见等,请告诉我。

谢谢。

0 投票
1 回答
1518 浏览

php - 代码分离悖论:从多维数组创建 HTML 树并将 HTML 保留在递归函数之外

这个工作代码似乎是这个问题的典型解决方案。

它采用一个包含类别及其子类别的多维数组(对它的深度没有隐含限制),并从中创建一个 HTML 无序列表,从递归函数内部将其回显到页面上。

通过将每个数组元素的 'children' 键的值从名为 _category_list()_ 的原始回调函数内部递归地传递给 array_walk() 来遍历子级别。

如何修改这种输出方法,以使所有 HTML 代码都存在于模板中、函数之外?

这是代码的概要:

这个多维数组保存了多级类别树。

在 HTML 中使用的重要键是“category_id”、“name”和“children”。为简单起见,其他键已从下面的数组中清除,但如果它们有用,它们是:'parent_id' 和 'level'(从级别 1 开始)。

.

下一个函数产生大部分 HTML 输出,但它会将 HTML 锁定在自身内部。

但是,我不是直接从函数中呼应它,而是寻找一种方法以一种对设计人员自定义友好的方式将此数据传递回视图模板。

.

下一个代码块是当前模板 html/php,其中调用通过 array_walk() 遍历数组的第一级并引用上面的递归函数。然后,该函数本身处理具有 1 个或多个子级的更深类别的递归和迭代。当然,这是典型的做法。

此代码应具有所有 HTML 标记,而不仅仅是外部标记。

.

理想的解决方案:

这里的最终目标是为模板设计者找到一种方法来创建他们理想的导航结构,而无需创建或修改递归函数(不可访问),也不需要为多维的每个级别使用 foreach 循环大批。该解决方案不应与任何特定的深度限制相关联。

HTML 自定义的示例可以包括在 ul/li 标签内放置额外的属性,甚至在输出文本周围包裹新标签,例如跨度标签,这些标签通常用于导航中,以通过 CSS 实现滑动门效果。所以我认为适当的解决方案至少需要支持这些案例场景。

使用 array_walk() 遍历模板中的数组仍然可以,只要它可以以这样的方式使用,即回调函数将所需的变量传递回模板以与设计器的 HTML 一起使用。

理想情况下,如果 array_walk_recursive() 知道它的迭代器实际上有多少层,我认为这个壮举会更容易解决。但除非有人知道该问题的解决方法,否则解决方案可能会完全不同。

我还想避免使用构建树的 javascript 方法。如果有办法避免使用开关,我也愿意接受那里的建议。

0 投票
1 回答
194 浏览

asp.net-mvc - .net mvc 单个管理部分多个站点

期望的结果:

4 个面向客户的站点作为单独的项目 1 组所有四个站点都使用的管理代码

我目前的设置是 4 个项目:

  • 模型/实体的核心

  • 存储库数据

  • 控制器的控制器

  • 浏览网页

现在,Web 项目包含面向管理员和面向客户的视图。我想将其拆分为一个管理项目和 4 个“客户”项目。

我在谷歌上从网络应用程序引用网络应用程序方面收效甚微。我在 haacked.com 上阅读过有关区域的信息,但这似乎不太正确。我不是特别想在 dll 中嵌入视图,因为这在调试/编码标记时会很痛苦。显然我不想要代码的多个副本。

谁能指出或建议可能的方法来做到这一点?我有点难过。

0 投票
1 回答
67 浏览

php - PHP:我应该在哪里存储信息和警告消息的文本

我有一个关于我的项目代码设计的问题。在大多数情况下,将内容与代码分开很重要(HTML 与 PHP 在更大的应用程序中混合=没有好主意等),但我应该如何处理诸如错误消息文本之类的事情?

假设这一条消息将仅用于一种情况/PHP 文件:

或者

Lang某个配置文件中的类在哪里,全是consts)

  • 如果您对上面示例中的内容有任何经验(我认为每个 PHP 程序员都会遇到类似的情况) - 它们是什么?你如何解决它?

  • 更好的解决方案是什么?

0 投票
4 回答
7566 浏览

optimization - 在现代复杂游戏中实现成就系统

现在创建的许多游戏都有自己的成就系统,奖励玩家/用户完成某些任务。stackoverflow 上的徽章系统是完全一样的。

虽然有一些问题我无法找到好的解决方案。

成就系统必须时刻注意某些事件,想想一个提供 20 到 30 个成就的游戏,例如:战斗。服务器必须一直检查这些事件(例如:玩家在这场战斗中避免了对手的x攻击或玩家走了x英里)。

  • 服务器如何在不减慢甚至崩溃的情况下处理如此大量的操作?

成就系统通常需要仅在游戏核心引擎中使用的数据,如果没有那些令人讨厌的成就,无论如何都不需要从那里拿出来(想想例如:玩家在每场战斗中跳跃的频率,你不需要'不想将所有这些信息存储在数据库中。)。我的意思是,在某些情况下,添加成就的唯一方法是将检查其当前状态的代码添加到游戏核心,这通常是一个非常糟糕的主意。

  • 成就系统如何与拥有后来不必要信息的游戏核心交互?(见上面的例子)

  • 它们是如何与游戏核心分离的?

我的例子可能看起来“无害”,但想想魔兽世界目前可获得的 1000 多项成就以及同时在线的许多玩家。

0 投票
2 回答
623 浏览

asp.net - ASP.Net MVC - 什么替换事件以支持松散耦合?

ASP.Net MVC 的哪些功能可以替代 Web 表单中使用事件的方式来支持松散耦合的组件?

例如,在 Webforms 中使用一个简单的分页器控件:

  1. 点击页码
  2. Pager 使用新的页码触发“PageChange”事件
  3. 此订阅页面/控件接收到事件并处理启动调用以获取和绑定新数据。

ASP.Net MVC 中有哪些工具可以类似地支持

  • 松耦合
  • 组件可重用性
  • 单个页面/视图的逻辑分离(这样一个非常复杂的“门户”类型页面)。
0 投票
8 回答
22157 浏览

c# - 在 C# 中分离 UI 和逻辑

有没有人有任何关于将逻辑排除在我的 GUI 类之外的建议?我尝试使用良好的类设计并尽可能地保持分离,但我的 Form 类通常最终会混入比我想要的更多的非 UI 内容,并且它往往使维护变得非常痛苦。

(Visual Studio 2008 Professional、C#、Windows 应用程序)。

非常感谢。

0 投票
2 回答
93 浏览

design-patterns - 根据特定类型确定数据对象的表示类?

我倾向于有一个类来描述一般概念和子类来描述该概念中的差异。例如,Polygon<|-- { RectangleTriangle等}。

但是,我经常发现我对这些层次结构有各种表示。例如,我想将图形表示(例如,QPolygon)或物理表示(质量、centerOfMass)等与我拥有的另一个表示分开。

在我的例子中,我有一个纯数据对象的层次结构( < | Command-- { WaitCommand, ,UnknownCommandWaitCommandPanelUnknownCommandPanel

我的问题是,一旦我构建了数据表示,我就需要从数据飞跃到 GUI。

给定一个数据对象列表,我希望能够构造相应的 GUI 元素,但将两种表示分开。

一个 [糟糕] 的解决方案是让每个Command人都有能力(即,Command::getPanel())返回其 GUI 表示。我不喜欢这样,因为我的数据类现在有表示代码。

另一个解决方案(我暂时采用)是进行查找。也就是说,当启动 GUI 时,给定一个Commands 列表(泛化),该函数根据其特殊类型确定要创建的对象。我也不喜欢这个。

有什么建议么?