问题标签 [code-structure]

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 投票
16 回答
281469 浏览

c# - 类中项目的顺序:字段、属性、构造函数、方法

在类结构方面是否有关于项目顺序的官方 C# 指南?

它去吗:

  • 公共领域
  • 私有字段
  • 特性
  • 构造函数
  • 方法

我很好奇是否有关于物品顺序的硬性规定?我有点到处都是。我想坚持一个特定的标准,这样我就可以在任何地方做到这一点。

真正的问题是我的更复杂的属性最终看起来很像方法,并且它们在构造函数之前的顶部感觉不合适。

任何提示/建议?

0 投票
4 回答
830 浏览

api - 为我的软件创建 API - 基本代码结构

我目前正在编写一个 Web 软件,客户端桌面也将通过 API 使用该软件。我现在面临的问题是:我是否应该在应用程序中执行两次添加/更新/删除对象的每个操作?一旦它位于普通代码中并且曾经为 API 隔离?

或者我应该更愿意使用代表我数据库中所有对象的 OOP 模型类系统,并将它们用于 API 和普通代码?

还是直接开发 API 并在我的普通 Web 界面中使用它?

这是我一直想知道的事情。提前致谢!

0 投票
15 回答
1293 浏览

c - 为什么有些函数特别长?(学术研究所需的想法!)

我正在写一个关于极长函数的小型学术研究项目。显然,我不是在寻找糟糕编程的示例,而是寻找有意义的 100、200 和 600 行长函数的示例。

我将使用为希伯来大学的硕士学位编写的脚本来研究 Linux 内核源代码,该脚本测量不同的参数,如代码行数、函数复杂度(由 MCC 测量)和其他好东西。顺便说一句,这是一本关于代码分析的精巧研究,也是推荐阅读材料。

如果您能想到任何函数应该特别长的任何充分理由,我很感兴趣?我将研究 C,但任何语言的示例和参数都会很有用。

0 投票
9 回答
3588 浏览

coding-style - 为什么要使用短路代码?

相关问题使用短路评估的好处为什么语言不使用短路评估?,有人可以解释一下这行代码吗?(逻辑和赋值运算符)

关于使用短路代码的语言的好处存在一些问题,但我想知道对程序员有什么好处?只是它可以让代码更简洁一点吗?还是有性能原因?

我不是在问无论如何都需要评估两个实体的情况,例如:

对我来说,推理很清楚 - 因为两者都需要为真,如果用户无法保存数据,您可以跳过成本更高的模型验证。

这也有一个(对我来说)明显的目的:

strlen()因为使用非字符串值调用是不明智的。

我想知道的是当它不影响任何其他语句时使用短路代码。例如,从 Zend Application 默认索引页面:

这可能是:

甚至作为一个单一的声明:

那么为什么要使用短路代码呢?只是为了使用逻辑运算符代替控制结构的“酷”因素?合并嵌套的 if 语句?因为它更快?

0 投票
3 回答
1189 浏览

php - 组合 XmlWriter 对象?

我的应用程序的结构方式是,每个组件都将输出生成为 XML 并返回一个 XmlWriter 对象。在将最终输出呈现到页面之前,我将所有 XML 组合起来并对该对象执行 XSL 转换。下面是应用程序结构的简化代码示例。

像这样组合 XmlWriter 对象有意义吗?有没有更好的方法来构建我的应用程序?最佳解决方案是我不必将单个 XmlWriter 实例作为参数传递给每个组件。


更新:
我可能会完全放弃 XmlWriter 并改用 DomDocument。它更灵活,而且似乎表现更好(至少在我创建的粗略测试中)。

0 投票
9 回答
278 浏览

c# - 使用 Goto 增强 DRY 原则和代码清晰度:好主意吗?

我有一些结构如下的代码:

由于我讨厌复制代码,这是 goto 为数不多的有用应用程序之一,还是我可以使用更好的结构?

0 投票
2 回答
1278 浏览

c# - 什么是与 api 无关的顶点处理的良好代码结构?

目前正在使用 C# 开发 3D 媒体引擎,我遇到了一个小难题。我已经弄清楚了我的渲染循环,我得到了一个很棒的插件架构和内容管理系统,甚至还有一个材料管道都计划好了。然后引擎计划使用 DirectX 和 OpenGL(通过“渲染器”插件),以及两个 API 的可编程管道。

无论如何,本周初我开始研究用于处理顶点的引擎抽象层(我已经为此担心了好几个星期了)。正如你们中的一些人所知,图形 API 之间的顶点处理完全不相关或相同。好吧,有点相关;),但不一样。在 OpenGL 中处理顶点非常简单,您创建自定义顶点结构,将其发送到 GPU,然后让着色器处理其余部分。这对于灵活的图形管道来说是完美的,OpenGL 不需要知道每个顶点包含哪些元素。另一方面,DirectX 要求我们为每个顶点结构创建声明,然后将它们发送到 GPU。

问题是我不知道正在传递什么类型的顶点结构,我绝对希望避免创建涉及通过枚举和一些抽象的“VertexDeclaration”类声明顶点的每个元素的抽象层;这会导致一些问题:

1) 至少可以说获取顶点元素会很痛苦。我可以使用一些'VertexSemantic'并询问顶点'a - z'的位置,但是当为骨骼动画之类的东西处理大量顶点时,它可能会有很多开销。

2) 考虑到引擎的主要关注点是“新手”,用户不太友好。我希望用户能够创建自定义顶点和网格缓冲区,而无需声明大量对象,从而消耗宝贵的开发时间。

3)更多?

现在我可以对属性做一些事情,然后在 DirectX 渲染器中为顶点结构创建声明。例如,继续创建一些枚举:

现在我可以创建一个属性,用户可以将其应用于顶点结构中每个元素的“字段”:

自定义顶点结构的示例:

这会很好。在 DirectX 插件(渲染器)中,我可以只创建一个实用程序类,该类可以为每种结构类型创建语义,然后缓存数据,因此不必为每个顶点重新创建声明。

我什至可以向 ELementUsage 添加一个 NONE 枚举值,以便可以将自定义值用于任何含义......但它们只能在 OpenGL 中工作,因为 DirectX 要求您标记每个顶点......除非我有什么失踪。

我的问题:

有没有更好的方法来解决这个问题(除了使用属性)?有没有办法避免在 DirectX 中使用 VertexDeclarations?关于“我的”问题,您有什么不明白的地方吗?

编辑:

使用属性的一个问题是从每个顶点获取元素数据。假设我想获取网格缓冲区中每个顶点的位置。由于我使用属性,我不能只做'vertex.Position',我必须创建一个可以从顶点结构中提取字段引用的实用程序方法,例如'Utility.GetElement(vertex,ElementUsage.POSITION)' . 此方法需要使用反射首先找到属性,然后返回对字段值的引用。甚至(我认为)不可能设置该值?

另一种方法是创建一个 IElement 接口并实现每个元素(Positon、Normal 等)。该接口可以具有 Name 属性,我可以直接在继承的元素结构中返回它,就像 PositionElements 的 Name 属性只会返回“Positon”。

接下来,我可以将 IElement 数组保存在 Vertex 结构中,该结构包含 AddElement(IElement)、GetElement(string name)、GetElement(int index)、Insert、Replace 等方法。我将实现 DirectX 已知的所有元素,以便渲染器插件可以解析一个顶点结构来创建一个顶点声明数组。

问题是我不确定数组“[]”是否可以用作顶点元素数据。比如,数组包含哪些其他字节(如果有)会阻碍我将 Vertex 结构(包含 IElement 数组)直接传递给 DirectX,然后传递给 GPU?

以这种方式实现它对于我需要它来说绝对是完美的。另一个问题是 IElement(元素)的继承类型可以是一个类,还是元素值必须是值类型?

0 投票
3 回答
3752 浏览

python - 如何组织 Python 源代码文件?

我正在开发一个 Python App Engine 应用程序,我想将源代码文件的内容拆分Models.py为每个模型的单独文件,但我想将它们全部放在一个名为 Models 的文件夹中。问题是当我这样做时,我的应用程序再也找不到这些类了。我该怎么办?

这个问题不是关于 MVC而是另一个同名的问题是.

0 投票
5 回答
613 浏览

c++ - 使用 win32 构建 C++ 代码的任何提示?

我正在尝试通过使我的代码更具结构化和可读性来提高我的编码技能。我对 GUI 进行编码(感谢编辑)。我一直在阅读 Firefox 的开源代码以进行改进,但它使用 GTK+ 而不是很多 Win32。

在哪里可以找到用 Win32 编码的开源(专业)程序?

还有一件事:什么时候应该写伪代码?我以前从未这样做过,但我知道这很像概述一篇文章。应该在编码项目之前编写伪代码吗?还是只是功能?

谢谢

0 投票
2 回答
89 浏览

oop - “设置”类应该放在哪个包中?

我正在构建一个应用程序,但发现自己太容易创建新包而没有牢记项目的结构。

现在,我试图先在纸上重做整个项目结构。我正在使用具有公共属性的设置类,作为项目中其他几个类的设置进行访问。

现在,由于这个设置类适用于整个项目,我不确定它是否应该被打包,如果是的话,它应该存在于什么样的包中?还是应该在主应用程序类的根目录(默认包)中?

我一直在考虑把它放在我的 utils 包中,然后我又不认为它真的是一个实用程序。关于如何决定这种包结构的任何策略,例如设置类?