编码规范——10个命名原则

184 阅读4分钟

协同开发是工作中常见的事情,所以难免会阅读别人写的代码。

而在阅读过程中,是不是会遇到难以理解的命名方式?

而这恰恰说明开发者没有遵守命名原则,代码没有可读性、清晰性和可维护性。

一起来学习一下这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);

在重构前后切记使用测试来确保代码功能上未发生任何变化!