协同开发是工作中常见的事情,所以难免会阅读别人写的代码。
而在阅读过程中,是不是会遇到难以理解的命名方式?
而这恰恰说明开发者没有遵守命名原则,代码没有可读性、清晰性和可维护性。
一起来学习一下这10条命名原则吧。
规则一:描述清晰不模棱两可
当你在阅读一段代码时,看见一个变量命名为 x 。此时你会认为它是什么?
日期?年龄?温度?都有可能!!没有传达任何关于其用途的有关信息。
而最好的命名方式是见名知意,使用意义来命名。
// 1.不好的例子
let x = 30;
// 2.好的命名方式
let userAge = 30;
let weather = 27;
规则二:使用容易发音的名字
在命名的时候,很多人由于词汇量缺乏,而命名出不可读的名称。
也有的人为了方便省略一些单词字符,这样导致别人无法通过正常发音来进行沟通交流以及代码审视。
// 1.不好的例子
let dtRng = "2024-11-02";
// 2.好的命名方式
let dateRange = "2024-11-02";
请选择一些清晰易读的命名更加方便交流!
规则三:统一命名规范
在一些代码中,会存在这样的现象:变量命名一会使用大驼峰,一会使用小驼峰,一会使用下划线或者中划线。
// 1.不好的例子
let userAge = 30;
let user_address = 'Beijing';
// 2.好的命名方式
let userAge = 30;
let userAddress = 'Beijing';
在代码中请使用统一的命名规范!
一些较好的实践:
常量:全大写(下划线分割)
变量或函数命名:小驼峰
组件命名:大驼峰
class类命名:全小写,中划线或者下划线分割
规则四:避免魔鬼数字
魔鬼数字和字符串属于硬编码,在代码里变得很神秘而且变幻莫测,很不容易维护。
// 1.不好的例子
let paidPrice = standardPrice * 0.7;
// 2.好的命名方式
const DISCOUNT_RATE = 0.7;
let paidPrice = standardPrice * DISCOUNT_RATE;
请减少魔鬼数字等类似的硬编码!
规则五:变量使用名词,函数使用动词
这个规则虽然很常见但是经常被忽视。
变量和类代表事物,应该使用名词命名。而函数属于动作,应该使用动词命名。
// 1.不好的例子
let calculate = 5 * 5;
function ageUser() { // ... }
// 2.好的命名方式
let area = 5 * 5;
function calculateUserAge() { // ... }
命名前思考一下属性,使用名词还是动词!
规则六:除循环变量外不使用单字符变量
如果在代码中经常性看见 i, j 或者其他单字符变量相信你也很头大。
// 1.不好的例子
let h = 180;
let w = 75;
// 2.好的命名方式
let height = 180;
let weight = 75;
除了循环变量之外,禁止使用单字符!
规则七:避免使用缩写
为了第一条原则,不要在一些比较重要的信息上采取缩写。
// 1.不好的例子
const userInfo = {
nm: 'zhangsan',
addr: 'beijing'
}
// 2.好的命名方式
const userInfo = {
name: 'zhangsan',
address: 'beijing'
}
另外:如果命名过于长,可适当采取缩写。但是请采用业界约定俗成的缩写。
// 1.不好的例子
function calculateUserCots() {...}
// 2.好的命名方式
function calculateUserCnts() {...}
规则八:使用前缀表示范围和意图
为了更好地见名知意,可以在约定前缀表示范围和意图。
比如使用 is 的前缀,一般命名为布尔值,表示一种状态。
// 1.不好的例子
let open = true;
let age = 25;
// 2.好的命名方式
let isOpen = true;
let userAge = 25;
合理使用前缀来表达范围和意图!
规则九:布尔命名尽量采用肯定含义
根据上一规则,使用前缀时尽量肯定含义的命名方式。
// 1.不好的例子
let isNotOpen = true;
let notCorrect = true;
// 2.好的命名方式
let isClosed = true;
let isFalse = true;
反应肯定态的布尔值命名会更加清晰!
规则十:适当重构命名
项目中肯定会遗留一些不好的命名规范,属于历史债务。
但在开发过程中,可以适当地进行命名的重构。
// Original naming
let temp = calculateDiscount(price);
// After refactoring
let discountedPrice = calculateDiscount(price);
在重构前后切记使用测试来确保代码功能上未发生任何变化!