哪个指标可以帮助表明我有程序代码而不是面向对象的代码?我想有一组简单的指标,它们很有可能表明,分析的代码包含程序事务脚本和贫血域模型,而不是遵循健全的面向对象设计原则.
对于任何有用的衡量指标和工具都会感到满意.
谢谢,托马斯!
对象关系映射,ORM是必须在面向对象编程语言中实现并使用关系数据库的所有应用程序中解决的问题.
但是如果你使用结构来映射C中的关系数据库,问题是不一样的?函数式编程语言中的元组/记录?或者我错过了一些东西,因为我没有用C或函数式语言编写数据库应用程序.
oop orm paradigms procedural-programming functional-programming
我有一个非常简单的问题,我无法在互联网上的任何地方找到答案.
所以,我的问题是,在程序编程中,代码在代码段中,进入只读存储区.变量在堆栈或堆上.
但是OOP说对象是在内存中创建的.那么,是否意味着将函数写入R/W内存区域?
并且,Os是否必须支持一些内置的OOP程序?例如,如果OS doesent允许读取只读代码部分之外的指令.谢谢.
假设我们有一个包含不同元素的绘图程序,例如圆形,矩形,三角形等.不同种类的对象都需要类似的功能,比如draw()展示自己.
我想知道程序员如何处理现在通常通过多态解决的问题,即通过一组不相同的元素并调用不同对象的通用功能.
想到的一种方法是使用一个带有函数指针的结构,该函数指针指向适当的函数(或函数指针数组中的索引)以及指向实际实例的void指针,并将指针转换为正确的类型在功能中.但这就是我 - 一个对这个问题毫无头绪的人会这样做.
我确实意识到这可能是一个愚蠢的问题,但由于我在"过去"的日子里没有出现过,我真的很想知道这个问题是如何解决的.在程序编程中使用了什么样的方法并且它具有性能优势,因为我们都知道多态性即使在像C++这样的快速语言中也有开销,这是由于虚方法查找.
如果我有一个函数应该在某些条件下执行一个动作,而是返回null,这更干净:
def func():
if not condition:
return None
[...]
return asd
Run Code Online (Sandbox Code Playgroud)
要么
def func():
if condition:
[...]
value = asd
else:
value = None
return value
Run Code Online (Sandbox Code Playgroud)
我已经阅读了每个函数应该有一个返回点的范例.另一方面,python的zen表示flat比嵌套好,后来的版本在整个动作代码上面添加了一个嵌套级别(标记为[...]).
还请记住,条件可能更复杂,例如,添加多个嵌套级别.
我说我在c语言编程方面有中级经验,但是我从来没有见过这个语法用来创建函数.这让我想起了JQuery事件的语法.总的来说,我想详细解释这是什么以及替代语法可能是什么.我可以更好地阅读更多有关此内容的链接也很棒.
// Set handlers to manage the elements inside the Window
window_set_window_handlers(s_main_window, (WindowHandlers) {
.load = main_window_load,
.unload = main_window_unload
});
Run Code Online (Sandbox Code Playgroud)
这是Pebble WatchApp教程的代码片段.
我对数据抽象的理解是隐藏用户的技术细节并仅显示必要的细节.因此,数据抽象是一种OOP功能.我的问题是:C是否也支持数据抽象?
如果是这样,为什么数据抽象是面向对象的编程语言特性而不是过程语言特性?
如果我的问题的答案是否定的,那么C中的结构,枚举呢?他们还隐藏了用户的详细信息.
作为一名经常靠近硬件工作的电气工程师(编写C),我一直对从任何给定的计算机体系结构中提取最大性能感兴趣.我一直对竞争架构性能分析感兴趣.
我有兴趣猜测是否有必要进行轻度到中度的更改,例如分支预测实现或CPU上的高速缓存大小,这些可能在像Rust这样的并发运行时比在C等过程运行时更高效.分支预测是在分析程序代码的研究论文中得出的概括上实现的.我想知道并发抽象是否会为运行时添加一个重要的工作集,从而对现有的预测算法产生负面影响.例如,在for循环中进行预测是一回事,但是当分支的目标始终是内存的一些新部分(图形,文本等)时,它将始终是缓存未命中,并且永远不会有分支它的历史 - 因为它们都没有碰过它.
这可能是一个愚蠢的问题,因为内容虽然可能总是在RAM中,但会分支到比它使用的数量级更少(一旦它被加载到缓存中)......但仍然存在应该是存储在过程运行时的高速缓存和分支预测变量中的上下文的可观察时间边界,它将在更加并行化的环境中表现为抽象边界.
-
所以我想知道......
是否遵守了这些界限?
哪些研究论文对此进行了分析?
CPU架构是否足够通用,以至于高度并发的语言不会遇到现代CPU架构中可能存在的固有程序偏差?
我正在从MSSQL过渡到PostgreSQL,并且仍在研究过程编程的语法。这个想法是创建一个将表作为输入/参数的函数,SELECT针对该输入表执行一系列语句(无临时表;这些SELECT语句将使用CTE执行),以及RETURN最终表。
输入表将非常简单:
Col_1 Col_2 Col_3
----------------------------
2 5 12
Run Code Online (Sandbox Code Playgroud)
我想使用每个字段中输入表,以计算一个数字(在本例中,求和Col_1,Col_2和Col_3),将其追加到输入表,并创建一个输出表显示为这样的:
Col 1 Col_2 Col_3 Col_4
---------------------------------------
2 5 12 19
Run Code Online (Sandbox Code Playgroud)
我的代码尝试:
CREATE OR REPLACE FUNCTION summing_function(input_table)
RETURNS output_table(Col_1 INT, Col_2 INT, Col_3 INT, Col_4 INT) AS
$$
SELECT
i.*
, i."Col_1" + i."Col_2" + i."Col_3" as sum
INTO output_table
FROM input_table i
$$
LANGUAGE SQL;
Run Code Online (Sandbox Code Playgroud)
显然,美元报价之间的所有内容都不完整/错误。美元报价之间的正确postgreSQL语法是什么?
如果类方法不依赖于类的状态,那么它可以是静态的.在这种情况下,使这些方法保持静态是好还是坏?
(标记为C#,但可能适用于许多OO语言,其中方法必须是类成员.)
oop ×6
c ×3
function ×2
c# ×1
coding-style ×1
metrics ×1
orm ×1
paradigms ×1
pebble-sdk ×1
pebble-watch ×1
plpgsql ×1
polymorphism ×1
postgresql ×1
python ×1
refactoring ×1
rust ×1
static ×1