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

boolean - OZ 编程语言:布尔守卫

我正在学校学习一门要求我们使用莫扎特编程接口的科目。到目前为止,我并没有想太多。但无论如何,这是一个问题:

在 OZ 中,您只能分配一次变量(如果我是对的,它不能被重新分配,而是在当前范围内重新声明?)。我遇到了一个问题,我想使用布尔值守卫,但 OZ 不会让我这样做。我有电流:

有谁知道如何做到这一点?谢谢你的时间。

0 投票
4 回答
2647 浏览

algorithm - Diamond-Square 算法的平滑问题

我正在使用菱形正方形算法来生成随机地形。它工作得很好,除了我让这些大锥形形状伸出或进入地形。问题似乎是时不时地设置一个点太高或太低。

这是问题的图片
截屏

当我将平滑度设置得很高时可以更好地看到
截图特写

这是我的代码 -

0 投票
0 回答
382 浏览

php - 生成数千个对象类型时的 PHP OO 性能

我一直在阅读Matt Zandstra PHP Object Oriented Designs and Patterns并且非常喜欢一个想法,但想知道当您创建数百甚至数千个它们时它如何影响 PHP 性能。

您有一张由数千种不同类型的瓷砖组成的地图(如文明中)。您有一个通用图块,然后其他图块可能是 10 种不同类型之一。

他基本上是在说您创建一个基本图块,然后让其他图块继承以下属性:

您拥有构成此地图的所有不同类型的地形(在第一代时),然后循环通过数据库进行构建,如下所示:

所以我想我的问题是......这与性能有什么关系?PHP 是将每个图块存储为一个大对象还是仅包含对对象定义的引用?

我只是在想,当它的地图充满了 1,000 个正方形并且我正在循环并做其他有趣的事情时,它会不会像我一直认为的面向对象编程非常庞大一样慢得疯狂。

让它程序化然后遍历方块并运行函数来决定这些会发生什么会更快吗?

只是想知道使用这样的 OO 设计/模式时性能如何?

编辑:我所说的面向对象和程序循环的意思是:

如您所见,OO 方法真的很有意义,您正在用瓦片填充地图,但是对于 2 座山,是否有任何重复,或者当您调用它时,它是否只是引用类蓝图来说明它的作用.

我想它只是调用构造方法(如果有的话),然后当你需要它们时你手头有它的方法,所以它很快对吧?

谢谢, 多姆

0 投票
3 回答
2313 浏览

functional-programming - 有状态编程的优点?

我想知道无状态编程的好处,发现有人分享了我的问题: 无状态编程的优势?

不过,当我阅读答案时,这让我对相反的问题感到好奇。有状态编程的优点是什么?最近似乎有很多关注无状态代码,但我对趋势持谨慎态度。

似乎有状态(即命令式)编程可能比无状态(即函数式)编程更适合某些场景,我希望能够更好地识别哪些问题可以通过有状态编程来解决。

0 投票
2 回答
152 浏览

sql-server - 游标真的是“正确”的选择吗?

有时,在处理数据时,过程式编程是绝对无法避免的。

我目前正在优化一些遗留代码。它使用一个游标、63 对IF/ELSE语句和BEGIN/END等。我曾希望对游标进行逆向工程并使其成为一个程序过程。现在我已经完成了对算法的解码,我意识到了。. . 哎呀...它必须是程序性的,因为对记录所做的每个选择都取决于对所有先前记录的过程的结果。

所以现在我被撕裂了......还有其他选择可以将程序代码与 SQL Server 处理(CLR SP、UDF 等)混合。我非常相信使用正确的工具来完成这项工作,所以我倾向于为此制作一个 .NET CLR SP。但是稍微简化一下光标,但仍然保留光标会更快,更“容易” 。

大家怎么看?既然我们可以通过 SQL Server 访问 .NET 模块,那么使用游标是否合适(在我看来,这从一开始就是一个杂物/解决方法)。

0 投票
3 回答
159 浏览

c - 重构过程代码时处理错误

我收到了一些基本上由一个大的 main() 函数组成的 C 代码。我现在正在尝试将该方法展开为更小的函数,以使代码的意图更加清晰。不过,我遇到了一些麻烦:

我可以确定此代码功能中的 4 个主要问题:

  1. 验证 args 的数量是否正确。
  2. 从命令行参数获取端口。
  3. 调用信号(SIGPIPE,SIG_IGN)。
  4. 实际上尝试与套接字建立连接。

尝试将其重构为小函数时的问题主要与错误处理有关。例如,r 试图提取 1. 的逻辑看起来像这样:

并称它是这样的

这实际上并没有那么糟糕。现在,对于套接字,这将更加麻烦,因为两者都sockfd需要s_addr返回,加上状态返回值:

哪种方式违背了我的主要方法尽可能简单明了的目的。当然,我可以使用文件中的全局变量,.c但这似乎不是一个好主意。

您通常如何在 C 中处理此类事情?

0 投票
4 回答
2548 浏览

php - PHP 站点中是否需要 OOP,我不能将它的概念应用到程序代码中......蛋糕吃掉吗?

我知道有无数关于 OOP 和过程之间的区别、何时使用以及好处是否超过额外开销、学习语法、继承混淆等问题。我发现的大部分内容往往只是讨论差异和好处而不是它是否有必要。

我通常根据我正在做的事情在同一个站点脚本中混合 OOP 和程序。我对 OOP 还是很陌生,实际上我很喜欢 OOP 的模块化性质及其带来的好处,即使有一点点开销。不过,继承有时会让人有些困惑!

对我来说,主要的好处似乎只是更好地组织和保护代码。其中,开发人员或开发人员团队是唯一欣赏它的人。我想有一个部署速度的例子,但不会说大多数网站都有很多,除非你继承了别人的鸟巢:)

但是,在大多数 PHP 应用程序中是否需要 OOP,尤其是当执行速度是大多数网站的圣杯时?好的,所以毫秒开销不会真正注意到,除非是一个大量使用的网站,但作为电子音乐的粉丝,速度才是王道!

我在游戏和实时云软件等复杂事物中使用 OOP,但是静态网站?甚至是数据库重的?

有没有人有从 OOP 中受益的典型站点的真实示例,为什么?

假设这两种情况都结构良好,那么像 ebay 或 monster.co.uk 这样的重度使用网站会从 OOP 或程序 () 的速度改进中受益更多吗?为什么?

至少在程序上,您可以从上到下进行调试,而不必在脚本中反复检查类、扩展和接口。

我不能用清晰的 MVC 和注释良好的代码来应用 OOP 模块化思维吗?

例如,我将可重用函数保存在包含文件中,并将相关函数组合在一起。我所要做的就是像包含类文件一样包含文件并调用函数。如果函数需要改变,它只在一个地方改变,类似于一个类。

并且在程序中已经存在一种继承,而不必跳过箍来声明它。您没有相同级别的控制,但它可以快速完成工作。

您甚至可以通过将父函数中的函数分组并使用选择器函数来访问它们来模拟一个类。不过,这有点远!

此外,据我所知,当调用函数时,它会保留在内存中,从而使后续使用更快。而对于 OOP,您必须创建不同方法的两个对象才能对两个不同的变量使用相同的函数。如我错了请纠正我。

当我可以直接使用程序引用值时,为什么要创建一个对象并使用一种方法来“获取”一个值?

到目前为止做得很好,没有意识到我输入了这么多。无论如何,在我进一步离题之前,我将在这里结束它。

因此,如果您有任何从 OOP 或程序中受益的实际站点或站点部分的良好示例,我将非常感谢您的清晰说明。

0 投票
2 回答
205 浏览

oop - 如何将 Procedural 项目移植到 OO 项目中

我有一个小型 PHP 项目(大约 3000 行),我需要为它制作一个 BASIC UML 模型,从使用图、序列图和状态图的案例开始,可能是类图,并可能用协作图对其进行扩展。

我是 UML 建模的新手,这是我第一次从实现中制作模型而不是相反(不是很有用,除非您从事逆向工程,但无论如何,这是一个任务)

现在,我应该如何解决这个问题?如果我的项目有 OO 实现,一些 UML 工具可以让我的生活变得非常轻松,但事实并非如此,所以我想知道我是否应该将我的项目重写为 OO 以及如何去做(我的意思是,有一些标准的基本我应该遵循的指导方针或程序?),或者我是否应该按原样制作项目模型(在这种情况下,哪种建模工具是最好的)。

另外我的项目是在 Eclipse IDE 上编写的,有人知道它的任何插件来帮助我完成这个 UML 建模任务吗?

0 投票
3 回答
742 浏览

oop - API——CFC 与 cfinclude

因此,当涉及到我们的网站时,我所工作的公司的做法非常杂乱无章。我们所有的脚本都是包含 cfincludes 的程序化脚本。我一直想将它组织成一个内部 API,其他 Web 开发人员将使用它来做任何事情(因为进行更改让我通过并找到需要更新更改的每个其他实例)。

我终于有一个活生生的例子,并展示了老板。它遵循我认为的正常方法(来自我的谷歌搜索)。服务层 > Gateway & DAO > Beans,带有一些工厂来帮助创建对象。它运行良好,完全符合我的要求。他对此印象深刻,并同意我们需要修饰我们的代码并更好地组织它,但没有看到使用这种面向对象的 API 调用大量 cfinclude 列表来完成相同事情的优势。本质上,从他解释 cfincludes 的方式来看,它的工作方式与方法调用相同。

他询问了我的方法与此 cfinclude 相比的优势,而在我的一生中,除了将类似的数据全部分组到一个对象中之外,我真的找不到任何明显的优势。还有什么其他的,或者更确切地说,使用 cfinclude 方法可能是有利的?

0 投票
4 回答
311 浏览

c++ - C 方法有时比 C++ 方法有优势吗?

最近我脑子里一直在思考这个问题。我们大多数人都清楚,在 中C,为了创建一个结构,通常在它前面加上 atypedef以避免struct在引用对象之前调用关键字。当然,C 仅限于结构而不是类。为了弥补这一点,C 倾向于使用专用于结构的全局函数来创建面向对象的方法

例如:

比。

AnotherStructstruct当在函数中声明该类型的对象时,它之前必须有前缀关键字。例如:

在面向对象的方法方面:

这些函数在没有包装器的情况下很容易实现——我只是为了举例而使用它们。我的观点是,鉴于您已经可以在 C++ 中创建一个结构,它不需要在typedef没有关键字的情况下声明struct,并且使用与这些结构相关的非封装函数用于面向对象的方法,我很想知道是否在 C++ 中使用 C 编码方法有任何优点,其中包括使用静态全局函数作为私有成员函数,以及将返回指向对象的指针的全局函数构造函数。

这主要是出于好奇,因为有时我觉得采用 C 方法只是为了采用它,但这可能只是一种优先考虑。