编写代码时,最容易被忽视但又至关重要的方面之一就是命名。
我们为代码中的变量、函数、类和其他实体选择的名称可以显着影响可读性、可维护性和整体质量。
《清洁代码》的第 2 章深入研究了选择有意义的名称的艺术和科学,提供了一组指南,可以帮助开发人员编写既具有表现力又易于理解的代码。
在这篇博文中,我们将探讨本章的要点,并用 JavaScript 中的示例来说明每个概念。
您选择的名称应清楚地传达变量、函数或类背后的意图。读者应该能够理解代码的作用,而无需额外的上下文。
// Bad let d; // Good let daysUntilDeadline;
在第一个示例中,d 很模糊并且没有提供上下文。改进版本 daysUntilDeadline 清楚地表明了变量代表的内容。
名称不应具有误导性。避免使用可能暗示与代码实际含义不同的名称。
// Bad let accountList = new Map(); // Good let accountsMap = new Map();
在这里,accountList 可能会产生误导,因为它暗示一个列表(这是一个有序集合),而实际的数据结构是一个 Map。使用accountsMap更准确。
如果您需要区分相似的变量、函数或类,请以一种使区别清晰且有意义的方式进行操作。
// Bad getUserInfo(); getUserData(); // Good getUserProfile(); getUserSettings();
在第一个示例中,getUserInfo 和 getUserData 太相似,并且没有清楚地表达它们的差异。第二个示例通过根据返回的内容命名函数来阐明区别。
名称应该易于阅读和发音。这使得与其他人讨论代码变得更加直接。
// Bad let genymdhms; // Good let generationTimestamp;
genymdhms 是一个难以发音的名称,很难记住或讨论。然而, GenerationTimestamp 很清楚,也很容易说。
在较大的代码库中,使用易于搜索的名称很重要。避免使用单字母名称或过度缩写的名称。
// Bad let e = document.getElementById('email'); // Good let emailInputElement = document.getElementById('email');
e 不容易搜索,并且它没有传达它所代表的含义。 emailInputElement 更具描述性并且更容易在代码库中找到。
避免在名称中包含类型、前缀或其他编码。让名称本身具有足够的描述性。
// Bad let phoneString; // Good let phoneNumber;
在这种情况下,phoneString 包含不必要的类型编码(String)。电话号码更简单、更直接。
类代表对象或概念,因此它们的名称应该是名词。另一方面,函数代表动作,因此它们的名称应该是动词。
// Class names (Nouns) class UserAccount {} class ShoppingCart {} // Function names (Verbs) function calculateTotal() {} function sendEmail() {}
这种区别有助于理解代码中每个元素的作用。
不要强迫读者将名字翻译成更有意义的东西。该名称应该是不言自明的。
// Bad let n = 5; // Number of users // Good let userCount = 5;
n 需要读者记住或推断出它代表用户数量,而 userCount 则一目了然。
选择有意义的名称不仅仅是风格问题,它是编写干净、可维护代码的基本实践。
通过遵循《简洁代码》第 2 章中概述的准则,您可以提高 JavaScript 代码的可读性,并使其他人(和您自己)更容易理解和维护。
请记住,目标是编写能够传达其目的和逻辑的代码,从而减少读者的认知负担。
下次命名变量、函数或类时,请考虑有意义的命名原则以及它们如何有助于生成更清晰、更有效的代码。
快乐编码!
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3