是否存在区分标量和向量的命名约定?

时间:2017-12-30 15:31:43

标签: matlab naming-conventions

我找到了区分向量和矩阵的命名约定,但没有找到我认为非常有用的标量和向量。我会想到自己的但我认为首先要求已经存在的惯例是有帮助的,因为通常这些会比我自己提出的更好。

3 个答案:

答案 0 :(得分:4)

这些命名约定是个坏主意。

如果您需要强制执行有关变量大小的操作,请使用assert或其他一些机制实施。像这样的命名约定除了丑化您的代码并且可能误导您进入虚假的安全感之外什么都不做。

相反,请根据它们在代码中扮演的角色仔细命名变量。

顺便说一句,上面的内容与MATLAB无关:只是一般语言的良好实践。

答案 1 :(得分:2)

约定here似乎很普遍(大多数谷歌排名前10的结果为" Matlab命名约定"以某种形式返回),并且它不包含任何有关区分的具体内容变量类型。

但如文档中所述,变量通常命名为lowercaseWithCapitalizedWords。此外,它解释说,不应使用同名和复数(例如pointpoints),而应使用Array(例如pointArray)结束复数。

出于这种精神,您可以使用VectorScalar结束您的姓名。 E.g nBananasInTreeVector。这将遵循现有的约定尽可能接近并且是直观的(至少对我而言)。但正如Sam Roberts所说,如果你已经处于不能再记住变量类型的地步了,那么可能是时候将代码分解成更小的函数了。

答案 2 :(得分:1)

谷歌搜索一下,你会发现一些社区,大学等......为变量命名约定定义了自己的指导方针,但还没有确定黄金标准。

我不喜欢Java camel case表示法(例如myVariable)。我更喜欢使用lower case变量名,其中每个块由下划线分隔(例如my_variable)。

关于你的问题...我从来没有觉得需要在高矢量化语言中区分矢量和矩阵,其中维度通常是自动处理的。但我一直认为分别使用singularplural名词来区分标量和非标量变量很重要。例如:

values = [1 2 0 5 0 1 1 3];
value = 3;

通常,在数学符号中,我发现了大写矩阵和小写标量和向量。这可能是一个很好的起点。无论如何,在这种情况下你是一个自由的人,如果你不喜欢现有的约会,你最终可以定义自己的约定。例如:

data_m = [1 2; 3 4]; % _m suffix for matrices
data_v = [1 2 3 4]; % _v suffix for vectors
data_s = 1; % _s suffix for scalars

唯一重要的是你的会议必须遵守一些简单的标准。必须是:

  • 在整个代码中始终使用
  • reproductible
  • 易于理解(适合你)
  • 易于推断和复制(适用于操纵您代码的其他人)