我想学习PHP并希望获得关于OOP和Procedural的想法.我阅读了一些关于OOP和Procedural的其他博客和教程,但我仍然无法理解这种方法.
OOP与程序
我真的想知道两者的代码差异,我对OOP的理解是你创建一个类似的,它可以访问.(我不知道如果那是正确的).
谢谢!
我已经在很长一段时间内对程序生成内容进行了大量的思考,而且我从未见过过多的程序音乐实验.我们有很棒的技术来生成模型,动画,纹理,但音乐仍然是完全静态的或简单的分层循环(例如孢子).
因此,我一直在考虑最佳的音乐生成技术,我很好奇其他人的想法.即使您之前没有考虑过,您认为哪种方法效果很好?请回答一种技巧,并尽可能包含示例.该技术可以使用现有数据或完全从头开始生成音乐,可能是某种输入(情绪,速度,等等).
有没有办法测试程序代码?我一直在看PHPUnit,这似乎是创建自动化测试的好方法.但是,它似乎面向面向对象的代码,是否有任何替代程序代码?
或者我应该在尝试测试网站之前将网站转换为面向对象?这可能需要一段时间,这是一个问题,因为我没有很多时间浪费.
谢谢,
丹尼尔.
在解释型编程语言中,例如PHP和JavaScript,采用面向对象方法而不是程序方法会产生什么影响?
具体而言,我正在寻找的是在创建Web应用程序和在过程和面向对象方法之间进行选择时要考虑的事项清单,以便不仅优化速度,还要优化可维护性.如果你知道任何进一步探讨这一问题的文章,那么引用的研究和测试用例也会有所帮助.
结论:在解释性语言中使用OO与Procedural进行比较时,性能是否真的有多大(如果有的话)?
oop procedural maintainability performance interpreted-language
在一种语言中(因为我现在正在使用它)PHP,它支持程序和面向对象的范例.
确定哪种范例最适合新项目是否有一个很好的经验法则?如果没有,你怎么能做出决定?
关于面向对象编程是否良好的争论很多.但是,在Php中使用OOP会更慢.使用程序编程和更快的速度以及速度更慢的OOP是一个很好的交易(因为每次页面加载时都必须启动类,大型网站将开始变慢).
更重要的是,将东西包装在一个类中并使用静态函数是否合适?或者更好的是只有许多具有前缀ex:wp_function()的函数.
自肯·佩林首次发明噪音以来,已有20多年了.有没有人设法制作一种速度更快的3D噪声发生器,其性能接近Perlin(程序性,自然的分组,减少条带,常规特征尺寸等)?
我正在尝试构建一个程序世界生成器,但目前Perlin并没有削减它.我承认我的实现并不是现在最好的,但如果我要重写它,我还是想知道是否有更好的算法可用.
所以在我总是习惯使用程序样式来编写php之前,例如:
mysqli_connect
Run Code Online (Sandbox Code Playgroud)
要么
mysqli_prepare
Run Code Online (Sandbox Code Playgroud)
现在我不小心开始混合它,我会做类似的事情:
mysqli_connect();
Run Code Online (Sandbox Code Playgroud)
这是程序样式,然后是下一个命令:
$mysqli->prepare();
Run Code Online (Sandbox Code Playgroud)
这是面向对象的风格.
我的代码仍然可以工作,但如果我看看php.net,只要它显示示例,整个示例是面向对象的或程序性的.所以我问我是否可以同时使用对象和程序的PHP代码.先感谢您!
考虑以下测试用例:
{ CompilerVersion = 21 }
procedure Global();
procedure Local();
begin
end;
type
TProcedure = procedure ();
var
Proc: TProcedure;
begin
Proc := Local; { E2094 Local procedure/function 'Local' assigned to procedure variable }
end;
Run Code Online (Sandbox Code Playgroud)
在第13行,编译器发出具有ERROR级别的消息,禁止所有这种本地过程使用的情况."官方"决议是将Local符号推广到外部范围(即:使其成为兄弟姐妹Global),这将对代码"结构性"产生负面影响.
我正在寻找以最优雅的方式规避它的方法,最好使编译器发出警告级别的消息.
这个问题与这里提出的问题非常相似.
我的问题是我有一张地图,如下所示:
此贴图使用2D Perlin噪声制作,然后运行创建的高度图,根据相应元素的高度或坡度为地形中的每个元素指定类型和颜色值,因此非常标准.地图数组是二维的,并且是屏幕尺寸的精确尺寸(像素每像素),所以在我的装备上1200到800代需要大约2秒.
现在放大突出显示的矩形:

显然,随着尺寸的增加,细节也会丢失.这就是问题所在.我想在运行中创建额外的细节,然后在玩家四处移动时将其写入磁盘(播放器只是一个限制在沿网格移动的点).我看到两种方法可以做到这一点,第一个想到我快速实现的方法:

这是从旧地形的采样元素创建的新偏置局部地形的放大视图,其由前一图像中的黄色网格空间(中心的左侧)突出显示.然而,这个系统需要进行大量的修改,例如,如果将一个单元向左和向上移动到黄色网格空间,到海滩区域,地形会完全改变:

因此,为了正常工作你需要做过多的,我想这个词就是插值,以便在玩家移动当地世界需要达到下一个的40个左右网格空间时创建平滑过渡在世界各地.这似乎很复杂,也很不优雅.
第二种方法是将原始地图的网格分解为较小的位,可能将每个方格除以4?我没有实现这一点,我不确定如何以一种实际上会增加细节的方式,但我认为这可能最终成为最佳解决方案.
关于我如何处理这个问题的任何想法?请记住,它必须是本地的和即时的.只是增加地图的分辨率是我想不惜一切代价避免的.
procedural ×10
php ×5
oop ×4
performance ×2
perlin-noise ×2
3d ×1
delphi ×1
fractals ×1
generative ×1
landscape ×1
noise ×1
object ×1
paradigms ×1
phpunit ×1
scope ×1
styles ×1
terrain ×1
testing ×1