问题标签 [paradigms]

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 投票
3 回答
7266 浏览

php - 如何使用程序代码库在 PHP 中编写单元测试?

我对单元测试的好处深信不疑,我想开始将这个概念应用到用 PHP 编写的大型现有代码库中。不到 10% 的代码是面向对象的。

我查看了几个单元测试框架(PHPUnit、SimpleTest 和 phpt)。但是,我还没有找到任何测试程序代码的示例。什么是适合我情况的最佳框架,是否有任何使用非 OOP 代码对 PHP 进行单元测试的示例?

0 投票
8 回答
5521 浏览

model-view-controller - MVC 哪里不好?

我一直在阅读这里的几个问题和有关 MVC 的各种文章,并且可以看到它甚至可以如何应用于 GUI 事件密集型应用程序,例如绘图应用程序。

任何人都可以举出 MVC 可能是一件坏事并且不明智地使用它的情况吗?

编辑:我在这里专门谈论 GUI 应用程序!

0 投票
2 回答
28970 浏览

multiple-inheritance - Mixins 与 Traits

Mixins 和 Traits 有什么区别?

根据 Wikipedia,Ruby 模块有点像特征。怎么会这样?

0 投票
7 回答
16918 浏览

inversion-of-control - 什么是组件驱动开发?

组件驱动开发术语开始被广泛使用,尤其是。与控制反转有关。

  1. 它是什么?
  2. 它解决了哪些问题?
  3. 什么时候合适,什么时候不合适?
0 投票
12 回答
859 浏览

oop - OOP 的重大挑战者

据我了解,OOP 是大型项目最常用的范例。我还知道大型系统的一些较小的子集使用其他范例(例如 SQL,它是声明性的),并且我还意识到在较低级别的计算 OOP 是不可行的。但在我看来,通常更高级别的解决方案几乎总是以 OOP 方式组合在一起。

是否存在真正的非 OOP 范式实际上是大规模解决方案的更好选择的场景?还是这些天闻所未闻?

自从我开始学习 CS 以来,我就一直想知道这一点;很容易让人觉得 OOP 是某种编程的必杀技,永远不会被超越。

0 投票
3 回答
182 浏览

variables - 使用基于 UI 的程序结构的任何成功?

您是否曾经根据您的用户界面部分构建您的源代码?例如,如果您的 UI 包含:

  1. 用于显示一些属性的 GridView
  2. 3D 渲染面板
  3. 用于选择活动工具的面板

,然后您或多或少地按以下方式命名和分组您的变量和函数:

您对此有何看法?这种架构可以长期工作吗?

PS。尽管此解决方案可能会让您想起 Front-ahead-design 愚人节的笑话http://thedailywtf.com/Articles/FrontAhead-Design.aspx我的问题是严肃的。

编辑

半年以来一直在维护和扩展这种代码。应用程序在主 .cs 文件中已增长到 3000 多行,大约 2000 行分散到较小的文件中(包含通用帮助函数和类)。代码的许多部分应该被概括并从主文件中取出,我一直在努力,但最终这并不重要。代码的结构和细分非常简单,通过它很容易导航。由于 UI 包含的主要组件少于 7 个,因此将整个设计一次融入您的脑海中没有问题。回到这段代码总是令人愉快的(在一些休息之后)并立即知道从哪里开始。

我想这个巨大的类似程序的结构在我的案例中起作用的原因之一是 c# 中 UI 编程的类似事件的性质。在大多数情况下,这些代码所做的就是实现不同类型的事件,这些事件确实特定于这个项目。尽管某些事件函数会立即变成几页长的怪物,但事件处理程序之间的耦合并不是那么紧密,因此之后重构和压缩它们变得更容易。这就是为什么我故意将泛化和重构留到以后,当其他项目开始需要该项目使用的相同部分的实现时。

PS 可以浏览 3000 行代码,我在 Visual Studio 中使用 FindNextSelection- 和 FindPrevSelection-macros。左键单击某个变量后,我按 F4 跳转到它的下一个实例,按 F2 跳转到前一个实例。也可以选择变量名称的一部分并在部分名称匹配之间跳转。如果没有这些捷径,我很早就会迷失方向:)

0 投票
2 回答
101 浏览

paradigms - 代理软件的高粒度自适应社会?

我在想我们的社会如何通过一群自由的人来激励行为,使这些人的工作满足整个社会的要求。例如,人们通过工作、赚钱并用这些钱来获得他人贡献的公平份额。它在大多数情况下都有效……但是您需要警察来防止人们偷窃等,这使人们可以不公平地分享他人的贡献而无需做出贡献。

马文·明斯基有一本书《思想社会》,它可能沿着这些方向发展了一些想法。他们是神经网络中关于紧急行为、元胞自动机等的较早的想法。最近还有关于合作代理等的工作。

然而,我认为没有人设计过一个大型的高粒度代理系统,旨在作为一个整体系统工作和发展(即警察等稳态的不同角色)。你知道这些方面的任何工作吗?

0 投票
5 回答
1236 浏览

oop - AOP...我应该忘记 OOP 吗?

我浏览了在线文档,阅读了 wiki 条目、帖子和博客,但我仍然感到困惑。

  • 简而言之,什么是面向方面的编程
  • 它比面向对象编程更好吗?我应该忘记 OOP 吗?
  • 如果没有,我怎么知道何时使用其中一个?两者的主要区别是什么?
  • 我可以将一个重构为另一个吗?

我一直是一个OO人,我想知道我是否需要叛国。

说真的,我很快就要开始一个新项目,我想在一开始就做出正确的选择。

0 投票
1 回答
268 浏览

oop - 具有重 OO 约束的编程范式

嘿。我记得在某处读过关于编程范式的文章,该范式对 OO 有非常严格的限制。它完全禁止嵌套 if 和 else,避免全局命名空间中与类无关的函数,以及类似的东西。据说挺有名的 有谁知道它是怎么称呼的?谢谢。

我举个例子。这不应该是一个完全严肃的范例——它只是对改进“OO 风格”的严格限制。例如,一个 FizzBu​​zz 程序,您将创建一个从整数继承并具有方法“representMyself”的对象,以及一个对象“FizzBu​​zzNumbersRange”,该对象使用方法“representAll”或其他方法保存 FizzBu​​zz 数字数组。等等等等

0 投票
5 回答
918 浏览

perl - 学习编程范式的能力会受到文化或母语语法的影响吗?

众所周知,不同的人对不同的编程范式有不同的能力(例如,有些人在学习非过程语言,尤其是函数式语言方面有困难。有些人在理解指针方面有困难 - 请参阅 Joel Spolsky 的博客以了解这一点。有些人难以掌握递归)。

我最近阅读了一项研究,该研究着眼于某人的母语语法如何影响他们学习数学的速度。现在找不到那篇文章,但快速谷歌搜索找到了这个参考。

这让我想知道某人的母语文化或第一语言是否会影响他们对各种编程范式的能力。我对积极的影响更加好奇——例如,一些使某人更容易/更快地学习特定范式的特征,例如非常面向递归的母语语法。

需要明确的是,我正在寻找文化/语言语法如何影响同一个人对各种范式的能力之间的差异,而不是它如何影响不同人之间对编程的整体能力。

重要提示:我感兴趣的唯一答案要么是对科学研究的引用,要么是来自非常熟悉特定文化/语言的人的个人观察,包括他们自己的经验。

例如,除非您说中文或与大量以中文为母语的程序员广泛合作,否则我对您认为中文作为您的第一语言如何影响任何事情的看法不感兴趣。

我同意您的猜测不是基于科学研究,但请务必提供您对观察的合理原因的推理。

我对抨击文化不感兴趣(任何此类赞扬都将被删除或标记为删除)。

我对文化建设也不是特别感兴趣——我们都知道莱纳斯来自芬兰,俄罗斯方块是在俄罗斯写的,拉里沃尔是美国人。任何文化/国家都可以在任何学科中产生聪明的头脑。我对平均值感兴趣。