人在仿真软件万博1manbetx

万博1manbetxSimulink &基于模型的设计

关于命名约定的几点思考

有一天,我在给MathWorks新聘的一个实验室教书。在实验室里,我让参与者编程乐高机器人机器人使用仿真软件万博1manbetx.我在这个实验室看到的一件事是人们经常很难问这样的问题:

  • 这个信号的单位是什么?成弧度或角度?
  • 这里0.15的值是什么意思
  • 那个信号是什么?速度还是位置?

答案是一个好的命名约定。

为了描述定义命名惯例时需要考虑的重要事情,我很高兴地欢迎博客嘉宾迈克尔·伯克.成为MathWorks咨询服务在团队中,Michael曾在多个项目中与多个客户合作,并见过许多不同的命名约定。

什么是命名约定?

命名约定是提供模型和生成代码中变量信息的一种方法。如果做得好,它们很容易理解和合作。然而,我们都遇到过项目使用老神命名规范——无法发音,无法辨认,也不可能记住。

那么,什么才是好的命名约定呢?就像冰淇淋的口味一样,这有点难吃,但就像好的冰淇淋一样,有众所周知的好原料。对于命名约定,信息是很好的组成部分。

成分

人:

  • 解释:使用“who”,你是在告诉这个变量用于什么;它应该很快让用户/读者知道他是否需要审查这些内容。
  • 例子:马蹄铁,马蹄铁(使用缩写)
  • 冰淇淋相当于:这是最重要的部分,这是高脂奶油。

(单位):

  • 解释:使用物理单位(kg, m, watts)或软件构造(标志,计数器,状态),单位解释了数据所扮演的角色。
  • 例子:HorseSpeedFurlongsPerFortnight, HorseSpFpf
  • 冰淇淋相当于:盐,你忘了它在里面但它能让一切变得更好。

我来自哪里?

  • 解释:数据的“where”部分表示数据被写入或最初定义的位置。这有助于对数据进行分区。
  • 例子:HorseSpeedRaceTrackFurlongsPerFortnight, HorseSpFpfRacet
  • 冰淇淋相当于:使调试更容易,所以它就像糖,甜。

角色:

  • 解释:该角色将数据定义为信号、常量或可调参数。
  • 例子:ConstHorseSpeedRaceTrackFurlongsPerFortnight, conHorseSpFpfRacet
  • 冰淇淋相当于:你的基本口味是巧克力或香草

数据类型:

  • 解释:在变量名中包含数据类型(例如double, uint8)并不少见。除了逻辑变量之外,这通常是一个糟糕的设计决策,应该避免,因为它限制了代码的可移植性。
  • 例子:DoubleConstHorseSpeedRaceTrackFurlongsPerFortnight, DbConHorseSpFpfRacet
  • 冰淇淋相当于:吉米,当然有些6岁的孩子喜欢,但不会太久。

存储类:

  • 解释:与上面的数据类型一样,包含关于存储类的信息会限制数据的长期可移植性。
  • 例子:LocalDoubleConstHorseSpeedRaceTrackFurlongsPerFortnight, LocDbConHorseSpFpfRacet
  • 冰淇淋相当于:撒上一个月的花生丁。

在这个阶段,你无疑是带着上面提到的认识老神的问题来看待这些名字的。一个在公司工作了15年的工程师应该知道所有的缩写,并能理解其中的意思,但对我们其他人来说,这只是一种含糊不清的吟唱。好消息是,有关于如何避免这个问题的指导方针。

混合起来

在创建命名约定时,有两个主要准则。

让它具有可读性:人类的可读性是通过3件事实现的:

  1. 分隔——使用驼峰式或下划线。
  2. 一致性-在变量的相同部分中始终具有相同类型的信息。(例如,不要使用HorseSpeedMPH和MPH_DonkeySpeed。)
  3. 限制信息——把尽可能多的信息放入一个变量是很诱人的,通常在它变得难以承受之前,只需要2到3位的信息。

简洁是灵魂命名约定:命名约定的缩写,特别是单位的缩写,是可用性的关键:

  1. 在可能的情况下使用标准缩写(如MPH是英里每小时)
  2. 尝试使用2到4个字符作为缩写
  3. 如果不能,可以考虑使用下划线来描述

考虑以下电池电流变量的例子,其中“I”是current的常用缩写:

  • BatteryI由于长度较短,很容易漏掉结尾的“I”字
  • Battery_I:我现在由于“_”字符而突出
  • BatterCur:你也可以用缩写“Cur”表示当前。

现在轮到你了

我希望你的星星是在对齐的,你喜欢你的命名惯例!

让我们知道你对这些指导方针的看法,如果你有其他的指导方针没有涵盖在这篇文章通过留下这里的评论

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。