”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 理解干净的代码:有意义的名字 ⚡

理解干净的代码:有意义的名字 ⚡

发布于2024-11-07
浏览:542

Understanding Clean Code: Meaningful Names ⚡

编写代码时,最容易被忽视但又至关重要的方面之一就是命名。

我们为代码中的变量、函数、类和其他实体选择的名称可以显着影响可读性、可维护性和整体质量。

《清洁代码》的第 2 章深入研究了选择有意义的名称的艺术和科学,提供了一组指南,可以帮助开发人员编写既具有表现力又易于理解的代码。

在这篇博文中,我们将探讨本章的要点,并用 JavaScript 中的示例来说明每个概念。


?1.使用透露意图的名称

您选择的名称应清楚地传达变量、函数或类背后的意图。读者应该能够理解代码的作用,而无需额外的上下文。

// Bad
let d; 

// Good
let daysUntilDeadline;

在第一个示例中,d 含糊不清并且没有提供任何上下文。改进版本 daysUntilDeadline 清楚地表明了变量代表的内容。


?2.避免虚假信息

名称不应具有误导性。避免使用可能暗示与代码实际含义不同的名称。

// Bad
let accountList = new Map();

// Good
let accountsMap = new Map();

在这里,accountList 可能会产生误导,因为它暗示一个列表(这是一个有序集合),而实际的数据结构是一个 Map。使用accountsMap更准确。


?3.做出有意义的区分

如果您需要区分相似的变量、函数或类,请以一种使区别清晰且有意义的方式进行操作。

// Bad
getUserInfo();
getUserData();

// Good
getUserProfile();
getUserSettings();

在第一个示例中,getUserInfo 和 getUserData 太相似,并且没有清楚地表达它们的差异。第二个示例通过根据返回的内容命名函数来阐明区别。


?4.使用容易发音的名字

名称应该易于阅读和发音。这使得与其他人讨论代码变得更加直接。

// Bad
let genymdhms;

// Good
let generationTimestamp;

genymdhms 是一个难以发音的名称,很难记住或讨论。然而, GenerationTimestamp 很清楚,也很容易说。


?5.使用可搜索的名称

在较大的代码库中,使用易于搜索的名称很重要。避免使用单字母名称或过度缩写的名称。

// Bad
let e = document.getElementById('email');

// Good
let emailInputElement = document.getElementById('email');

e 不容易搜索,并且它没有传达它所代表的含义。 emailInputElement 更具描述性并且更容易在代码库中找到。


?6.避免编码

避免在名称中包含类型、前缀或其他编码。让名称本身具有足够的描述性。

// Bad
let phoneString;

// Good
let phoneNumber;

在这种情况下,phoneString 包含不必要的类型编码(String)。电话号码更简单、更直接。


?7.类名应该是名词,函数名应该是动词

类代表对象或概念,因此它们的名称应该是名词。另一方面,函数代表动作,因此它们的名称应该是动词。

// Class names (Nouns)
class UserAccount {}
class ShoppingCart {}

// Function names (Verbs)
function calculateTotal() {}
function sendEmail() {}

这种区别有助于理解代码中每个元素的作用。


?8.避免心理映射

不要强迫读者将名字翻译成更有意义的东西。该名称应该是不言自明的。

// Bad
let n = 5; // Number of users

// Good
let userCount = 5;

n 需要读者记住或推断出它代表用户数量,而 userCount 则一目了然。


结论⚡

选择有意义的名称不仅仅是风格问题,它是编写干净、可维护代码的基本实践。

通过遵循《简洁代码》第 2 章中概述的准则,您可以提高 JavaScript 代码的可读性,并使其他人(和您自己)更容易理解和维护。

请记住,目标是编写能够传达其目的和逻辑的代码,从而减少读者的认知负担。

下次命名变量、函数或类时,请考虑有意义的命名原则以及它们如何有助于生成更清晰、更有效的代码。

快乐编码!

版本声明 本文转载于:https://dev.to/alisamir/understanding-clean-code-meaningful-names-3d5k?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 用户本地时间格式及时区偏移显示指南
    用户本地时间格式及时区偏移显示指南
    在用户的语言环境格式中显示日期/时间,并使用时间偏移在向最终用户展示日期和时间时,以其localzone and格式显示它们至关重要。这确保了不同地理位置的清晰度和无缝用户体验。以下是使用JavaScript实现此目的的方法。方法:推荐方法是处理客户端的Javascript中的日期/时间格式化和时...
    编程 发布于2025-05-24
  • 将图片浮动到底部右侧并环绕文字的技巧
    将图片浮动到底部右侧并环绕文字的技巧
    在Web设计中围绕在Web设计中,有时可以将图像浮动到页面右下角,从而使文本围绕它缠绕。这可以在有效地展示图像的同时创建一个吸引人的视觉效果。 css位置在右下角,使用css float and clear properties: img { 浮点:对; ...
    编程 发布于2025-05-24
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的Python功能Eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。 This article delves into the differences betwee...
    编程 发布于2025-05-24
  • 为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    网格超过身体,用100%grid-template-columns 为什么在grid-template-colms中具有100%的显示器,当位置设置为设置的位置时,grid-template-colly修复了?问题: 考虑以下CSS和html: class =“ snippet-code”> g...
    编程 发布于2025-05-24
  • 如何克服PHP的功能重新定义限制?
    如何克服PHP的功能重新定义限制?
    克服PHP的函数重新定义限制在PHP中,多次定义一个相同名称的函数是一个no-no。尝试这样做,如提供的代码段所示,将导致可怕的“不能重新列出”错误。 但是,PHP工具腰带中有一个隐藏的宝石:runkit扩展。它使您能够灵活地重新定义函数。 runkit_function_renction_re...
    编程 发布于2025-05-24
  • 在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    mysql-python安装错误:“ mysql_config找不到”“ 由于缺少MySQL开发库而出现此错误。解决此问题,建议在Ubuntu上使用该分发的存储库。使用以下命令安装Python-MysqldB: sudo apt-get安装python-mysqldb sudo pip in...
    编程 发布于2025-05-24
  • 在Pandas中如何将年份和季度列合并为一个周期列?
    在Pandas中如何将年份和季度列合并为一个周期列?
    pandas data frame thing commans date lay neal and pree pree'和pree pree pree”,季度 2000 q2 这个目标是通过组合“年度”和“季度”列来创建一个新列,以获取以下结果: [python中的concate...
    编程 发布于2025-05-24
  • 使用jQuery如何有效修改":after"伪元素的CSS属性?
    使用jQuery如何有效修改":after"伪元素的CSS属性?
    在jquery中了解伪元素的限制:访问“ selector 尝试修改“:”选择器的CSS属性时,您可能会遇到困难。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    编程 发布于2025-05-24
  • 人脸检测失败原因及解决方案:Error -215
    人脸检测失败原因及解决方案:Error -215
    错误处理:解决“ error:( - 215)!empty()in Function openCv in Function MultSiscale中的“检测”中的错误:在功能检测中。”当Face Cascade分类器(即面部检测至关重要的组件)未正确加载时,通常会出现此错误。要解决此问题,必须...
    编程 发布于2025-05-24
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-05-24
  • 在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在C中的显式删除 在C中的动态内存分配时,开发人员通常会想知道是否需要手动调用“ delete”操作员在heap-exprogal exit exit上。本文深入研究了这个主题。 在C主函数中,使用了动态分配变量(HEAP内存)的指针。当应用程序退出时,此内存是否会自动发布?通常,是。但是,即使在这...
    编程 发布于2025-05-24
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python import codecs import codecs import codecs 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有...
    编程 发布于2025-05-24
  • Android如何向PHP服务器发送POST数据?
    Android如何向PHP服务器发送POST数据?
    在android apache httpclient(已弃用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    编程 发布于2025-05-24
  • PHP与C++函数重载处理的区别
    PHP与C++函数重载处理的区别
    作为经验丰富的C开发人员脱离谜题,您可能会遇到功能超载的概念。这个概念虽然在C中普遍,但在PHP中构成了独特的挑战。让我们深入研究PHP功能过载的复杂性,并探索其提供的可能性。在PHP中理解php的方法在PHP中,函数超载的概念(如C等语言)不存在。函数签名仅由其名称定义,而与他们的参数列表无关。...
    编程 发布于2025-05-24
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-05-24

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3