问题标签 [procedural-programming]

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 投票
9 回答
57148 浏览

programming-languages - 真正理解程序和功能之间的区别

我真的很难理解过程函数式编程范式之间的区别。

以下是 Wikipedia 关于函数式编程的条目的前两段:

在计算机科学中,函数式编程是一种编程范式,它将计算视为对数学函数的评估,并避免了状态和可变数据。它强调函数的应用,与强调状态变化的命令式编程风格相反。函数式编程起源于 lambda 演算,这是 1930 年代开发的一种形式系统,用于研究函数定义、函数应用和递归。许多函数式编程语言可以看作是对 lambda 演算的阐述。

在实践中,数学函数与命令式编程中使用的“函数”概念之间的区别在于,命令式函数可能会产生副作用,从而改变程序状态的值。正因为如此,它们缺乏引用透明性,即相同的语言表达式可以在不同的时间根据执行程序的状态产生不同的值。相反,在函数式代码中,函数的输出值仅取决于输入到函数的参数,因此 f使用相同的参数值调用函数两次x将产生相同的结果f(x)两次。消除副作用可以更容易理解和预测程序的行为,这是开发函数式编程的关键动机之一。

在第 2 段中说

相反,在函数式代码中,函数的输出值仅取决于输入到函数的参数,因此f使用相同的参数值调用函数两次x将产生相同的结果f(x)

这不是过程编程的完全相同的情况吗?

在程序性与功能性方面应该寻找什么脱颖而出?

0 投票
7 回答
13189 浏览

php - 函数定义顺序重要吗?

在下面的脚本中,声明项目的顺序是否重要?

例如,如果 add_action 指向一个尚未定义的函数?函数声明是否重要还是应该总是在调用它的任何代码之前?

0 投票
5 回答
966 浏览

dependency-injection - 过程编程的依赖注入

假设我决定用 C 或任何其他过程编程语言编写一个大型应用程序。它具有如下所示的调用依赖函数:

显然,对叶子函数 C11、C12、C21 和 C22 进行单元测试非常容易:设置输入、调用函数、断言输出。

但是,为 B1、B2 和 A 启用良好的单元测试的正确策略是什么?

依赖注入是否会建议B1(并且B2也)声明如下?

但是,如果我有多层调用,该策略似乎无法扩展。想象一下声明的A样子:

呸!一定有更好的方法。

有时,我觉得 DI 和其他旨在促进模块化和易于维护的类似模式实际上阻碍了代码的清晰度,并使应该直接编码的内容变得复杂,变成了无意义的抽象和复杂的间接。

C 语言的大型软件项目,如 Perl 和 Ruby,如何处理单元测试?

0 投票
2 回答
2011 浏览

unit-testing - 过程或函数式编程语言中的单元测试

我已经问了一个相关的问题,但我没有得到满意的答案。所以,也许我应该换个方式问它。

像 Perl 或 Ruby 甚至 Linux 内核这样的大型 C 项目如何处理单元测试?甚至在任何功能语言中?

我熟悉用于 OOP 中的测试的依赖注入抽象工厂,但我没有看到非 OOP 中的可扩展和可管理的等效性。例如,在 C 或 Haskell 中,函数层之上会有层,较高层隐式调用较低层。我如何找到接缝来测试一个代码单元而不是它的所有依赖项?

避免所有接缝需要的一种方法是将调用依赖图的深度保持在非常低的水平。可以这么说,水平编码而不是垂直编码。在“叶子”函数中保留尽可能多的应用程序逻辑;并确保“节点”函数除了将数据连接到其他节点/叶函数之外没有任何工作。然后,只测试“叶子”功能;将“节点”功能留给集成测试。这种方法有效吗?

今天最大的软件仍然是用过程语言编写的。必须采用一些有效的方法。具有良好单元测试的程序语言大型软件经验的人可以发表评论吗?

0 投票
8 回答
6045 浏览

java - 我的代码是否过于程序化?

最近有人看了我的代码并评论说它太程序化了。需要明确的是,他们看到的代码并不多——只是一个清楚地概述了应用程序中所采取的逻辑步骤的部分。

然后这些不同的方法会创建一大堆不同的对象,并根据需要在这些对象上调用各种方法。

我的问题是 - 是否有一段代码清楚地驱动您的应用程序,例如这个,表明程序编程,如果是这样,那么实现相同结果的更 OO 方式是什么?

非常感谢所有评论!

0 投票
3 回答
555 浏览

oop - 是否可以仅使用过程和全局变量来实现面向对象编程的所有 4 个原则?

这是一个困扰我很久的问题。

是否可以仅使用过程和全局变量在 C 等非 OO 语言中实现多态性和继承等 OOP 原则?为此,我们是否需要从较低级别的抽象中进行特殊处理?

这个问题有任何意义吗?!

0 投票
4 回答
320 浏览

php - 面向过程程序员的 OOP

在过去的 10 年里,我一直与几个用 PHP 编写的程序应用程序联系在一起。其中两个很快就会消失,我需要跟上 OOP 技术的步伐。

是否有为熟练的程序编码人员编写的好的教程或书籍?熟练地,我大量使用函数,并通过不同的包含文件对函数进行分类。我喜欢干净、易于遵循的代码(并相应地记录)。尽管经验告诉我将代码分解为可重用的部分(更易于维护和更新),但我的大脑已经被训练成程序化思考。我了解 OOP 是基于相同的想法,但我需要一些帮助来克服学习这种新的(对我而言)技术的障碍。

0 投票
1 回答
2699 浏览

android - 从安卓手机上传图片到 Asp.net 服务器

我搜索了许多链接,但无法找到解决方案。因为我对编码 Asp.net 没有太多想法。任何人都可以通过示例将图像从 imageview 上传到 Asp.net 服务器的过程帮助我。

提前致谢

0 投票
1 回答
300 浏览

javascript - 将地牢算法从 java 转换为 javascript 不起作用

我正在尝试将这个地牢算法从 java 转换为 javascript,但是,我的脚本在 70% 的时间内都有效。当它工作时,问题是:房间的一侧缺少一堵墙,有些房间无法以任何方式进入。当它不起作用时,它会陷入无限循环。

房间少了一面

房间少了一面

房间少了一面

(抱歉图像很小,我刚刚更新了我的 jfiddle 并且输出更大http://jsfiddle.net/gUmH7/1/

我猜makeRoom() 是问题所在,如果不是,肯定是createDungeon()。所以当算法工作时,在第一次 makeRoom() 调用之后,我在我的 dungeon_map 数组中得到了一些 1 和 2,其中 1 是棕色墙壁,2 是黄色地板。当算法不起作用时,dungeon_map 数组中没有任何 1 或 2,从而导致无限循环。

我很确定 java 代码可以工作,因为这里有一个输出 online。这是原来的。

我的代码和其他代码之间唯一不同的是 getRand() 方法,我很确定它只是返回传入的最小值和最大值之间的一个数字。

我的整个代码:

jfiddle

0 投票
1 回答
2039 浏览

java - 想要一个简单的代码来获取州名和城市名取决于选择

我对android和java都是新手。我正在开发一个简单的应用程序,其中包含由微调器选择的国家、州和城市。现在考虑在选择国家(印度)时,我只需要获得印度的州。然后在选择任何州(安得拉邦)时,AP 的城市应显示在下一个微调器中。任何人都可以建议我一些示例代码。

提前致谢