如何命名单个输出函数?

10次浏览(过去30天)
马克斯
马克斯 2021年2月5日
matlab样式书建议将单个输出函数命名为它们的输出,这与MALTAB函数是一致的…
我不太喜欢这个,因为我想我的函数的输出变量被调用像输出…
如何命名单个输出或单个输出函数?
我可能会用
函数result = calculateResult(输入)
D .计算结果
结束
虽然我不太喜欢它

接受的答案

1月
1月 2021年2月6日
我使用CamelCase函数来减少与Matlab工具箱函数碰撞的危险。对于经常使用的函数,紧凑的名称很好。开头的“Calculate…”会引入过多的冗余,因为大多数函数都计算一些东西。比较:
CalculateMean(CalculateSin(CalculateLinSpace(0,2 *CalculatePI, 1000)))
Mean (sin(linspace(0,2 *pi, 1000)))
如何调用函数的输出并不重要,重要的是何时调用函数。这样函数的代码就不可见,命名也不影响可用性。
有时,我使用过程的名称,有时使用输出的名称,有时添加初始的“Set”,“Get”,“Write”,“Read”等。不同方法的例子:
MD5 = GetMD5(文件)
MD5 = MD5Hash(文件)
Hash = MD5(文件)
...
选择函数和变量名称的一些固定样式是有用的。但只要你保持概述,名字不要太长或太神秘,这仍然是一个品味的问题。那么,在命名约定上花费时间和精力就是浪费优化。
另一方面,我对所有变量的名称都使用约定:
  • sulkingCamelCase内部使用的变量,CamelCase的onput和输出。
  • 所有的名字都是单数,后面跟着“List”,“Vec”等,如果重要的话,它们是数组。
  • 逻辑标志以“is…”或“do…”开头。
  • “n…”是一个元素或对象的数量,“i…”是一个循环计数器。
这减少了在代码中任何地方混淆“nFile”和“nFiles”的机会。与此相反,我认为混淆函数名的问题较少。
1评论
马克斯
马克斯 2021年2月6日
谢谢你!
我想我不会再使用calculate了,并且在计算函数中为相同的东西考虑一个不同的名称……

登录评论。

更多答案(2)

madhan拉维
madhan拉维 2021年2月5日
Result = @ in.^2;
结果=结果(1:10)
结果= 1×10
1 49 16 25 36 49 64 81 100
4评论
马克斯
马克斯 2021年2月6日
嗨,我可能没有说清楚,但我指的是函数中的变量名…
的函数声明
函数mean = mean(y)
不可能。
关于你上次的发言,我总是这样写:
X = result();
当调用类上没有输入的方法时,我也这样做。

登录评论。


史蒂文的主
史蒂文的主 2021年2月6日
函数result = calculateResult(输入)
D .计算结果
结束
我对此有一些反馈。
首先,标识符输入 在MATLAB中已经有了意义 所以我不会用它作为变量名。
其次,我不喜欢这个函数名,因为它太乏味了。它没有提供函数做什么的提示。“计算”和“结果”在这个上下文中都是普通的填充词。在我看来,阅读函数的名称应该让我对函数的实际功能有一个合理的了解,理想情况下,我不需要阅读它的帮助文本或文档,除非我需要关于函数的一些具体细微差别的细节。[是的,我知道并非MathWorks产品中的所有函数都满足这一点。下载188bet金宝搏我在描述中确实用了"理想"这个词。另外,在过去的几十年里,我们学到了很多关于软件设计的知识。
把它想象成汉堡王、肯德基或必胜客。即使你以前从未听说过这些企业,你可能只从名字就能猜出他们是什么(餐馆)和他们卖什么(分别是汉堡、炸鸡和披萨)。作为一个MATLAB示例,考虑 islocalmax 函数。在没有阅读该函数的帮助文本或文档的情况下,您会猜它是做什么的?
第三,函数中输出变量的名称并不重要。理想情况下是函数的用户 不应该在意 香肠是怎么做的,只是他们点的香肠就是他们收到的香肠。( 卫生检查员 应该关心,但在这个比喻中,卫生检查员是由 白盒测试 你的功能。即使是卫生检查员可能也不应该关心你给厨房里的设备取什么绰号,除非你把绞肉机叫做“沙门氏菌工厂”。没有什么能与之相提并论 函数中的变量 的名称赋值的第一个输出 在用户代码中将输出分配给它的变量 .(使用calculateResult函数)
y = calculateResult(1:10)
计算结果(1:10)
qwerty{1} = calculateResult(1:10)
假设调用者在上面的一个调用了sin
z = sin(calculateResult(1:10))% calculateResult的输出存储在一个未命名的临时对象中
4评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年2月7日
我曾见过一些编程语言,其中返回值的方法是赋值给与函数同名的变量。但是,该名称不能在程序中作为变量使用,也不能被索引。举个例子,它的等价是有效的
Mean (double x) {Mean = sum(x)./numel(x);}
然而,这样的语言也有挑战。例如,
Mean (double x) {Mean = 0;Mean = Mean + Mean (1) + Mean (x./2);}
平均值(1)是指数吗?是函数求值吗?
Mean (double x) {memzero(&mean, sizeof(Mean));}
memzero是传递函数的输出变量的地址,还是传递函数的指针?

登录评论。

标签

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!