头图

笔者之前的文章,提到了 Clean ABAP 编程规范。

https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md

Clean ABAP 规范里提到了一个准则:给类或者变量命令时,避免使用 data,info,object 这些 Noise Words(干扰词).
1.png

命名规范里举了一些例子:

  • 使用 account 而不是 account_data
  • 使用 alert 而不是 alert_object
  • 使用 user_preferences 而不是 user_info
  • 使用 response_time_in_seconds 而不是 response_time_variable

Noise words 通常是那些在变量名中不增加任何有价值信息的词语。它们常见于开发者在试图让变量名听起来更"正式"或者"复杂"时添加的额外词汇。

然而,这些词语除了增加了代码的冗长性之外,并没有实际帮助理解变量的用途或意义。

常见的 noise words 包括 data, info, flag, temp, object 等。

这些词语之所以被称为 noise words,是因为它们没有为变量名添加任何明确的语义。如果一个变量名中的这些词语被去掉,而变量名仍然能够传达其核心意义,那么这些词就是多余的。

真实世界的例子

在理解 noise words 这一概念时,通过一些具体的例子来分析其影响可以更加直观。

案例 1:datainfo


String userData;

String userInfo;

在这个例子中,userDatauserInfo 看起来似乎是有意义的变量名,但它们实际上是含糊不清的。这些变量名并没有明确地传达出它们具体包含的信息是什么。假设 userData 包含的是用户的详细信息,而 userInfo 包含的是用户的基本信息,那么更好的命名方式可以是:


String userDetails;

String userBasicInfo;

这里,userDetailsuserBasicInfo 更加明确地表达了它们各自的内容,从而减少了开发人员在阅读代码时的认知负担。

案例 2:temp


tempValue = calculateTemperature();

tempValue 是一个常见的 noise word,因为 temp 这个词本身可以有多种含义,比如温度、临时值等。通过上下文可能可以理解这个变量是用于存储温度,但更好的命名方式是直接使用 temperature 作为变量名:


temperature = calculateTemperature();

这个例子中,去掉了 temp 这个词,使得变量名更加明确直接。

案例 3:object


CustomerObject customerObject = new CustomerObject();

在这个例子中,CustomerObject 这个变量名和类名都包含了 object 这个 noise word。实际上,object 并没有为变量名增加任何新的信息。更好的做法是简化变量名为:


Customer customer = new Customer();

这样,变量名更加简洁易懂,并且 Customer 这个词本身已经足够清晰地表明了其类型和用途。

规避 Noise Words 的实践

为了避免在代码中引入 noise words,开发人员可以采用以下几种策略:

1. 简洁明了:

变量名应当简洁明了,直接表达变量的用途。应尽量使用描述性强且不含糊的词汇。例如,与其使用 data,不如直接使用 details, count, list 等更具描述性的词汇。

2. 审视上下文:

变量名应当考虑上下文。例如,如果在一个处理客户数据的函数中,customerDetails 这个变量名可能是冗余的,因为函数本身的上下文已经明确了这些数据是关于客户的。在这种情况下,可以简单地将变量名命名为 details

3. 避免重复信息:

如果变量名已经传达了足够的信息,就不需要再添加额外的词汇。例如,在一个用户类的实例化变量中,不需要再使用 userObject 这种命名方式,user 或者 customer 已经足够表达其含义。

4. 团队命名规范:

建立团队级别的命名规范,可以帮助开发团队避免 noise words 的使用。这种规范应当明确哪些词汇是不必要的,并提倡使用哪些词汇来替代。

5. 代码审查:

在代码审查过程中,可以专门关注变量命名问题,确保没有 noise words 被引入。通过这种方式,团队可以共同维护代码的整洁性和可读性。

结论

Noise words 在变量命名中虽然看似无关紧要,但实际上会对代码的可读性和可维护性产生深远的影响。通过剔除这些冗余词汇,开发人员可以编写出更加简洁、清晰和易于理解的代码。


注销
1k 声望1.6k 粉丝

invalid